Как сгенерировать рецепты
Нет необходимости подробно описывать рецепты для компиляции отдельных файлов исходного кода C, потому что make может их определить: у него есть явное правило для обновления файла «.o» из соответствующего файла «.c» с помощью команды «cc -c». Например, он будет использовать рецепт «cc -c main.c -o main.o» для компиляции main.c в main.o. Поэтому мы можем опустить рецепты из правил для файлов объектов. См. Использование явных правил.
Когда файл «.c» используется таким образом автоматически, он также автоматически добавляется в список предшественников. Поэтому мы можем опустить файлы «.c» из предшественников, при условии, что мы опустим рецепт.
Вот весь пример с этими изменениями и переменной objects как было предложено выше:
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h
.PHONY : clean
clean :
rm edit $(objects)
Вот как мы напишем файл make в реальной практике. (Сложности, связанные с «clean», описаны в другом месте. См. Псевдоцели и Ошибки в рецептах.)
Поскольку явные правила очень удобны, они важны. Вы часто будете их видеть.
Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/make-Deduces.html