我想在 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
自动检测它?
最佳答案
也许您已经知道这一点,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()
关于c++ - Cmake:如何选择 C++ header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40055022/