CMake提供了多种机制来获取编译器的标志:
在现代使用中,是否有一种方法比另一种方法更受欢迎?如果是这样的话?此外,该方法如何与MSVC等多种配置系统一起使用?
我想了解有关 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 标志。
cmake ×2