【发布时间】:2016-05-25 11:50:54
【问题描述】:
我正在尝试锁定我使用的编译器版本(出于多种原因,我不会详细介绍)。为此,我想使用 CMAKE_CXX_COMPILER_VERSION 和 CMAKE_CXX_COMPILER_VERSION 检查编译器的版本。
关于 OSX CMake 报告:
CMAKE_CXX_COMPILER_VERSION 7.0.2.7000181
CMAKE_CXX_COMPILER_ID Clang
CMAKE_CXX_COMPILER /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
但是,通过终端报告的版本是:
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
这是真的:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ --version
clang --version
gcc --version
g++ --version
为什么 CMake 和命令行报告的版本号存在差异(对于相同的可执行文件)?
并且出于限制特定编译器版本的目的,CMAKE_CXX_COMPILER_VERSION 可靠吗?
【问题讨论】:
-
CMake 在哪里报告
CMAKE_CXX_COMPILER_VERSION? -
我在 CMakeLists.txt 文件中强制使用它:MESSAGE("Compiler is ${CMAKE_CXX_COMPILER_ID} version ${CMAKE_CXX_COMPILER_VERSION} (at ${CMAKE_CXX_COMPILER})")
-
这很奇怪,因为我现在使用你的字符串得到
Clang version 7.3.0.7030031。您可能想删除 CMake 缓存...