相关疑难解决方法(0)

在CMake中设置通用编译标志的现代方法是什么?

CMake提供了多种机制来获取编译器的标志:

在现代使用中,是否有一种方法比另一种方法更受欢迎?如果是这样的话?此外,该方法如何与MSVC等多种配置系统一起使用?

cmake

76
推荐指数
1
解决办法
3万
查看次数

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

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

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

set(CMAKE_BUILD_TYPE Release)
Run Code Online (Sandbox Code Playgroud)

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

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

默认在 CMake 中优化

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

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

3
推荐指数
1
解决办法
3933
查看次数

标签 统计

cmake ×2