Как выглядит правило
Простой makefile состоит из «правил» следующей формы:
target … : prerequisites …
recipe
…
…
Целью обычно является имя файла, который генерируется программой; примерами целей являются исполняемые или объектные файлы. Цель также может быть именем действия, которое нужно выполнить, например, «clean» (см. Фиктивные цели).
Предварительное условие — это файл, который используется в качестве входных данных для создания цели. Цель часто зависит от нескольких файлов.
Рецепт — это действие, которое make выполняется. Рецепт может содержать более одной команды, либо на одной строке, либо каждая на своей строке. Обратите внимание: необходимо помещать символ табуляции в начале каждой строки рецепта! Это тонкость, которая подстерегает неопытных. Если вы предпочитаете использовать другой символ вместо табуляции для префикса ваших рецептов, вы можете установить .RECIPEPREFIX переменную на альтернативный символ (см. Специальные переменные).
Обычно рецепт находится в правиле с предварительными условиями и служит для создания целевого файла, если какие-либо из предварительных условий изменятся. Однако правило, определяющее рецепт для цели, необязательно должно иметь предварительные условия. Например, правило, содержащее команду удаления, связанную с целью «clean», не имеет предварительных условий.
Правило, таким образом, объясняет, как и когда пересоздавать определённые файлы, которые являются целями данного правила. make выполняет рецепт на предварительных условиях, чтобы создать или обновить цель. Правило также может объяснять, как и когда выполнить действие. См. Создание правил.
Makefile может содержать текст, помимо правил, но простой makefile должен содержать только правила. Правила могут выглядеть несколько сложнее, чем показано в этом шаблоне, но все они более или менее соответствуют этому шаблону.
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/Rule-Introduction.html