如何检查 cmake 使用的是什么编译器?

Hak*_*hin 8 c++ cmake

我很惊讶我找不到这个谷歌搜索。我只找到了这个,但我想知道如何找到 cmake 通常使用的编译器?我也发现了这个,但我假设 cmake 中有一些变量只包含编译器名称,对吗?

Flo*_*ian 11

您可以查看 CMake 的二进制输出目录中有哪些变量可用 CMakeFiles/[your CMake's version]/CMakeCXXCompiler.cmake

如果您只想打印它,您正在寻找CMAKE_CXX_COMPILER_IDCMAKE_CXX_COMPILER_VERSION。这些是跨平台可用的。

以下是 CMake 从我的项目中检测和生成的两个示例:

set(CMAKE_CXX_COMPILER_ID "GNU")
set(CMAKE_CXX_COMPILER_VERSION "4.6.3")
Run Code Online (Sandbox Code Playgroud)

或者

set(CMAKE_CXX_COMPILER_ID "MSVC")
set(CMAKE_CXX_COMPILER_VERSION "19.0.24215.1")
Run Code Online (Sandbox Code Playgroud)

其他类型的变量用于检查平台/工具链,如CMAKE_COMPILER_IS_GNUCXX.

  • 打印编译器版本:`message("编译器版本:${CMAKE_CXX_COMPILER_VERSION}")` (4认同)

Ser*_*lla 6

我不太确定我是否准确理解了您的问题,但如果您只想知道正在使用哪个编译器,请使用以下选项启用详细构建CMAKE_VERBOSE_MAKEFILE

cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON
Run Code Online (Sandbox Code Playgroud)

然后make像往常一样运行。这将显示哪些命令用于构建代码。