我正在使用 C++ 语言开发一个项目(但是 - 这不是 C++ 特定的问题,真的)。在我的系统上,安装了几个 C++ 编译器,同一个编译器的多个版本,甚至可能在我自己的主目录下构建了一些版本。我为不同的目的使用不同的编译器(C++)(尽管我在这里夸大了一点,使问题更笼统)。
现在,出于某种原因,我的项目取决于编译器是 gcc 而不是 clang,并且版本介于 4.7 和 4.9 之间,并且更喜欢更新版本。
我想让 CMake 找到我拥有的相关编译器,并使用可用的最好的编译器(如果有有效的编译器)。但是 - 我希望这不仅发生在我的系统上;这很容易强迫。我希望它在任何(合理的)系统上执行此操作,而不是依赖于获取我的代码的开发人员对 CMakeLists.txt 进行任何自定义或使用CXX=/some/thing
等显式设置编译器。
更具体地说:
- 如何影响 CMake 在其中查找编译器的位置类型?
- 如何影响搜索这些位置的顺序?
- 如何表达对某些编译器提供程序和版本的偏好?
- 如何表达对编译器提供程序和版本的约束?
笔记:
- 仅适用于 CMake 3.x 的答案是相关的,但我也对 CMake 2.8.x 感兴趣。
- 你可以告诉我 RTFM,但请具体说明什么 FM 以及 FM 的位置(以及它是否真的对我有帮助)。
- 我正在使用 Linux 以防万一。