CMAKE не может определить .f90 как исходный код? - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь использовать CMAKE для создания программы на Фортране

Исходные файлы теста включают в себя: TEST.cpp, A.f90, B.f90

CMakeLists.txt:

cmake_minimum_required(VERSION 3.1)

enable_language(Fortran)

aux_source_directory( ${CMAKE_SOURCE_DIR} SRC )

file(WRITE out.txt ${SRC} )

Но команда aux_source_directory не может определить исходные файлы .f90.

Я использовал enable_language(Fortran)

Но можно определить только файл TEST.cpp (вывод в out.txt)

Как исходные файлы .f90 можно идентифицировать по aux_source_directory?

1 Ответ

0 голосов
/ 01 ноября 2018

Попробуйте:

set(CMAKE_Fortran_SOURCE_FILE_EXTENSIONS f90)

С cmake help :

CMAKE__SOURCE_FILE_EXTENSIONS: расширения исходных файлов для данного языка.
Это список расширений для указанных языков исходных файлов.

Помните, что из aux_source_directory :

Соблазнительно использовать эту команду, чтобы не писать список исходные файлы для библиотеки или исполняемой цели. Хотя это кажется работа, нет никакого способа для CMake генерировать систему сборки, которая знает когда новый исходный файл был добавлен. Обычно сгенерированная сборка система знает, когда нужно перезапустить CMake, потому что CMakeLists.txt Файл изменен, чтобы добавить новый источник. Когда источник только что добавлен в каталог без изменения этого файла, придется вручную Перезапустите CMake, чтобы сгенерировать систему сборки, включающую новый файл.

Таким образом, вам может понадобиться только перезапустить cmake (я предлагаю удалить все сгенерированные cmake файлы и перезапустить его заново). Для поиска источников лучше использовать file(GLOB_RECURSE src *.f90) или аналогичный.

...