【发布时间】:2018-10-09 02:24:40
【问题描述】:
假设我有一个带有多个 C/C++ 编译器的系统 - 各种版本的 GCC、clang 和 ICC。还假设我有一个 CMake C/C++ 项目,它对要使用的 C/C++ 编译器有某些要求和某些偏好;更复杂的是,假设这些要求和偏好是根据我设置的项目选项的组合动态生成的(使用ccmake 或其他方式)。
现在,关于使用非默认编译器的其他答案建议设置 CC 或 CXX 环境变量 - 但这在这里显然不合适。
有没有办法让 CMake :
- 检测可用的编译器。
- 根据一些规则/排名机制选择它喜欢的?
注意事项:
- CMake 3.0 。您可以假设 CMake 版本较新,但请明确说明。
- 在这个问题中选择 C 或 C++ 是出于我自己的需要,但如果该解决方案适用,当然也可以是其他语言。
【问题讨论】:
-
您可以在命令行中为 cmake 指定生成器
-
@AlexeyAndronov :我没有关注,请详细说明。
-
看看这里:https://stackoverflow.com/questions/25941536/what-is-a-cmake-generator。基本上,您可以在命令行中为 ide 生成解决方案文件的
cmakecommane 指定。看来这是你需要的 -
@AlexeyAndronov:这似乎与我的需要无关。
-
在 cmake 时很难检测出哪些编译器可用,并且更难运行多个。这根本不是 cmake 的设计方式。它假定生成一个固定的编译器。但是您现在可以测试某些 c++11/14/17 功能及其可用性(请参阅cmake-compile-features)。或者,您可以编写“测试”并使用try_compile。这不允许您选择编译器,但至少在不足时会出错。
标签: c++ cmake build-automation