如何让CMake在多个编译器之间进行选择?
How to get CMake to choose between multiple compilers?
>假设我有一个具有多个C/C++编译器的系统 - 各种版本的GCC,clang和ICC。还假设我有一个 CMake C/C++ 项目,该项目对要使用的 C/C++ 编译器有一定的要求和某些偏好;更复杂的是,假设这些要求和偏好,并根据我设置的项目选项组合(使用 ccmake
或其他方式(动态生成。
现在,关于使用默认编译器以外的其他答案建议设置 CC 或 CXX 环境变量 - 但这显然不合适。
有没有办法让CMake:
- 检测可用的编译器。
- 根据一些规则/排名机制选择它喜欢的那个?
笔记:
- CMake 3.0 .您可以假设较新的CMake版本,但请明确说明。
- 在这个问题中选择C或C++是出于我自己的需要,但如果该解决方案具有适应性,它当然可以是其他语言。
从历史上看,可能还有技术上,C 编译器对于 CMake 运行来说是非常基本的。许多命令依赖于编译器,例如检测符号或尝试编译一段代码。
据我所知,没有办法测试多个编译器并选择了一个。要获得这个,你必须
- 要么包装 CMake 调用,并在外部有一些逻辑,将不同的编译器添加到 CMake 调用中
- 或者必须为自己重写一堆 CMake 函数。
我的建议:接受CMake的工作方式并将其教给您的用户。
相关文章:
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 引号之间匹配/不匹配,带有不可避免的引号和多行
- 计算所选行的总和
- 通过USB在PC和Arduino之间进行串行通信
- 正则表达式 获取两个换行符之间的文本
- 如果我在下面的代码中使用 list 而不是 vector,为什么在我尝试在迭代器之间执行减法的行中编译失败?
- Arduino上的串行和流之间有什么区别,以及如何实现序列
- 一条线和两行声明之间的差异
- ESP8266和ATMEGA328P之间的串行通信
- 如何从 gtkmm 树视图中获取所选行
- openssl rc4 命令行加密和 cpp 文件实现 rc4 之间的区别
- 如何在多行文本C++的左上角显示复选框
- 如何将所选行的第一列值绑定到变量并在 QT 的 SQL 命令中使用它?
- 嵌入式串行读取操作和桌面PC之间可能有什么区别
- 数组之间的特征行交叉积
- 我的编译行和我的生成文件之间的区别可能导致错误
- 在文件中找到最长的行,签名和未签名的整数表达式之间的比较
- 使用 Qt 获取 csv 文件中两行之间所有行
- c++和arduino之间的串行通信
- 如何在Visual Studio中进行串行端口编程C++Windows和Linux之间的可移植性?