C++ Cmake:如何选择C++;标题

C++ Cmake:如何选择C++;标题,c++,linux,gcc,cmake,clang,C++,Linux,Gcc,Cmake,Clang,我想在使用gcc和clang之间进行选择,还想在libstdc++和libc++之间进行选择。解释如何混合使用编译器和标准库。我可以通过调用cmake像CC=gcc-CCX=g++cmake…或使用CC=clang…在编译器之间进行选择 问题是,对于libstdc++我需要使用标志-I/usr/include/c++/5,对于libc++我需要使用-I/usr/include/c++/v1 出于可移植性的原因,我不想在CMakeListst.txt中包含上述路径,也不想将其作为命令行参数。有没有

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

问题是,对于
libstdc++
我需要使用标志
-I/usr/include/c++/5
,对于
libc++
我需要使用
-I/usr/include/c++/v1


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

也许您已经知道,
find\u package
boost或openssl也可以看到某些环境变量,例如
boost\u ROOT
openssl\u ROOT\u 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()

你是说当你运行CGUID时,你要选择编译器(Gcc/CLAN)和C++标准库(LIbSTDC++/LBC+++)。那么,您是否需要camke脚本,例如
if(clang)…else if(gcc)
?@CodeDreamer,我编辑了这个问题。谢谢。我希望路径能够自动检测并隐藏在一些CMake变量中。