2016-11-23 2 views
1

Когда CMake используется для проекта смешанного языка (C/C++ и FORTRAN), компилятор C++ вызывается для связывания исполняемого файла. Есть ли простой способ вызвать компилятор FORTRAN для этапа компоновки.Использование компоновщика FORTRAN в проекте смешанного языка cmake

project(Serialbox_Fortran_Perturbation_Example CXX Fortran) 

add_executable(main_producer main_producer.f90 m_ser.f90) 

Это правильно компилировать с FORTRAN компилятором, но и для стадии компоновки, компилятор C++ будет называться и это вызывает проблемы с некоторыми Compiler Suite как PGI, например.

ответ

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) 
+0

Конечно, я все равно знаю, что это хак, спасибо. Мне было интересно, есть ли лучший способ выполнить это в cmake. Я использую различные компиляторы (Cray, PGI, GNU, ...), и это боль в заднице, чтобы изменить CMAKE_CXX_LINK_EXECUTABLE. В этом случае Cmake должен использовать CMAKE_Fortran_LINK_EXECUTABLE, но я думаю, что это еще не функция. –

Смежные вопросы