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

How to get CMake to choose between multiple compilers?

本文关键字:之间 行选 选择 编译器 CMake      更新时间:2023-10-16

>假设我有一个具有多个C/C++编译器的系统 - 各种版本的GCC,clang和ICC。还假设我有一个 CMake C/C++ 项目,该项目对要使用的 C/C++ 编译器有一定的要求和某些偏好;更复杂的是,假设这些要求和偏好,并根据我设置的项目选项组合(使用 ccmake 或其他方式(动态生成。

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

有没有办法让CMake:

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

笔记:

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

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

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

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

我的建议:接受CMake的工作方式并将其教给您的用户。