使用解决方案文件夹时没有CMakePredefinedTargets [英] No CMakePredefinedTargets when using solution folders

查看:392
本文介绍了使用解决方案文件夹时没有CMakePredefinedTargets的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆