У меня есть программа Fortran, которая использует модули, то есть создает .mod
-файлы во время компиляции. Я также написал Makefile
, который использует все .f90
-файлы от src/
помещает все созданные .o
-файлы в obj/
и двоичные файлы в текущую папку, и все работает нормально.Makefile: Избегайте компиляции модулей Fortran для новой папки
я теперь перекомпилировать программу в различных папках для различных вычислений (скажем calc1/
), то есть я скопировать Makefile
в calc1/
, типа make all
в calc1/
и все это делает связующая, поскольку объектные файлы уже существуют. Однако, если программа включает любые модули, компилятору нужны соответствующие .mod
-файлы, которые должны присутствовать в calc1/
. До сих пор я перекомпилировал все (make clean all
), но с развитием программы это занимает слишком много времени!
Возможное решение, с которым я столкнулся, состоит в том, чтобы иметь одну конкретную папку для двоичных файлов (bin/
). Но это не жизнеспособный вариант, потому что у меня есть задания в очереди, которые, очевидно, нуждаются в стабильном двоичном файле, в то время как я также пробую новые функции в то же время.
Итак, я ищу решение, которое каким-то образом обрабатывает файлы .mod
, похожие на .o
-файлы, например. размещает их в obj/
.
Я знаю, что сделать, но я не Не знаю Фортрана (ха!). Компилятор создает файлы 'mod' в текущем каталоге? Имеют ли они предсказуемые имена (например, 'foo.f90' =>' foo.mod')? Можете ли вы контролировать свои имена с помощью аргументов компилятору? – Beta
Правильно, 'mod' файлы создаются в текущем каталоге и называются указанными в файле, например. 'foo.f90' содержит' панель модуля', тогда файл будет называться 'bar.mod'. Это невозможно контролировать во время компиляции, поскольку имя используется в других файлах, то есть в 'main.f90'. Я пишу' use bar'. – Jost