4

混合言語プロジェクト (C/C++ および FORTRAN) に CMake を使用すると、実行可能ファイルをリンクするために C++ コンパイラが呼び出されます。リンク手順で FORTRAN コンパイラを呼び出す簡単な方法はありますか。

project(Serialbox_Fortran_Perturbation_Example CXX Fortran)

add_executable(main_producer main_producer.f90 m_ser.f90)

これは FORTRAN コンパイラで正しくコンパイルされますが、リンク ステップで C++ コンパイラが呼び出され、たとえば PGI などの一部のコンパイラ スイートで問題が発生します。

4

2 に答える 2

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)
于 2016-11-23T20:49:08.940 に答える