【问题标题】:What are ALL_BUILD and ZERO_CHECK and do I need them?ALL_BUILD 和 ZERO_CHECK 是什么,我需要它们吗?
【发布时间】:2015-01-26 08:25:53
【问题描述】:

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

cmake_minimum_required(VERSION 2.8)
project (HelloWorld)
add_executable (HelloWorld main.cpp)

但是,当我从 CMake 生成 VS2012 或 VS2010 项目时,我得到了这 2 个附加条目 - ALL_BUILD 和 ZERO_CHECK。 我不明白他们的目的,我需要他们吗?

【问题讨论】:

    标签: c++ visual-studio cmake


    【解决方案1】:

    来自https://cmake.org/pipermail/cmake/2008-November/025448.html

    阿明·贝雷斯 — 2008 年 11 月 22 日,下午 3:12:41

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

    ALL_BUILD 只是一个构建所有项目的目标 在主动解决方案中,我想可以将其与“make all”进行比较。

    【讨论】:

    • ALL_BUILD 不一定构建所有项目。见cmake.org/cmake/help/latest/prop_dir/EXCLUDE_FROM_ALL.html
    • ZERO_CHECK。伟大的命名;应该为任何试图命名新技术的人提供一个很好的例子。继续努力 CMake!
    • 小心那些他们可能认为这个名字很直观的表扬哈哈!
    • ALL_BUILD 不会自行构建。 :D 您可以将 is 作为代理,在解决方案中的所有其他目标中触发构建过程。这相当令人困惑。这同样适用于ZERO_CHECK。其中 - 如答案中所述 - 重新运行 CMake,因此它也不会构建任何东西。我不知道是谁决定引入这个公约,但我希望它在未来有所改变。对于刚接触 CMake 和集成到 Visual Studio 的人来说,这相当令人困惑。
    【解决方案2】:

    在 CMakeLists.txt 中添加以下行以禁止生成 ZERO_CHECK:

    set(CMAKE_SUPPRESS_REGENERATION true)
    

    【讨论】:

    • 酷我不知道。我在 CMakeCache.txt 中尝试了 CMAKE_SUPPRESS_REGENERATION:Bool=1 并且它也可以工作。谢谢
    • 需要注意的是,由于某种原因,这需要在顶级CMakeLists.txt中设置,它在子目录中不起作用(从CMake 3.10开始)
    • 是否有类似的方法来防止创建 ALL_BUILD?编辑:好的,没有:gitlab.kitware.com/cmake/cmake/issues/16979
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2011-05-10
    • 1970-01-01
    • 2018-04-13
    • 2017-02-24
    • 2011-08-19
    相关资源
    最近更新 更多