当CMake用于混合语言项目(C / C ++和FORTRAN)时,将调用C ++编译器来链接可执行文件。是否有一种简单的方法可以为连接步骤调用FORTRAN编译器。
project(Serialbox_Fortran_Perturbation_Example CXX Fortran)
add_executable(main_producer main_producer.f90 m_ser.f90)
这将使用FORTRAN编译器正确编译,但是对于链接步骤,将调用C ++编译器,这会导致某些编译器套件(如PGI)出现问题。
答案 0 :(得分:1)
作为一种解决方法,可以显式设置链接器语言:
set_property(TARGET your_target PROPERTY LINKER_LANGUAGE Fortran)
或与CMAKE_<LANG>_LINKER_PREFERENCE
一起玩(我还没有检查后者现在是否可以工作,几年前我尝试时还没有工作)。
答案 1 :(得分:0)
我希望您看到的是链接是通过GCC C ++前端执行的 添加了Fortran库。通过GCC Fortran前端实现连接 这个黑客应该这样做:
project(Serialbox_Fortran_Perturbation_Example CXX Fortran)
set(CMAKE_CXX_LINK_EXECUTABLE "gfortran <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
add_executable(main_producer main_producer.f90 m_ser.f90)