如何让CMake在多个编译器之间进行选择?

时间:2018-04-28 11:20:37

标签: c++ cmake build-automation

假设我有一个带有多个C / C ++编译器的系统 - 各种版本的GCC,clang和ICC。还假设我有一个CMake C / C ++项目,该项目对C / C ++编译器有一定的要求和某些偏好;并且使事情复杂化,假设这些要求和偏好并基于我设置的项目选项(使用ccmake或其他方式)动态生成。

现在,关于使用非默认编译器的其他答案建议设置CC或CXX环境变​​量 - 但这在这里显然是不合适的。

有没有办法让CMake:

  1. 检测可用的编译器。
  2. 根据一些规则/排名机制选择喜欢的?
  3. 注意:

    • CMake 3.0。您可以假设一个较新的CMake版本,但请明确说明。
    • 在这个问题中选择C或C ++是出于我自己的需要,但如果该解决方案具有适应性,它当然可以是其他语言。

1 个答案:

答案 0 :(得分:1)

从历史上看,也可能在技术上,C编译器对于CMake运行来说是非常基础的。许多命令依赖于编译器,例如检测符号或尝试编译一段代码。

据我所知,没有办法测试多个编译器并选择一个。要做到这一点,你必须

  • 要么包装CMake调用,要么有一些逻辑,将不同的编译器添加到CMake调用
  • 或者必须为自己重写一堆CMake函数。

我的建议:接受CMake的工作方式,并将其传授给用户。