是否可以不在 cmake 中生成 ALL_BUILD 项目?

Ste*_*nko 4 cmake cmake-gui

我不需要 ALL_BUILD 子项目,我可以避免生成它吗?谢谢。

Flo*_*ian 6

CMake 问题 #16979:“正在生成 ALL_BUILD 目标”

ALL_BUILD目标相当于“所有”目标的CMake的概念,相当于用makefile文件生成,使所有。这与“构建解决方案”行为不同,因为 VS IDE 处理 vcxproj 间依赖项的方式不同。

没有办法压制ALL_BUILD目标。对于像cmake --build. 默认情况下能够构建“所有”目标。

所以你无法避免它——就像@arrowd 的回答一样——但是 CMake 中有一些东西会影响它的使用/外观(在 Visual Studio 等 IDE 生成器上):

  1. 当您激活全局USE_FOLDERS属性时

     set_property(GLOBAL PROPERTY USE_FOLDERS ON)
    
    Run Code Online (Sandbox Code Playgroud)

    通用指标ALL_BUILDZERO_CHECKINSTALLPACKAGERUN_TESTS将被归为CMakePredefinedTargets文件夹(或任何名称在全球给出PREDEFINED_TARGETS_FOLDER属性)。

    在此处输入图片说明

  2. 全局变量CMAKE_SKIP_INSTALL_ALL_DEPENDENCYCMAKE_SKIP_PACKAGE_ALL_DEPENDENCY不禁止,否则自动生成的依赖INSTALLPACKAGEALL_BUILD目标。

  3. 全局VS_STARTUP_PROJECT属性可用于将默认启动项目名称更改为ALL_BUILD“第一个项目不在子文件夹中”目标以外的名称。

参考