[英]CMake to handle F77 and F90 files differently
我试图将我们的项目从自动工具移植到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
文件。
似乎我并没有真正想要的东西,但是至少它在第一次近似时解决了这个问题。 我保留了相同的结构,但随后让编译器自己决定它是哪种文件。 当然,我必须删除与版本有关的指令,例如-qfree = f90或-qfixed = 128,以希望编译器足够聪明,可以从文件扩展名中猜测它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.