使用clang ++时,如何-std=c++0x在编译时使CMake使用该标志,但在链接时不能?
关于使用clang作为编译器还有其他一些帖子,但我没有找到关于设置c ++标准的任何提示.
这是我尝试过的:
的CMakeLists.txt:
project(test)
add_executable(main main.cxx)
Run Code Online (Sandbox Code Playgroud)
ClangOverride.txt:
SET (CMAKE_C_FLAGS_INIT "-Wall -std=c99")
SET (CMAKE_C_FLAGS_DEBUG_INIT "-g")
SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG")
SET (CMAKE_C_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")
SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g")
SET (CMAKE_CXX_FLAGS_INIT "-Wall -std=c++0x -stdlib=libc++")
SET (CMAKE_CXX_FLAGS_DEBUG_INIT "-g")
SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g")
SET (CMAKE_EXE_LINKER_FLAGS_INIT "")
Run Code Online (Sandbox Code Playgroud)
main.cxx:
int main(){ return 0; }
Run Code Online (Sandbox Code Playgroud)
用于调用的命令 cmake
CC=clang CXX=clang++ cmake .. -DCMAKE_USER_MAKE_RULES_OVERRIDE=ClangOverride.txt -DCMAKE_BUILD_TYPE=Release
Run Code Online (Sandbox Code Playgroud)
建设项目:
VERBOSE=1 make
Run Code Online (Sandbox Code Playgroud)
这将调用以下两个命令:
/usr/bin/clang++ -Wall -std=c++0x -stdlib=libc++ -O3 -DNDEBUG -o CMakeFiles/main.dir/main.cxx.o …Run Code Online (Sandbox Code Playgroud)