我正在使用C++语言编写一个项目(但是 - 这实际上不是一个特定于C++的问题)。在我的系统上,安装了几个C++编译器,几个版本的相同编译器,甚至可能在我自己的主目录下创建了一些版本。为了不同的目的,我使用了不同的编译器(C++)(尽管我在这里夸大了一点,以使问题更一般化)。现在我如何影响CMake的编译器选择逻辑?
,我的项目依赖,出于某种原因,编译器GCC是不是铛,并与4.7和4.9之间的版本与新版本的偏好。
我想CMake的找到相关的编译器我有,并利用现有的最好的一个,如果有一个有效的。但是 - 我希望这不仅发生在我的系统上,这很容易强制。我想它做这个任何(合理的)系统,而不是取决于谁抓住了我的代码做的CMakeLists.txt的任何定制或CXX=/some/thing
等
更具体明确地设置编译开发商:
- 如何影响各种位置的CMake查找编译器吗?
- 我如何影响搜索这些位置的顺序?
- 如何表达某些编译器提供程序和版本的偏好?
- 如何在编译器提供者和版本上表达约束条件?
注:
- 解答其工作的CMake 3.X仅是相关的,但我也有兴趣在CMake的2.8.x。
- 你可以告诉我RTFM,但请具体说明哪些FM和其中的FM(以及它是否会真正帮助我)。
- 我正在研究Linux以防万一。
我怀疑,如果CMake搜索,它是根据你的路径。所以在$ PATH路径的顺序。 – hiandbaii
@hiandbaii:但那只是故事的一部分。假设我的路径依次有3个'g ++','g ++ - 5.2','g ++ - 4.6','g ++ - 4.8'和'g ++ - 4.7'。我怎么能告诉它更喜欢什么? – einpoklum
,我不认为有限制允许编译器任何正式的方式,但可以肯定地写有CMAKE_CXX_COMPILER_ID和CMAKE_CXX_COMPILER_VERSION – hiandbaii