我想在使用gcc
和clang
之间进行选择,还想在libstdc++
和libc++
之间进行选择。 This site解释了如何混合编译器和标准库。我可以通过调用cmake
CC=gcc CCX=g++ cmake...
或CC=clang...
来选择编译器。
问题在于libstdc++
我需要使用标记-I/usr/include/c++/5
和libc++
-I/usr/include/c++/v1
。
出于可移植性的原因,我不想在CMakeListst.txt
中既不包含上述路径,也不希望在命令行参数中包含上述路径。有没有办法做到这一点让cmake
自动检测它?
答案 0 :(得分:1)
也许您已经知道这一点,find_package
boost或openssl也会看到某些环境变量,例如BOOST_ROOT
和OPENSSL_ROOT_DIR
。所以你也需要这样的提示变量。
我认为你的CMakeLists.txt
是
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
message("-- Setting clang option")
include_directories(${Your_path})
...
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
message("-- Setting gcc options")
include_directories(${Your_path})
...
else()
message("-- Unknown compiler, success is doubtful.")
message("CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}")
endif()