什么是ALL_BUILD和ZERO_CHECK,我需要它们吗?

sas*_*alm 64 c++ cmake visual-studio

我创建了一个简单的CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project (HelloWorld)
add_executable (HelloWorld main.cpp)
Run Code Online (Sandbox Code Playgroud)

但是,当我从CMake生成VS2012或VS2010项目时,我得到了另外两个条目 - ALL_BUILD和ZERO_CHECK.我不明白他们的目的,我需要他们吗?

在此输入图像描述

sas*_*alm 61

经过一番搜索后,我在https://cmake.org/pipermail/cmake/2008-November/025448.html找到了答案:

Armin Berres - 2008年11月22日下午3:12:41

ZERO_CHECK将重新运行cmake.您可以/应该在更改CMake文件上的内容后执行此操作.

ALL_BUILD只是一个在活动解决方案中构建所有项目和所有项目的目标,我想可以将它与"make all"进行比较.

  • 零检查。伟大的命名;对于任何试图命名新技术的人来说,它应该是一个出色的例子。保持CMake的好工作! (6认同)
  • 小心那些赞扬,他们可能实际上认为这个名字很直观,哈哈! (4认同)
  • ALL_BUILD不一定构建所有项目。参见https://cmake.org/cmake/help/latest/prop_dir/EXCLUDE_FROM_ALL.html (2认同)
  • 然而,“ALL_BUILD”不会自行构建。:D 您可以将 is 作为触发解决方案中所有其他目标中的构建过程的代理。这是相当令人困惑的。这同样适用于“ZERO_CHECK”。正如答案中所述,它会重新运行 CMake,因此它也不会构建任何内容。我不知道是谁决定引入这个约定,但我希望它将来会改变。对于刚接触 CMake 和集成到 Visual Studio 的人来说,这相当令人困惑。 (2认同)

小智 24

将此行添加到CMakeLists.txt以抑制生成ZERO_CHECK.

set(CMAKE_SUPPRESS_REGENERATION true)
Run Code Online (Sandbox Code Playgroud)

  • 酷我不知道.我在CMakeCache.txt中尝试了CMAKE_SUPPRESS_REGENERATION:Bool = 1,它也可以.谢谢 (2认同)