Изменение порядка компиляции в Фортране в NetBeans 8

Я работаю в NetBeans 8 на CentOS 7, чтобы изменить старый код Fortran для замены числового дифференцирования на автоматическое дифференцирование с использованием OpenAD. OpenAD принимает аннотированную фортрановскую функцию в качестве входных данных и генерирует автоматически дифференцированную функцию в качестве выходных данных. Эта функция вывода зависит от некоторых модулей, предоставляемых OpenAD.

После добавления исходных файлов в проект NetBeans, генерации функции вывода OpenAD и добавления этого вывода и его зависимостей в проект, проект не будет построен.

Fatal Error: Can't open module file 'oad_active.mod' for reading at (1): No such file or directory

OAD_active.f90 является одной из зависимостей, вставленных и предоставленных OpenAD. Если я сначала скомпилирую этот файл, а затем соберу проект (без очистки), сборка будет успешной.

Как я могу сказать NetBeans быстрее скомпилировать OAD_active.f90 в процессе сборки?

1 ответ

Решение

NetBeans не имеет порядка компиляции, он создает Makefileс выражением графа зависимостей. График по умолчанию - это всего лишь конечный исполняемый файл в зависимости от каждого из ваших источников.

Дополнительные зависимости для каждого источника могут быть добавлены через контекстное меню каждого источника на вкладке Projects; выберите "Свойства", затем в разделе "Категории" выберите "Компилятор Фортрана", и в разделе "Вход" содержится поле "Дополнительные зависимости". Поле представляет собой разделенный пробелами список. Возможно, вы захотите изменить селектор конфигурации (в верхней части диалогового окна "Свойства файла") на "<Все конфигурации>". Если вкладка "Проекты" отсутствует, ее можно открыть в меню "Окно" ▶︎ "Проекты".

Для компилятора найти .mod файла, поле Дополнительные зависимости должно содержать соответствующий .o файл, а не исходный файл. Записи в дополнительных зависимостях являются путями относительно корня проекта; путь к .o Файл зависит от того, какая конфигурация активна (по умолчанию, один из "Отладка" или "Выпуск"). Переменные Makefile разрешены в поле Дополнительные зависимости, поэтому вы можете использовать ${OBJECTDIR} для префикса, зависящего от конфигурации, а остальная часть пути соответствует пути к исходному файлу.

В моем проекте мои источники $project/srcи файлы OpenAD в $project/src/OpenAD, Было три случая, когда мне приходилось добавлять дополнительные зависимости:

  • Источники, которые вызывают функции, преобразованные OpenAD: ${OBJECTDIR}/src/OpenAD/OAD_active.o
  • Источники, сгенерированные преобразованием OpenAD: ${OBJECTDIR}/src/OpenAD/OAD_active.o ${OBJECTDIR}/src/OpenAD/w2f__types.o
  • $ Проекта / SRC /OpenAD/OAD_active.f90: ${OBJECTDIR}/src/OpenAD/w2f__types.o
Другие вопросы по тегам