2016-11-23 102 views
1

當CMake用於混合語言項目(C/C++和FORTRAN)時,將調用C++編譯器以鏈接可執行文件。有沒有簡單的方法來調用鏈接步驟的FORTRAN編譯器。在cmake混合語言項目中使用FORTRAN鏈接器

project(Serialbox_Fortran_Perturbation_Example CXX Fortran) 

add_executable(main_producer main_producer.f90 m_ser.f90) 

這將正確編譯與FORTRAN編譯器,但用於鏈接步驟中,C++編譯器將被調用,它會導致麻煩一些編譯器套件等PGI例如。

回答

0

我希望你看到的是,通過添加了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) 
+0

當然,我知道這個黑客,無論如何。我想知道是否有更好的方法在cmake中執行此操作。我正在使用各種編譯器套件(Cray,PGI,GNU,...),修改CMAKE_CXX_LINK_EXECUTABLE是一件痛苦的事情。在這種情況下,Cmake應該使用CMAKE_Fortran_LINK_EXECUTABLE,但我想這不是一個功能。 –