使用enable_language时如何指定编译器的首选项[cmake]

时间:2011-03-16 03:27:08

标签: makefile cmake

在cmake中使用enable_language时,它始终以特定的默认顺序搜索编译器。我想知道如何改变这个序列。例如,如果我的系统同时安装了ifort(icc)和gfortran(g ++),并且我想使用ifort(icc)而不是gfortran(g ++),我该如何设置它?

澄清:我知道我们可以通过更改变量CMAKE_Fortran_Compiler来显式切换编译器,但我想要做的是修改cmake搜索可用编译器的默认序列,如果用户没有指定这样的首选项。

从我目前发现的,解决方法是在项目(xxx)之前设置CMAKE_Fortran_Compiler,以便以后永远不会覆盖此变量,但显然这不是最好的方法,因为如果转弯我将需要gfortran没有ifort可用。

顺便问一下,寻找这类信息的最佳地点是什么?文档似乎不是很完整..

谢谢!

2 个答案:

答案 0 :(得分:1)

正确的地方是CMake常见问题解答,answers your question

Omegaice的答案将起作用,CC=/path/to/icc cmake ...也是如此,另见this discussion thread

CMAKE_Fortran_Compiler来电之前设置project 强烈建议不要(正如常见问题解答会告诉您的那样)。

请注意,手动调用enable_language与使用project调用指定语言没有什么不同(或者实际上没有指定它们,在这种情况下,它们默认为 C 和< em> CXX ),因为它在内部调用enable_language

答案 1 :(得分:0)

您可以通过执行ccmake .. -DCMAKE_Fortran_Compiler=<executable>(其中<executable>是编译器的名称或编译器的完整路径)来指定要使用的编译器,而不是在CMakeLists.txt中设置它。