我试图将我们的项目从autotools移植到CMake并且陷入了fortran编译器设置。该项目由C ++,Fortran和Fortran90组成。在我们的autoconf / automake项目中,我们简单地定义了FC和F77以及FCFLAGS
和FFLAGS
等相应的标志。但在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个不同的编译器,分别是xlf
和xlf90
。当然,由于CMake尝试使用相同的编译器编译*.f
和*.f90
文件,因此无法正常工作。
答案 0 :(得分:0)
似乎我并没有真正想要的东西,但至少它一开始就解决了问题。我保留了相同的结构,但随后让编译器自己决定它是哪种文件。当然,我必须删除与版本有关的指令,例如-qfree = f90或-qfixed = 128,以希望编译器足够聪明,可以从文件扩展名中猜测它们。