CMake以不同方式处理F77和F90文件

时间:2017-06-21 15:09:33

标签: cmake fortran fortran90

我试图将我们的项目从autotools移植到CMake并且陷入了fortran编译器设置。该项目由C ++,Fortran和Fortran90组成。在我们的autoconf / automake项目中,我们简单地定义了FC和F77以及FCFLAGSFFLAGS等相应的标志。但在CMake中似乎有点不同。

到目前为止我做了什么:

project (blah-proj CXX Fortran)
... in ibm case ....
set (CMAKE_Fortran_FLAGS "-qfullpath -qinitauto -qnolm -qinit=f90ptr -qfree=f90 " )

并在源目录CMakeLists.txt中:

file (GLOB_RECURSE libblah_f_sources *.f90 *.f)
add_library (blah_f ${libblah_f_sources})
set_target_properties (blah_f PROPERTIES LINKER_LANGUAGE Fortran)

在linux上使用gfortran它可以很好地工作,因为它只有一个二进制文件,但在AIX上有2个不同的编译器,分别是xlfxlf90。当然,由于CMake尝试使用相同的编译器编译*.f*.f90文件,因此无法正常工作。

1 个答案:

答案 0 :(得分:0)

似乎我并没有真正想要的东西,但至少它一开始就解决了问题。我保留了相同的结构,但随后让编译器自己决定它是哪种文件。当然,我必须删除与版本有关的指令,例如-qfree = f90或-qfixed = 128,以希望编译器足够聪明,可以从文件扩展名中猜测它们。