может ли кто-нибудь помочь мне в интерпретации следующего make-файла:
# compiler
FC = gfortran
# compile flags
FCFLAGS = -c -ffixed-line-length-72 -std=gnu -Wline-truncation -Wunused-variable
# link flags
FLFLAGS =
# module files
MODULES = Calculator.f
# object files
OBJS = Calculator.o
OBJS += Main.o Common.o Io.o
# program name
PROGRAM = calFap
all: $(PROGRAM)
$(PROGRAM): $(OBJS)
$(FC) $(FLFLAGS) -o $@ $^
%.o: %.f
$(FC) $(FCFLAGS) -o $@ $^
mod: $(MODULES)
$(FC) $(FCFLAGS) $@ $^
clean:
rm -f *.o *.mod
Что это означает:
# module files
MODULES = Calculator.f
Это просто своего рода заполнитель? Значит, МОДУЛИ "привязаны" к Calculator.f? Файл Calculator.f уже существует.
# object files
OBJS = Calculator.o
OBJS += Main.o Common.o Io.o
Итак, я создаю переменную и помещаю в Calculator.o Main.o Common.o Io.o. Но в моей папке они не существуют до сих пор?
all: $(PROGRAM)
Значит, inte rnet говорит мне, что "все" в качестве цели используется для компиляции всей программы? Но, насколько я понимаю, make-файлы существуют только для компиляции тех частей программы, которые были изменены? . Но я не понимаю, что такое "-o $ @ $ ^". Может быть, все объекты, которые изменились?
%.o: %.f
$(FC) $(FCFLAGS) -o $@ $^
Если есть изменение в одном из файлов .f ...? Я не понимаю этой строки.
За вашу помощь я был бы очень рад.
Спасибо, Гельмут