当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。
发布于 2018-10-05 22:11:00
作为一种解决办法,可以显式设置链接器语言:
set_property(TARGET your_target PROPERTY LINKER_LANGUAGE Fortran)或者玩CMAKE_<LANG>_LINKER_PREFERENCE (我现在还没有检查后者是否有效,几年前我尝试的时候它不起作用)。
发布于 2016-11-24 04:49:09
我希望您看到的是,链接是通过添加了Fortran库的GCC C++前端执行的。要通过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)https://stackoverflow.com/questions/40767212
复制相似问题