首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake Fortran编译器相关标志

CMake Fortran编译器相关标志
EN

Stack Overflow用户
提问于 2014-08-27 18:54:09
回答 3查看 6.2K关注 0票数 5

我正在为一个中等大小的Fortran项目使用CMake;有时我用gfortran构建它,有时用ifort构建它。当我想要进行调试构建时,编译器标志是不同的;我希望让CMake自动检查使用哪个编译器,并相应地设置标志。

看起来,这个答案展示了如何为不同的C++编译器做同样的事情。有一个关于如何使用Fortran检查编译器的示例,使用

代码语言:javascript
复制
if (Fortran_COMPILER_NAME MATCHES "gfortran.*")

但是,这不能调用条件,因为CMake已经决定使用f95。当然,f95碰巧是gfortran的别名,但是CMake没有检测到这一点。

怎么做才是对的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-27 20:13:44

您也可以使用CMAKE_Fortran_COMPILER_ID

代码语言:javascript
复制
if ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "Intel")
  # something
elseif("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU")
  # something else
endif

最好的方法是读取文件CMakeDetermineFortranCompiler.cmake及其引用的相关文件。

票数 8
EN

Stack Overflow用户

发布于 2016-02-25 18:34:19

与其尝试为不同的编译器设置特例,不如实际测试编译器是否支持使用check_fortran_compiler_flag设置的标志,如下所示:

代码语言:javascript
复制
include(CheckFortranCompilerFlag)
check_fortran_compiler_flag("-my-flag" _my_flag)
if(_my_flag)
  set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -my-flag")
endif()

这既安全又(我认为)更简单,因为您不需要隐含的哪个编译器(和版本)支持哪个标志的知识。

票数 3
EN

Stack Overflow用户

发布于 2017-10-11 01:15:03

这很简单。仅指示已安装e.g.gfortran的编译器的完整路径。代码: cmake -DCMAKE_fortran_PATH=/usr/bin/gfortran

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25534932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档