Теперь мы изучим правила для Makefile.
Общий синтаксис целевого правила Makefile —
target [target...] : [dependent ....] [ command ...]
В приведенном выше коде аргументы в скобках являются необязательными, а многоточие означает один или несколько. Здесь, обратите внимание, что вкладка для предисловия каждой команды обязательна.
Ниже приведен простой пример, где вы определяете правило, чтобы сделать вашу цель привет из трех других файлов.
hello: main.o factorial.o hello.o $(CC) main.o factorial.o hello.o -o hello
ПРИМЕЧАНИЕ. — В этом примере вам нужно будет задать правила для создания всех объектных файлов из исходных файлов.
Семантика очень проста. Когда вы говорите «make target», make находит целевое правило, которое применяется; и, если какой-либо из зависимостей новее, чем цель, make выполняет команды по одной (после подстановки макросов). Если необходимо создать каких-либо иждивенцев, это происходит в первую очередь (поэтому у вас есть рекурсия).
Make завершается, если какая-либо команда возвращает статус ошибки. В таком случае будет показано следующее правило:
clean: -rm *.o *~ core paper
Make игнорирует возвращенный статус в командной строке, начинающейся с тире. Например, кого это волнует, если нет файла ядра?
Make повторяет команды после замены макроса, чтобы показать вам, что происходит. Иногда вы можете захотеть отключить это. Например —
install: @echo You must be root to install
Люди ожидают определенных целей в Makefiles. Вы должны всегда просматривать в первую очередь. Тем не менее, разумно ожидать, что цели все (или просто сделать), установить и очистить найдены.
-
make all — компилирует все, чтобы вы могли выполнять локальное тестирование перед установкой приложений.
-
make install — устанавливает приложения в нужных местах
-
make clean — очищает приложения, избавляется от исполняемых файлов, любых временных файлов, объектных файлов и т. д.
make all — компилирует все, чтобы вы могли выполнять локальное тестирование перед установкой приложений.
make install — устанавливает приложения в нужных местах
make clean — очищает приложения, избавляется от исполняемых файлов, любых временных файлов, объектных файлов и т. д.
Makefile Неявные правила
Эта команда должна работать во всех случаях, когда мы создаем исполняемый файл x из исходного кода x.cpp. Это можно сформулировать как неявное правило —
.cpp: $(CC) $(CFLAGS) $@.cpp $(LDFLAGS) -o $@
Это неявное правило говорит о том, как сделать x из xc — запустить cc на xc и вызвать вывод x. Правило неявное, потому что не указана конкретная цель. Может использоваться во всех случаях.
Другое распространенное неявное правило — для создания .o (объектных) файлов из .cpp (исходных файлов).