【问题标题】:Cmake: how to choose C++ headersCmake:如何选择 C++ 头文件
【发布时间】:2017-02-24 14:03:40
【问题描述】:

我想在使用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 自动检测它?

【问题讨论】:

  • 你的意思是当你运行cmake时,你要选择一个编译器(gcc/clang)和c++标准库(libstdc++/libc++)。那么,你需要camke脚本吗,比如if( clang )...else if( gcc )
  • @CodeDreamer,我编辑了问题。

标签: c++ linux gcc cmake clang


【解决方案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()

【讨论】:

  • 谢谢。我希望自动检测到路径并隐藏在一些 CMake 变量中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 2017-07-20
  • 1970-01-01
相关资源
最近更新 更多