在cmake混合语言项目中使用FORTRAN链接器

时间:2016-11-23 14:33:15

标签: cmake fortran g++ gfortran pgi

当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)出现问题。

2 个答案:

答案 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)