我想了解有关 cmake 构建类型的一些说明。
具体来说,我不清楚设置构建类型是否也会修改构建标志,或者这是否只是内部用于构建配置的“标签”。例如,在发布版本的情况下:
set(CMAKE_BUILD_TYPE Release)
Run Code Online (Sandbox Code Playgroud)
该O3标志会自动指定给编译器吗?或者我需要明确指定它?
我发现的一个答案设置了构建类型并显式设置了编译器标志:
但我在网上发现的另一个帖子表明存在默认值:
https://cmake.org/pipermail/cmake/2016-May/063379.html
如果构建类型确实指定了一些编译器标志,我在哪里可以找到相关文档?我想知道每种构建类型设置的标志是什么。
编辑:
为了便于将来参考,如果您想查找编译器的特定标志(例如,在 gcc 或 g++ 的情况下为 gnu),那么您可以克隆 Kamil 引用的存储库,进入 module/compilers 文件夹并尝试类似的命令:
grep -r _INIT . | grep -i gnu
Run Code Online (Sandbox Code Playgroud)
事实上,正如 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")
Run Code Online (Sandbox Code Playgroud)
我不认为你会找到这方面的“文档”。
| 归档时间: |
|
| 查看次数: |
3933 次 |
| 最近记录: |