【问题标题】:Clang version confusion (OSX and Cmake)Clang 版本混淆(OSX 和 Cmake)
【发布时间】:2016-05-25 11:50:54
【问题描述】:

我正在尝试锁定我使用的编译器版本(出于多种原因,我不会详细介绍)。为此,我想使用 CMAKE_CXX_COMPILER_VERSIONCMAKE_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 缓存...

标签: c++ macos cmake clang


【解决方案1】:

原来 CMake 将编译器版本设置为 CMakeFiles/3.5.0/CmakeCXXCompiler.cmake(对于 3.5.0 版)。只有删除此文件并重新构建才能报告正确的编译器版本(假设您在某个时候安装了不同的编译器)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2014-12-12
    相关资源
    最近更新 更多