在cmake中使用enable_language时,它始终以特定的默认顺序搜索编译器。我想知道如何改变这个序列。例如,如果我的系统同时安装了ifort(icc)和gfortran(g ++),并且我想使用ifort(icc)而不是gfortran(g ++),我该如何设置它?
澄清:我知道我们可以通过更改变量CMAKE_Fortran_Compiler来显式切换编译器,但我想要做的是修改cmake搜索可用编译器的默认序列,如果用户没有指定这样的首选项。
从我目前发现的,解决方法是在项目(xxx)之前设置CMAKE_Fortran_Compiler,以便以后永远不会覆盖此变量,但显然这不是最好的方法,因为如果转弯我将需要gfortran没有ifort可用。
顺便问一下,寻找这类信息的最佳地点是什么?文档似乎不是很完整..
谢谢!
答案 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中设置它。