2016-05-25 29 views
1

私が使用するコンパイラのバージョンをロックしようとしています。これを行うには、CMAKE_CXX_COMPILER_VERSIONCMAKE_CXX_COMPILER_VERSIONを使用してビルドしたコンパイラのバージョンを確認したいと思います。 OSX CMakeのオンClangバージョンの混乱(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は信頼できますか?

+0

CMakeは 'CMAKE_CXX_COMPILER_VERSION'を報告していますか? –

+0

私はこれをCMakeLists.txtファイルでこれに強制しています: MESSAGE(コンパイラは$ {CMAKE_CXX_COMPILER_ID}バージョン$ {CMAKE_CXX_COMPILER_VERSION}です。$ {CMAKE_CXX_COMPILER})) – KevinD

+0

これは非常に奇妙です。バージョン7.3.0.7030031'で文字列を使用しています。おそらくCMakeのキャッシュを削除したいかもしれません... –

答えて

1

CMakeは、コンパイラのバージョンをCMakeFiles/3.5.0/CmakeCXXCompiler.cmake(バージョン3.5.0用)に設定しています。このファイルを削除して再ビルドするだけで正しいコンパイラのバージョンが報告されます(ある時点で異なるバージョンがインストールされていると仮定して)。