Cmake:如何选择C ++标头

时间:2016-10-15 04:41:38

标签: c++ linux gcc cmake clang

我想在使用gccclang之间进行选择,还想在libstdc++libc++之间进行选择。 This site解释了如何混合编译器和标准库。我可以通过调用cmake CC=gcc CCX=g++ cmake...CC=clang...来选择编译器。

问题在于libstdc++我需要使用标记-I/usr/include/c++/5libc++ -I/usr/include/c++/v1

出于可移植性的原因,我不想在CMakeListst.txt中既不包含上述路径,也不希望在命令行参数中包含上述路径。有没有办法做到这一点让cmake自动检测它?

1 个答案:

答案 0 :(得分:1)

也许您已经知道这一点,find_package boost或openssl也会看到某些环境变量,例如BOOST_ROOTOPENSSL_ROOT_DIR。所以你也需要这样的提示变量。

cpprestsdk cmake script

我认为你的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()