Изменение порядка компиляции в Фортране в 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