CMake Fortran编译器相关的标志

kor*_*rok 4 fortran cmake

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

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

if (Fortran_COMPILER_NAME MATCHES "gfortran.*")
Run Code Online (Sandbox Code Playgroud)

但是,这无法调用条件,因为CMake决定使用f95.当然,f95碰巧别名gfortran,但CMake没有检测到.

这样做的正确方法是什么?

Pet*_*ter 7

你也可以使用CMAKE_Fortran_COMPILER_ID:

if ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "Intel")
  # something
elseif("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU")
  # something else
endif
Run Code Online (Sandbox Code Playgroud)

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