使用解决方案文件夹时没有CMakePredefinedTargets [英] No CMakePredefinedTargets when using solution folders
问题描述
在CMake中使用VS解决方案文件夹时,使用以下命令:
When using VS solution folders in CMake using:
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_target_properties(MyProject PROPERTIES FOLDER "MyProjects")
我也自动启用了
CMakePredefinedTargets
文件夹:
I'm also automatically enabling a
CMakePredefinedTargets
folder:
是否有避免这种行为的方法?
Is there a way to avoid this behaviour?
重置 PREDEFINED_TARGETS_FOLDER
可以重命名文件夹但不能将其删除。将 FOLDER
属性设置为INSTALL等似乎也无效。
Resetting PREDEFINED_TARGETS_FOLDER
can rename the folder but not remove it. Setting the FOLDER
property for INSTALL, etc. does not seem to be valid either.
谢谢。
推荐答案
编辑:查看CMake代码后,我确定可以设置 PREDEFINED_TARGETS_FOLDER
到
。我已经使用CMake 3.3.2和VS2015对它进行了测试,
Edit: After looking into the CMake code I was pretty sure you could set PREDEFINED_TARGETS_FOLDER
to ""
. I've tested it and with CMake 3.3.2 and VS2015 using
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "")
预定义的目标再次位于根级别。
the predefined targets are at root level again.
而且,如果全局 USE_FOLDERS
属性,如果 ON
,则预定义的目标将被硬连线以始终分组在 PREDEFINED_TARGETS_FOLDER
文件夹。因此,设置 Folder
的属性,例如安装
将无济于事。
And, yes if the global USE_FOLDERS
property if ON
then the predefined targets are hard-wired to always be grouped in the PREDEFINED_TARGETS_FOLDER
folder. So setting the FOLDER
property of e.g. INSTALL
won't help.
作为参考,请参见 cmGlobalVisualStudioGenerator.cxx
对于此行为已被明显停用 ALL_BUILD
目标:
As a reference see cmGlobalVisualStudioGenerator.cxx
where this behavior was explicitly deactivated for the ALL_BUILD
target:
#if 0
// Can't activate this code because we want ALL_BUILD
// selected as the default "startup project" when first
// opened in Visual Studio... And if it's nested in a
// folder, then that doesn't happen.
//
// Organize in the "predefined targets" folder:
//
if (this->UseFolderProperty())
{
allBuild->SetProperty("FOLDER", this->GetPredefinedTargetsFolder());
}
#endif
这篇关于使用解决方案文件夹时没有CMakePredefinedTargets的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!