Visual studio 使用解决方案文件夹时没有CMakePredefinedTargets

Visual studio 使用解决方案文件夹时没有CMakePredefinedTargets,visual-studio,cmake,Visual Studio,Cmake,在CMake中使用VS解决方案文件夹时,请使用: set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_target_properties(MyProject PROPERTIES FOLDER "MyProjects") 我还自动启用了 CMakePredefinedTargets文件夹: 有没有办法避免这种行为 重置预定义的\u目标\u文件夹可以重命名该文件夹,但不能将其删除。为安装等设置文件夹属性似乎也无效 谢谢。编辑:查看CMake代码后,

在CMake中使用VS解决方案文件夹时,请使用:

set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_target_properties(MyProject PROPERTIES FOLDER "MyProjects")
我还自动启用了
CMakePredefinedTargets
文件夹:

有没有办法避免这种行为

重置
预定义的\u目标\u文件夹
可以重命名该文件夹,但不能将其删除。为安装等设置
文件夹
属性似乎也无效


谢谢。

编辑:查看CMake代码后,我非常确定您可以将
预定义的\u目标\u文件夹
设置为
。我已经使用CMake 3.3.2和VS2015对其进行了测试

set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "")
预定义目标再次位于根级别

并且,如果全局属性if
上,则预定义的目标是硬连接的,以便始终在文件夹中分组。因此,设置的属性(例如,
INSTALL
)没有帮助

作为参考,请参见针对
ALL\u BUILD
目标明确停用此行为的位置:


我已经给出了您的陈述,即“重置
预定义的\u目标\u文件夹
无助于”测试。对我来说,重置它有助于在根级别再次获得预定义的目标(请参见下面的答案)。你能试试吗?如果它不起作用,请您添加一些关于您的
CMakeLists.txt
或您的总体环境的详细信息。大家好,如果我想将两个(或更多)项目放在同一个文件夹中,我该如何做?例如:假设我有两个项目(project1和project2),我希望在Test文件夹下有它们(如上面的例子所示)?我似乎误解了文档。它确实像你说的那样起作用。谢谢。@maranov不客气。我想补充一点,我个人认为预定义目标的分组非常有用。我在自己的CMake项目中所做的是
设置属性(全局属性预定义的\u目标\u文件夹“\u CMakePredefinedTargets”)
。前导下划线确保预定义目标始终位于顶部。否则,文件夹会按字母顺序排序,有时很难在根级别的所有其他文件夹/项目中找到它。
#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