Makefile: синтаксис команд цели (recipe syntax) |
![]() |
Добавил(а) microsin |
Файлы Makefile обладают необычным свойством: в одном файле фактически и действует два совершенно разных синтаксиса. По большей части это синтаксис make (см. "3 Writing Makefiles" [1]). Однако команды цели (recipe) предназначены для интерпретации шеллом, и они пишутся в синтаксисе скриптов shell (bash или sh). Утилита make не пытается парсить синтаксис shell: она выполняет только очень специфические трансляции содержимого recipe перед передачей этого в shell. Важное правило: каждая строка recipe обязательно должна начинаться с символа табуляции (либо значение первого символа должно совпадать со значением переменной .RECIPEPREFIX; см. "6.14 Other Special Variables" [1]), за исключением того, что первая строка recipe может быть присоединена к строке цели и и предварительных условий (target-and-prerequisites) с точкой с запятой между ними. Любая строка в makefile, которая начинается с табуляции и появляется в "контексте правила" (то есть после того, как правило было запущено до другого определения правила или переменной), будет считаться частью recipe для этого правила. Пустые строки и строки только комментариев могут появиться среди строк recipe; они игнорируются. Некоторые последствия этих правил включают в себя: • Пустая строка, которая начинается на символ табуляции, на самом деле не пустая: это empty recipe (см. "5.9 Using Empty Recipes" [1]). См. также: • 5.1.1 Splitting Recipe Lines [1]. [Ссылки] 1. GNU make. |