CMake:取决于构建类型的默认标志

Posted

技术标签:

【中文标题】CMake:取决于构建类型的默认标志【英文标题】:CMake: default flags depending on build type 【发布时间】:2014-10-22 08:38:13 【问题描述】:

我在一个项目中使用 CMake 2.8.12.2,我注意到根据构建类型,它会向编译器添加一些标志。对于 Release 构建类型,它添加了-O3-NDEBUG

问题是,由于这个项目将用于不同的平台,我不知道他们使用的是哪个 CMake 版本(当然高于 2.8),我想知道是否有一些默认标志对于每种构建类型,或者此功能是否取决于 CMake 的版本。

我知道我可以将我的标志添加到变量 CMAKE_CXX_FLAGS_*,但我想通过只添加一次标志而不覆盖已经完成的内容来保持编译“干净”。

【问题讨论】:

【参考方案1】:

这会将“-Wall”添加到发布标志

set(CMAKE_CXX_FLAGS_RELEASE "$CMAKE_CXX_FLAGS_RELEASE -Wall")

【讨论】:

是的,我知道。我在询问有关 cmake 根据构建类型添加到编译中的默认标志的更多信息。 找出默认值,然后自己覆盖它,并确保您永远不会有重复。如果你想要更多的控制,你可以使用 cmake 提供的 string() 函数,但我保证它看起来会很乱,你不会有任何帮助,因为没有人这样做。【参考方案2】:

-O3-NDEBUG 已经被 CMake 使用了很长一段时间;以至于您不必担心它们,因为实际上它们已经独立于 CMake 版本。

【讨论】:

以上是关于CMake:取决于构建类型的默认标志的主要内容,如果未能解决你的问题,请参考以下文章

在 CMake 项目中动态更改编译器标志

CMake 标志更改调试配置

在 CMake 中为多个配置混合构建标志

CMake构建类型和编译选项

CMake 的默认构建目标的名称是啥?

在 CMake 中默认构建自定义目标