gpt4 book ai didi

Cmake 构建类型(RELEASE、DEBUG 等)编译器标志

转载 作者:行者123 更新时间:2023-12-03 08:56:04 25 4
gpt4 key购买 nike

我想了解有关 cmake 构建类型的一些说明。

具体来说,我不清楚设置构建类型是否也会修改构建标志,或者这是否只是内部用于构建配置的“标签”。例如,在发布版本的情况下:

set(CMAKE_BUILD_TYPE Release)

O3 标志会自动指定给编译器吗?或者我需要明确指定它?

我发现的一个答案设置了构建类型并显式设置了编译器标志:

Optimize in CMake by default

但我在网上发现的另一个线程表明存在默认值:

https://cmake.org/pipermail/cmake/2016-May/063379.html

如果构建类型确实指定了一些编译器标志,我在哪里可以找到相关文档?我想知道每种构建类型设置的标志是什么。

编辑:

为了将来的引用,如果您想查找编译器的特定标志(例如,gcc 或 g++ 中的 gnu),那么您可以克隆 Kamil 引用的存储库,进入 module/compilers 文件夹并尝试像这样的命令:

grep -r _INIT . | grep -i gnu

事实上,正如 Kamil 指出的那样,这些标志也将与 Clang 使用的标志相同,因为 Clang cmake 文件包含 GNU 标志。

最佳答案

该标志取决于编译器。 -O3 标志是 gcc 可以理解的,但其他编译器可能无法理解。您可以检查 cmake 安装的 Modules/Compilers/* 内的文件,以查看根据配置添加哪些标志。

例如 GNU.cmake我们可以读到:

  string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG")
string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG")

我不认为你会找到这方面的“文档”。

关于Cmake 构建类型(RELEASE、DEBUG 等)编译器标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55275743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com