2015-07-28 11 views
1

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

После добавления исходных файлов в проект 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 раньше в процессе сборки?

+0

Какая система сборки использует Netbeans? Makefile или что-то обычай? Как выглядит ваша текущая конфигурация? –

+0

Я понятия не имею, какую систему сборки он использует, но он создает файл с именем 'Makefile'. Я не уверен, что вы хотите узнать о моей конфигурации, это в основном NetBeans по умолчанию. – ShadSterling

+0

К несчастью, я не знаю Netbeans. Если вы использовали только «Makefile», я бы сказал вам добавить строку ' .o: OAD_active.o' где-то внутри. Но если Netbeans воссоздает 'Makefile' каждый раз, это слишком хлопотно.Проверьте документацию на «Зависимости» – chw21

ответ

2

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

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

Чтобы компилятор мог найти файл .mod, поле Additional Dependencies должно содержать соответствующий файл .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