我有cmake版本3.9和Mac OS High Sierra 我尝试使用clang 5.0.1(在我的系统中默认)和c ++ 17标准编译我的cpp代码。
CMakeLists.txt:
cmake_minimum_required(VERSION 3.9)
project(test)
set(CMAKE_CXX_STANDARD 17)
add_executable(main main.cpp)
如果我使用上面的CMakeLists尝试cmake .
,那么我会看到:
- CXX编译器标识为AppleClang 9.1.0.9020039
cmake如何检测编译器?如果我运行clang --version
,我会得到以下内容:
clang version 5.0.1 (tags/RELEASE_501/final)
Target: x86_64-apple-darwin17.6.0
Thread model: posix
InstalledDir:/usr/local/bin
好的,我可以在我的CMakeLists.txt中添加set(CMAKE_CXX_COMPILER "/usr/local/bin/clang")
。再次cmake .
:
- CXX编译器标识为AppleClang 9.1.0.9020039
WTF?
好的,让我们尝试删除set(CMAKE_CXX_COMPILER..
并运行cmake -DCMAKE_CXX_COMPILER=/usr/local/bin/clang .
:
- CXX编译器标识是Clang 5.0.1
它正在运作。但是为什么cmake会忽略CMakeLists中的set
?