nixp.ru v3.0

23 февраля 2017,
четверг,
03:26:46 MSK

DevOps с компанией «Флант»
unknownm написал 18 декабря 2016 года в 19:29 (1636 просмотров) Ведет себя неопределенно; открыл 1 тему в форуме.

Господа, Прошу помочь: нужно создать make файл, исходники у которого хранятся в разных каталогах. Для проверки работы файла сделал три каталога и поместил туда по одному исходнику. Почему-то при запуске make в командной строке получаю это: gfortran: fatal error: no input files; unwilling to write output files
compilation terminated. makefile:2: ошибка выполнения рецепта для цели «program» make: *** [program] Ошибка 1

Текст make-файла :
program: $(patsubst %.f95,%.o,$(wildcard *.f95))

gfortran -o program $(patsubst %.f95,%.o,$(wildcard *.f95))
vpath %.f95 ./dir1
vpath %.f95 ./dir2
vpath %.f95 ./dir3
%.o: %.95
gfortran -c $<

Помогите, пожалуйста, исправить ситуацию и по возможности объясните причины. Заранее спасибо
P.S. Список объектных файлов обязательно должен строится автоматически

Андрей К.

Перестаньте пользоваться переменой vpath — это дурной тон особенно с точки зрения рекурсии. А проблема собственно в том, что компилятор не может найти ваш файл по его базовому имени, нужен полный или относительный путь от каталога $(CURDIR).

Попробуйте составить списки
SRCS = …
OBJS = …

где без помощи vpath задать имена исходников. можно с пом wildcard но с указанием путей к файлам.