Объяснение синтаксиса make-файла - PullRequest
0 голосов
/ 09 июля 2020

может ли кто-нибудь помочь мне в интерпретации следующего 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 ...? Я не понимаю этой строки.

За вашу помощь я был бы очень рад.

Спасибо, Гельмут

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...