GoGPT Best VPN GoSearch

Значок OnWorks

pmake - онлайн у хмарі

Запустіть pmake у безкоштовному хостинг-провайдері OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда pmake, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS.

ПРОГРАМА:

ІМ'Я


ганяти — підтримувати програмні залежності

СИНТАКСИС


ганяти [-BeikNnqrstWwX] [-C каталог] [-D змінна] [-d прапори] [-f makefile] [-I каталог]
[-J приватний] [-j max_jobs] [-m каталог] [-T файл] [-V змінна] [змінна=значення]
[мета ...]

ОПИС


ганяти це програма, призначена для спрощення обслуговування інших програм. Його вхідним є a
список специфікацій щодо файлів, від яких залежать програми та інші файли. Якщо ні -f
makefile надається параметр makefile, ганяти спробую відкрити 'makefile' тоді 'Makefileв
щоб знайти технічні характеристики. Якщо файл '.залежно' існує, він читається (див mkdep(1)).

Ця сторінка посібника призначена лише як довідковий документ. Для більш детального опису
of ганяти та make-файли, див PMake - A Підручник.

ганяти буде передувати вміст MAKEFLAGS змінну середовища в командний рядок
аргументи перед їх розбором.

Варіанти такі:

-B Спробуйте мати зворотну сумісність, виконуючи одну оболонку для кожної команди та за допомогою
виконання команд, щоб упорядкувати джерела рядка залежностей.

-C каталог
Перейти каталог перш ніж читати файли make-файлів або робити щось інше. Якщо
множинний -C параметри вказані, кожен інтерпретується відносно попереднього:
-C / -C і т.д. еквівалентна -C / Etc.

-D змінна
Визначте змінна бути 1 у глобальному контексті.

-d [-]прапори
Увімкніть налагодження та вкажіть, які частини ганяти для друку налагодження
інформації. Якщо прапорці не передують "-", вони додаються до MAKEFLAGS
змінна середовища і буде оброблятися будь-якими дочірніми процесами make. За замовчуванням,
інформація про налагодження друкується зі стандартною помилкою, але це можна змінити за допомогою
F прапор налагодження. Вихід налагодження завжди небуферизований; крім того, якщо
налагодження ввімкнено, але вихід налагодження не спрямовується на стандартний вихід
стандартний вихід є буферизованим у рядки. Прапори є одним або більше з наступного:

A Роздрукувати всю можливу інформацію про налагодження; еквівалентно вказівці всіх
прапори налагодження.

a Друк налагоджувальної інформації про пошук і кешування в архіві.

C Роздрукувати налагоджувальну інформацію про поточний робочий каталог.

c Друк налагоджувальної інформації про умовне оцінювання.

d Друк налагоджувальної інформації про пошук у каталозі та кешування.

e Друк налагоджувальної інформації про невдалі команди та цілі.

F[+]ім'я файлу
Вкажіть, куди записується вихід налагодження. Це має бути останній прапор,
оскільки це споживає решту аргументу. Якщо персонаж
Відразу після прапорця «F» буде встановлено «+», тоді файл буде відкрито
режим додавання; інакше файл буде перезаписаний. Якщо ім’я файлу
'stdout' або 'stderr', тоді вихідні дані налагодження будуть записані до стандарту
дескриптори вихідного файлу чи стандартної помилки відповідно (і '+'
варіант не впливає). В іншому випадку вихідні дані будуть записані до імені
файл. Якщо ім'я файлу закінчується на ".%d", то "%d" замінюється на pid.

f Друк налагоджувальної інформації про оцінку циклу.

g1 Роздрукуйте вхідний графік, перш ніж щось робити.

g2 Роздрукуйте вхідний графік після того, як все зробили, або перед виходом у разі помилки.

g3 Роздрукуйте вхідний графік перед виходом з помилки.

j Друк налагоджувальної інформації про запуск кількох оболонок.

l Друк команд у Makefiles незалежно від того, чи є вони з префіксом
символом «@» або іншими «тихими» прапорами. Також відома як «гучна» поведінка.

M Друк налагоджувальної інформації про рішення "мета" режиму щодо цілей.

m Друк налагоджувальної інформації про створення цілей, включаючи модифікацію
дати.

n Не видаляйте тимчасові командні сценарії, створені під час виконання команд.
Ці тимчасові сценарії створюються в каталозі, на який посилається файл
Змінна середовища TMPDIR або в / Tmp якщо TMPDIR вимкнено або встановлено на
порожній рядок. Тимчасові скрипти створюються за допомогою mkstemp(3) і мають
назви форми зробити XXXXXX. ПРИМІТКА: Це може створити багато файлів у TMPDIR або
/ Tmp, тому використовуйте обережно.

p Друк налагоджувальної інформації про аналіз make-файлу.

s Друк налагоджувальної інформації про правила перетворення суфіксів.

t Друк налагоджувальної інформації про підтримку списку цілей.

V Примусити -V можливість друку необроблених значень змінних.

v Друк налагоджувальної інформації про призначення змінних.

x Виконайте команди оболонки за допомогою -x тому фактичні команди друкуються такими, якими вони є
страчено.

-e Вкажіть, що змінні середовища замінюють призначення макросів у make-файлах.

-f makefile
Вкажіть make-файл для читання замість стандартного 'makefile'. Якщо makefile є '-',
стандартний вхід зчитується. Можна вказати кілька make-файлів, які зчитуються в файлі
вказано порядок.

-I каталог
Вкажіть каталог, у якому шукати make-файли та включені make-файли. The
системний каталог makefile (або каталоги, див -m опція) автоматично
включено як частину цього списку.

-i Ігноруйте ненульовий вихід команд оболонки у make-файлі. Еквівалент уточнення
"-' перед кожним командним рядком у make-файлі.

-J приватний
Цей варіант повинен НЕ вказується користувачем.

Коли j Опція використовується в рекурсивній збірці, ця опція передається make до
дочірнє робить, щоб дозволити всім процесам make в збірці співпрацювати, щоб уникнути
перевантаження системи.

-j max_jobs
Вкажіть максимальну кількість робочих місць ганяти може працювати в будь-який момент. The
значення зберігається в .ЗРОБИТИ.РОБОТУ. Вимикає режим сумісності, якщо B прапор є
також зазначено. Коли режим сумісності вимкнено, усі команди, пов’язані з a
target виконується в одному виклику оболонки на відміну від традиційного
виклик оболонки на рядок. Це може порушити традиційні сценарії, які змінюються
каталогів під час кожного виклику команди, а потім очікуйте почати зі свіжого
оточення на наступному рядку. Ефективніше виправляти скрипти
ніж увімкнути зворотну сумісність.

-k Продовжуйте обробку після виявлення помилок, але лише для тих цілей, які зустрічаються
не залежить від цілі, створення якої спричинило помилку.

-m каталог
Вкажіть каталог, у якому шукати sys.mk та make-файли, включені через файл
файлОператор включення в стилі ⟩. The -m Опцію можна використовувати кілька разів для формування a
шлях пошуку. Цей шлях замінить шлях системного включення за замовчуванням:
/usr/share/mk. Крім того, шлях включення системи буде додано до пошуку
шлях, що використовується для "файл"-стиль включає оператори (див -I варіант).

Якщо ім’я файлу або каталогу в -m аргумент (або середовище MAKESYSPATH
змінна) починається з рядка ".../", потім ганяти здійснить пошук вказаного
файл або каталог, названий у решті частини рядка аргументів. Пошук
починається з поточного каталогу Makefile, а потім йде вгору до
корінь файлової системи. Якщо пошук успішний, то отриманий каталог
замінює специфікацію ".../" в -m аргумент. Якщо використовується, ця функція дозволяє
ганяти щоб легко шукати в поточному дереві джерел налаштовані файли sys.mk (наприклад,
використовуючи ".../mk/sys.mk" як аргумент).

-n Відобразити команди, які були б виконані, але насправді їх не виконувати
якщо ціль не залежить від спеціального джерела .MAKE (див. нижче).

-N Відобразити команди, які були б виконані, але фактично не виконуються
їх; корисно для налагодження make-файлів верхнього рівня, не спускаючись до них
підкаталоги.

-q Не виконуйте жодних команд, але вийдіть із 0, якщо вказані цілі оновлені та
1, інакше.

-r Не використовуйте вбудовані правила, зазначені в системному make-файлі.

-s Не повторюйте жодних команд під час їх виконання. Еквівалентно вказівці "@' раніше
кожен командний рядок у make-файлі.

-T файл трасування
При використанні з -j прапорець, додайте запис трасування до файл трасування за кожну розпочату роботу
і завершено.

-t Замість того, щоб повторно створювати ціль, як зазначено у make-файлі, створіть її або оновіть
час зміни, щоб він виглядав сучасним.

-V змінна
друк ганятиуявлення про цінність змінна, у глобальному контексті. Не будуйте
будь-які цілі. Можна вказати декілька екземплярів цієї опції; змінні будуть
друкувати по одному на рядок з порожнім рядком для кожної нульової або невизначеної змінної. Якщо
змінна містить "$", то значення буде розгорнуто перед друком.

-W Розглядайте будь-які попередження під час розбору make-файлу як помилки.

-w Друк вхідних та вихідних повідомлень до каталогу, попередня та постобробка.

-X Не експортуйте змінні, передані в командному рядку, до середовища окремо.
Змінні, передані в командному рядку, все ще експортуються через файл MAKEFLAGS
змінна середовища. Ця опція може бути корисною для систем, які мають невелике обмеження
на розмір аргументів команди.

змінна=значення
Встановіть значення змінної змінна до значення. Зазвичай всі значення передаються на
командний рядок також експортується до суб-маків у середовищі. The -X прапор
вимикає цю поведінку. Призначення змінних має відповідати параметрам POSIX
сумісність, але впорядкування не виконується.

У make-файлі є сім різних типів рядків: специфікації залежностей файлів,
команди оболонки, призначення змінних, інструкції включення, умовні директиви, цикли for,
та коментарі.

Загалом, рядки можна продовжувати від одного рядка до іншого, закінчуючи їх зворотною косою рискою
('\'). Символ нового рядка в кінці та початковий пробіл у наступному рядку є
стиснутий в єдиний простір.

Фото ЗАЛЕЖНІСТЬ Технічні характеристики


Рядки залежностей складаються з одного або кількох цілей, оператора та нуля або більше джерел.
Це створює відносини, коли цілі «залежять» від джерел і зазвичай є такими
створені з них. Визначається точний зв'язок між цільовим призначенням і джерелом
оператором, який їх розділяє. Нижче наведено три оператори:

: Ціль вважається застарілою, якщо час її модифікації менший за будь-який
її джерел. Джерела для цілі накопичуються над рядками залежностей, коли це
використовується оператор. Ціль видаляється, якщо ганяти переривається.

! Цілі завжди створюються заново, але не доти, поки всі джерела не будуть перевірені та повторно
створений у міру необхідності. Джерела для цілі накопичуються над рядками залежностей, коли це
використовується оператор. Ціль видаляється, якщо ганяти переривається.

:: Якщо джерела не вказано, ціль завжди створюється повторно. Інакше – мета
вважається застарілим, якщо будь-яке з його джерел було змінено пізніше, ніж
ціль. При цьому джерела для цілі не накопичуються над лініями залежностей
використовується оператор. Ціль не буде видалена, якщо ганяти переривається.

Цілі та джерела можуть містити підстановочні символи оболонки «?», «*», «[]» і «{}». The
значення '?', '*' і '[]' можна використовувати лише як частину кінцевого компонента цілі або
джерело, і має використовуватися для опису існуючих файлів. Значення '{}' необов'язково
використовується для опису існуючих файлів. Розширення відбувається в порядку каталогу, а не в алфавітному порядку
виконано в оболонці.

SHELL КОМАНДИ


Кожна ціль може асоціювати з нею один або кілька рядків команд оболонки, які зазвичай використовуються
для створення цілі. Кожен з рядків у цьому скрипті повинен передувати вкладку. (Для
З історичних причин пробіли не приймаються.) Хоча цілі можуть з’являтися в багатьох залежностях
рядків, якщо потрібно, за замовчуванням лише одне з цих правил може супроводжуватися сценарієм створення.
Якщо::Використовується оператор ', однак усі правила можуть включати сценарії, а сценарії є
виконано у знайденому порядку.

Кожен рядок розглядається як окрема команда оболонки, якщо кінець рядка не екранується за допомогою a
зворотна коса риска ('\'), у цьому випадку цей рядок і наступний поєднуються. Якщо перші символи
команди є будь-якою комбінацією '@','+', або'-', команда трактується спеціально. А
"@' призводить до того, що команда не повторюється до її виконання. A '+' викликає команду
виконуватися навіть тоді, коли -n надається. Це схоже на ефект .MAKE special
джерело, за винятком того, що ефект може бути обмежений одним рядком сценарію. A '-в
режим сумісності призводить до того, що будь-який ненульовий статус виходу з командного рядка ігнорується.

Коли ганяти виконується в режимі завдань з -j max_jobs, весь сценарій для цілі подається до
один екземпляр оболонки. У режимі сумісності (без завдань) кожна команда виконується в a
окремий процес. Якщо команда містить будь-які метасимволи оболонки
('#=|^(){};&<>*?[]:$`\\n') він буде переданий в оболонку; інакше ганяти спробує
безпосереднє виконання. Якщо рядок починається з '-' і в оболонці ввімкнено ErrCtl, а потім збій
командного рядка буде ігноруватися, як у режимі сумісності. інакше '-' впливає на
вся робота; Сценарій зупиниться на першому командному рядку, який не вдасться, але ціль зупиниться
не вважатися такими, що пройшли.

Make-файли повинні бути написані так, щоб режим ганяти експлуатація не змінює їх
поведінка. Наприклад, будь-яка команда, яка потребує використання «cd» або «chdir» без потенційно
зміну каталогу для наступних команд слід помістити в дужки, щоб воно виконувалося
у підоболонці. Щоб примусово використовувати одну оболонку, уникніть розриви рядка, щоб зробити
весь сценарій одна команда. Наприклад:

уникнути-chdir-side-effects:
@echo Building $@ у `pwd`
@(cd ${.CURDIR} && ${MAKE} $@)
@echo Назад у `pwd`

забезпечити-один-оболонка-незалежно від-режиму:
@echo Building $@ в `pwd`; \
(cd ${.CURDIR} && ${MAKE} $@); \
echo Назад у `pwd`

З ганяти волі чдір(2) до '.OBJDIR' перед виконанням будь-яких цілей кожен дочірній процес
починається з цього поточного робочого каталогу.

ЗМІННИЙ ЗАВДАННЯ


Змінні в make дуже схожі на змінні в оболонці і, за традицією, складаються з усіх
великі літери.

Змінна призначення модифікатори
П’ять операторів, які можна використовувати для призначення значень змінним, є такими:

= Призначте значення змінній. Будь-яке попереднє значення перевизначено.

+= Додати значення до поточного значення змінної.

?= Призначте значення змінній, якщо вона ще не визначена.

:= Призначити з розширенням, тобто розширити значення, перш ніж присвоїти його змінній.
Зазвичай розширення не виконується, доки на змінну не буде посилання. ПРИМІТКА: Список літератури
до невизначених змінних НЕ розширений. Це може викликати проблеми при зміні
використовуються модифікатори.

!= Розгорніть значення та передайте його в оболонку для виконання та призначте результат до
змінний. Будь-які нові рядки в результаті замінюються пробілами.

Будь-який пробіл перед призначеним значення видаляється; якщо значення додається, a
між попереднім вмістом змінної та доданим вмістом вставляється один пробіл
value.

Змінні розширюються, оточуючи ім'я змінної фігурними дужками ('{}') або
дужки ('()') і перед ним знак долара ('$'). Якщо ім’я змінної містить
лише одна літера, навколишні дужки чи дужки не потрібні. Це коротше
форма не рекомендується.

Якщо ім’я змінної містить долар, то спочатку розгортається саме ім’я. Це дозволяє
майже довільні імена змінних, однак імена містять долар, дужки, дужки або
пробіли дійсно краще уникати!

Якщо результат розгортання змінної містить знак долара ('$'), рядок розгортається
знову.

Заміна змінної відбувається в три різні моменти, залежно від того, де знаходиться змінна
використовуються.

1. Змінні в рядках залежностей розширюються під час читання рядка.

2. Змінні в командах оболонки розширюються, коли виконується команда оболонки.

3. Змінні індексу циклу “.for” розширюються на кожній ітерації циклу. Зауважте, що інше
змінні не розширюються всередині циклів, тому наступний приклад коду:

.для я через 1
a+= ${i}
j= ${i}
b+= ${j}
.endfor

всього:
@echo ${a}
@echo ${b}

надрукує:

1 2 3
3 3 3

Оскільки в той час як ${a} містить «1 2 3» після виконання циклу, ${b} містить «${j}
${j} ${j}», який розширюється до «3 3 3», оскільки після завершення циклу ${j} містить «3».

Змінна класів
Чотири різні класи змінних (у порядку збільшення пріоритету):

Змінні середовища
Змінні, визначені як частина ганятиоточення Росії.

Глобальні змінні
Змінні, визначені у make-файлі або у включених make-файлах.

Змінні командного рядка
Змінні, визначені як частина командного рядка.

Локальні змінні
Змінні, визначені спеціально для певної цілі.

Усі локальні змінні вбудовані, і їх значення магічним чином змінюються від цілі до цілі. Це
наразі неможливо визначити нові локальні змінні. Сім локальних змінних є як
наступним чином:

.ALLSRC Список усіх джерел для цієї мети; також відомий як '>.

.АРХІВ Ім'я архівного файлу; також відомий як '!.

.IMPSRC У правилах перетворення суфіксів ім’я/шлях джерела, з якого
мета має бути перетворена (“неявне” джерело); також відомий як '<'. Це
не визначено в явних правилах.

.ЧЛЕН Прізвище учасника архіву; також відомий як '%.

.OODATE Список джерел для цієї цілі, які були визнані застарілими; також відомий
як '?.

.ПРЕФІКС Префікс цільового файлу, що містить лише частину файлу, без суфікса
або попередні компоненти каталогу; також відомий як '*'. Суфікс має бути
один із відомих суфіксів, оголошених с .СУФІКСИ або не буде
визнано.

.ЦІЛЬ Назва цілі; також відомий як '@.

Короткі форми ('>','!','<','%','?','*', і'@') дозволені для зворотного
сумісність з історичними файлами make-файлів і застарілими POSIX make і не рекомендується.

Варіанти цих змінних із розділовими знаками, за якими відразу слідує «D» або «F», напр.
"$(@D)', є застарілими формами, еквівалентними використанням модифікаторів ':H' і ':T'. Ці форми є
прийнято для сумісності з make-файлами AT&T System V UNIX і POSIX, але не є
рекомендується.

Чотири локальні змінні можна використовувати в джерелах на лініях залежностей, оскільки вони розширюються
до належного значення для кожної цілі на лінії. Ці змінні '.ЦІЛЬ','.ПРЕФІКС',
".АРХІВ', і'.ЧЛЕН.

Додатковий вбудований змінні
Крім того, ганяти встановлює або знає про такі змінні:

$ Знак долара «$», тобто «$$», розгортається до одного знака долара.

.ВСІ ЦІЛІ Список усіх цілей, які зустрічаються в Makefile. Якщо оцінювати під час
Розбір Makefile, перелічує лише ті цілі, які зустрічалися на даний момент.

.CURDIR Шлях до каталогу де ганяти був страчений. Зверніться до опису
'PWD' для більш детальної інформації.

.ВКЛЮЧАЄМОДІР
Каталог файлу, з якого було включено цей Makefile.

.ВКЛЮЧЕНО З ФАЙЛУ
Ім'я файлу, з якого було включено цей Makefile.

ЗРОБИТИ назву ганяти було виконано з (argv [0]). Для сумісності ганяти
також набори .ЗРОБИТИ з тим же значенням. Переважна змінна для використання – це
змінна середовища MAKE, оскільки вона більш сумісна з іншими версіями
of ганяти і не можна сплутати зі спеціальною метою з такою ж назвою.

.MAKE.DEPENDFILE
Іменує make-файл (за замовчуванням '.залежно'), з якого створюються залежності
читати

.MAKE.EXPAND_VARIABLES
Логічне значення, яке контролює поведінку за замовчуванням -V варіант.

.ЗРОБИТИ.ЕКСПОРТУВАТИ Список змінних, експортованих за допомогою ганяти.

.ЗРОБИТИ.РОБОТУ Аргумент до -j варіант.

.MAKE.JOB.PREFIX
If ганяти запускається з j тоді вихід для кожної цілі має префікс
'--- target ---', першою частиною якого можна керувати за допомогою
.MAKE.JOB.PREFIX. Якщо .MAKE.JOB.PREFIX порожній, маркер не друкується.
Наприклад: .MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}] буде
створювати маркери, як-от '---make[1234] target ---', що полегшує відстеження
досягається ступінь паралельності.

MAKEFLAGS Змінна середовища 'MAKEFLAGS' може містити все, що може бути
зазначено на ганятикомандний рядок . Все, що зазначено на ганятинаказ
рядок додається до змінної 'MAKEFLAGS', яка потім вводиться в файл
середовище для всіх програм, які ганяти виконує.

.ЗРОБИТИ.РІВЕНЬ Глибина рекурсії ганяти. Початковий екземпляр ганяти буде 0, і
збільшене значення вводиться в середовище, щоб його побачили наступні
покоління. Це дозволяє захищати такі тести, як: .if ${.MAKE.LEVEL} == 0
речі, які слід оцінювати лише в початковій інстанції ганяти.

.MAKE.MAKEFILE_PREFERENCE
Упорядкований список імен make-файлів (за замовчуванням 'makefile','Makefile') це
ганяти буде шукати.

.MAKE.MAKEFILES
Список make-файлів, які читає ганяти, що корисно для відстеження
залежності. Кожен make-файл записується лише один раз, незалежно від кількості
разів прочитано.

.MAKE.MODE Оброблено після прочитання всіх make-файлів. Може впливати на режим, який ганяти пробіжки
in. Він може містити декілька ключових слів:

Compat Люблю -B, ставить ганяти в режим "compat".

мета Ставить ганяти у "мета" режим, де створюються мета-файли для
кожна ціль для захоплення виконання команди, згенерованого результату та
if Філімон(4) доступна, системні виклики якої є
інтерес до ганяти. Отриманий результат може бути дуже корисним, коли
діагностичні помилки.

curdirOk= bf Зазвичай ганяти не створюватиме файли .meta в '.CURDIR'. Це
можна змінити за допомогою налаштування bf до значення, яке представляє
Правда

env Для налагодження може бути корисно включити середовище
файл .meta.

докладний Якщо ви перебуваєте в «мета-режимі», надрукуйте підказку про ціль, що будується.
Це корисно, якщо в іншому випадку збірка виконується безшумно. The
повідомлення надруковано значення: .MAKE.META.PREFIX.

ігнорувати-cmd У деяких make-файлах є команди, які просто нестабільні. Це
ключове слово змушує їх ігнорувати для визначення, чи a
ціль застаріла в "мета-режимі". Дивись також .NOMETA_CMP.

тихо = bf If bf Значення True, коли створюється файл .meta, позначте ціль
.ТИХІ.

.ЗРОБИТИ.МЕТА.БЕЙЛВІКА
У "мета" режимі надає список префіксів, які відповідають каталогам
контролюється ганяти. Якщо файл, створений поза межами .OBJDIR але
в межах зазначеної бази відсутня, поточна ціль вважається поза-
дату.

.MAKE.META.CREATED
У режимі «мета» ця змінна містить список усіх оновлених мета-файлів.
Якщо не порожній, його можна використовувати для ініціювання обробки .ЗРОБИТИ.МЕТА.ФАЙЛИ.

.ЗРОБИТИ.МЕТА.ФАЙЛИ
У режимі «мета» ця змінна містить список усіх використаних мета-файлів
(оновлено чи ні). Цей список можна використовувати для обробки мета-файлів
витягувати інформацію про залежності.

.MAKE.META.IGNORE_PATHS
Надає список префіксів шляхів, які слід ігнорувати; тому що
очікується, що зміст зміниться з часом. Список за замовчуванням включає: '/ dev
/ Etc / proc / Tmp / var / run / var / tmp"

.MAKE.META.PREFIX
Визначає повідомлення, що друкується для кожного мета-файлу, оновленого в "мета-докладному"
режим. Значення за замовчуванням:
Будівля ${.TARGET:H:tA}/${.TARGET:T}

.MAKEOVERIDES Ця змінна використовується для запису імен змінних, призначених на
командного рядка, щоб їх можна було експортувати як частину "MAKEFLAGS". Це
поведінку можна вимкнути, призначивши порожнє значення '.MAKEOVERIDES"
всередині make-файлу. Додаткові змінні можна експортувати з make-файлу за допомогою
додаючи свої імена до '.MAKEOVERIDES'. «MAKEFLAGS» реекспортується
щоразу '.MAKEOVERIDES' змінено.

.MAKE.PATH_FILEMON
If ганяти був побудований с Філімон(4) підтримки, це встановлюється на шляху
вузол пристрою. Це дозволяє make-файлам перевірити цю підтримку.

.MAKE.PID Ідентифікатор процесу ганяти.

.MAKE.PPID Ідентифікатор батьківського процесу ганяти.

.MAKE.SAVE_DOLLARS
value має бути логічним значенням, яке контролює, чи зберігаються '$$' під час виконання
':=' призначення. За замовчуванням false, для зворотної сумісності. Набір
true для сумісності з іншими марками. Якщо встановлено значення false, '$$' стає
'$' за звичайними правилами оцінки.

MAKE_PRINT_VAR_ON_ERROR
Коли ганяти зупиняється через помилку, він друкує своє ім'я та значення
".CURDIR', а також значення будь-яких змінних, названих в
"MAKE_PRINT_VAR_ON_ERROR.

.новий рядок Цій змінній просто присвоюється символ нового рядка як її значення. Це
дозволяє розширювати за допомогою :@ модифікатор для встановлення нового рядка між ітераціями
циклу, а не пробілу. Наприклад, друк о
"MAKE_PRINT_VAR_ON_ERROR' можна зробити як
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}.

.OBJDIR Шлях до каталогу, де створено цілі. Його цінність
визначається, намагаючись чдір(2) до наступних каталогів у порядку і
використовуючи перший збіг:

1. ${MAKEOBJDIRPREFIX}${.CURDIR}

(Тільки якщо в середовищі або в команді встановлено 'MAKEOBJDIRPREFIX'
рядок.)

2. ${MAKEOBJDIR}

(Тільки якщо в середовищі або в команді встановлено 'MAKEOBJDIR'
рядок.)

3. ${.CURDIR}/obj.${МАШИНА}

4. ${.CURDIR}/obj

5. /usr/obj/${.CURDIR}

6. ${.CURDIR}

Розширення змінної виконується для значення перед його використанням, отже
вирази, такі як
${.CURDIR:S,^/ usr / src,/var/obj,}
може бути використаний. Це особливо корисно з 'MAKEOBJDIR'.

".OBJDIR' може бути змінено в make-файлі за допомогою спеціального цілі '.OBJDIR.
У всіх випадках ганяти волі чдір(2) до вказаного каталогу, якщо він існує,
і встановити '.OBJDIR' і 'PWD' до цього каталогу перед виконанням будь-яких цілей.

.PARSEDIR Шлях до каталогу поточного 'Makefile' розбирається.

.PARSEFILE Базове ім'я поточного 'Makefile' розбирається. Ця змінна і
".PARSEDIR' обидва встановлені лише тоді, коли 'Створення файлів' розбираються. Якщо
ви хочете зберегти їх поточні значення, призначте їх змінній за допомогою
призначення з розширенням: (':=').

.PATH Змінна, яка представляє список каталогів, які ганяти буде шукати
для файлів. Список пошуку слід оновити за допомогою цільового '.PATH"
а не змінна.

PWD Альтернативний шлях до поточного каталогу. ганяти зазвичай встановлює '.CURDIR'до
канонічний шлях, заданий getcwd(3). Однак, якщо змінна середовища
«PWD» встановлюється і вказує шлях до поточного каталогу ганяти Набори
".CURDIR' замість значення 'PWD'. Ця поведінка вимкнена, якщо
"MAKEOBJDIRPREFIX" встановлено або "MAKEOBJDIR" містить перетворення змінної.
«PWD» встановлено на значення «.OBJDIR' для всіх програм, які ганяти
виконує.

.TARGETS Список цілей, явно вказаних у командному рядку, якщо такі є.

VPATH, розділені двокрапкою (“:”) списки каталогів, які ганяти шукатиме файли.
Змінна підтримується лише для сумісності зі старими програмами make, use
".PATH' натомість.

Змінна модифікатори
Розширення змінної можна змінити, щоб вибрати або змінити кожне слово змінної (де a
«слово» — це послідовність символів, розділена пробілами). Загальний формат змінної
розширення виглядає наступним чином:

${змінна[:модифікатор[:...]]}

Кожен модифікатор починається з двокрапки, яку можна екранувати за допомогою зворотної косої риски ('\').

Набір модифікаторів можна вказати за допомогою змінної, як показано нижче:

modifier_variable=модифікатор[:...]
${variable:${modifier_variable}[:...]}

У цьому випадку перший модифікатор у modifier_variable не починається з двокрапки, оскільки
які мають відображатися в посилаючій змінній. Якщо будь-який з модифікаторів у
modifier_variable містить знак долара ('$'), їх потрібно подвоїти, щоб уникнути раннього
розширення.

Підтримувані модифікатори:

:E Замінює кожне слово у змінній його суфіксом.

:H Замінює кожне слово у змінній усім, крім останнього компонента.

:Mмодель
Виберіть лише ті слова, які відповідають модель. Стандартні символи підстановки оболонки
("*", "?" і "[]") можна використовувати. Символи підстановки можна екранувати за допомогою a
зворотна коса риса ('\'). Як наслідок того, як значення розбиваються на слова, узгоджуються та
потім з’єднаний, конструкція як
${VAR:M*}
нормалізує інтервал між словами, видаливши всі пробіли на початку та в кінці, і
перетворення кількох послідовних пробілів в одиничні.

:Nмодель
Це ідентичний ':M', але вибирає всі слова, які не збігаються модель.

:O Упорядкуйте кожне слово змінної в алфавітному порядку. Щоб відсортувати слова у зворотному порядку, використовуйте
":O:[-1..1]' комбінація модифікаторів.

: Ох Довільно розташуйте слова у змінній. Кожного разу, коли ви посилаєтеся, результати будуть різними
до змінної змінної; використовуйте призначення з розширенням (':='), щоб запобігти такому
поведінка. Наприклад,

СПИСОК = uno due tre quattro
RANDOM_LIST= ${LIST:Ox}
STATIC_RANDOM_LIST:= ${LIST:Ox}

всього:
@echo "${RANDOM_LIST}"
@echo "${RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
може виробляти вихід, подібний до:

quattro due tre uno
tre due quattro uno
due uno quattro tre
due uno quattro tre

:Q Згадує кожен метасимвол оболонки в лапках у змінній, щоб його можна було безпечно передати
за допомогою рекурсивних викликів ганяти.

:R Замінює кожне слово у змінній усім, крім його суфікса.

:gmtime
Значення є рядком формату для strftime(3), використовуючи струм gmtime(3).

:хеш
Обчисліть 32-бітний хеш значення та закодуйте його як шістнадцяткові цифри.

:місцевий час
Значення є рядком формату для strftime(3), використовуючи струм місцевий час(3).

:tA Спробуйте перетворити змінну в абсолютний шлях за допомогою реальний шлях(3), якщо це не вдається, то
значення не змінюється.

:tl Перетворює змінну на літери нижнього регістру.

c
Слова у змінній зазвичай відокремлюються пробілом під час розширення. Цей модифікатор
встановлює роздільник для символу c. Якщо c опущено, то роздільник не використовується.
Звичайні екранування (включаючи вісімкові числові коди) працюють належним чином.

:ту Перетворює змінну на великі літери.

:tW Обробляє значення як одне слово (можливо, що містить вбудований білий).
простір). Дивись також ':[*].

:tw Обробляє значення як послідовність слів, розділених пробілом. Побачити
також ':[@].

:S/старий_рядок/новий_рядок/[1 гВт]
Змініть перше входження старий_рядок у значенні змінної, замінивши його на
новий_рядок. Якщо до останньої косої риски шаблону додається «g», усі входження в
кожне слово замінено. Лише якщо до останньої косої риски шаблону додається '1'
зачіпається перше слово. Якщо до останньої косої риски шаблону додається буква «W»,
тоді значення розглядається як одне слово (можливо, що містить вбудований пробіл).
If старий_рядок починається з каретки ('^'), старий_рядок прив’язується на початку
кожне слово. Якщо старий_рядок закінчується знаком долара ('$'), він прив'язується в кінці
кожне слово. Всередині новий_рядок, амперсанд ('&') замінюється на старий_рядок (без
будь-який '^' або '$'). Будь-який символ може використовуватися як роздільник для частин
рядок модифікатора. Символи прив’язки, амперсанда та роздільника можна екранувати
зворотну косу риску ('\').

Змінне розширення відбувається звичайним чином всередині обох старий_рядок та новий_рядок
за єдиним винятком, що зворотний слеш використовується, щоб запобігти розширенню курсу долара
знак ('$'), а не попередній знак долара, як зазвичай.

:C/модель/заміна/[1 гВт]
Команда :C модифікатор схожий на :S модифікатор, за винятком старих і нових рядків,
замість простих рядків є розширеним регулярним виразом (див regex(3))
рядок модель і edрядок у стилі (1). заміна. Як правило, перший випадок
шаблону модель у кожному слові значення замінюється на заміна,
Модифікатор '1' змушує заміну застосовувати щонайбільше до одного слова; модифікатор 'g'
спричиняє застосування заміни до такої кількості екземплярів шаблону пошуку модель as
зустрічаються в слові або словах, у яких воно міститься; модифікатор 'W' викликає значення
розглядається як одне слово (можливо, що містить вбудований пробіл). Зверніть увагу, що '1' і
'g' ортогональні; перший визначає, чи потенційно є кілька слів
вплинути на останнє, чи потенційно може відбутися декілька замін у кожній
уражене слово.

Що стосується :S модифікатор, модель та заміна піддаються змінному розширенню
перед аналізом як регулярні вирази.

:T Замінює кожне слово у змінній останнім компонентом.

:u Видаліть сусідні повторювані слова (наприклад унікальний(1)).

:?справжній_рядок:false_string
Якщо ім’я змінної (а не її значення) при аналізі як умовний вираз .if,
оцінює як істину, повертає як його значення справжній_рядок, інакше поверніть
false_string. Оскільки ім'я змінної використовується як вираз, :? має бути першим
модифікатор після самої назви змінної - який, звісно, ​​зазвичай міститься
змінні розширення. Поширеною помилкою є спроба використовувати вирази на кшталт
${NUMBERS:M42:?match:no}
який насправді тестує визначений (ЧИСЛА), щоб визначити, чи відповідають будь-які слова "42".
використовувати щось на кшталт:
${"${NUMBERS:M42}" != "":?match:no}.

:старий_рядок=новий_рядок
Це заміна змінної в стилі UNIX AT&T System V. Це має бути останнім
вказано модифікатор. Якщо старий_рядок or новий_рядок не містять відповідності шаблону
характер % тоді передбачається, що вони прив’язані до кінця кожного слова, лише так
суфікси або цілі слова можна замінити. Інакше % є підрядком старий_рядок
підлягає заміні в новий_рядок.

Змінне розширення відбувається звичайним чином всередині обох старий_рядок та новий_рядок
за єдиним винятком, що зворотний слеш використовується, щоб запобігти розширенню курсу долара
знак ('$'), а не попередній знак долара, як зазвичай.

:@температура@рядок@
Це механізм розширення циклу від OSF Development Environment (ODE).
на відміну від .для розширення циклів відбувається в момент посилання. Призначити температура до кожного слова
у змінній і оцініть рядок. Конвенція ODE така температура слід почати і
закінчуються крапкою. Наприклад.
${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@}

Однак змінна з одним символом часто читається краще:
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}

:Unewval
Якщо змінна не визначена newval є значенням. Якщо змінна визначена, то
повертається існуюче значення. Це ще одна функція виробництва ODE. Це зручно для налаштування
для цілі CFLAGS, наприклад:
${_${.TARGET:T}_CFLAGS:U${DEF_CFLAGS}}
Якщо значення потрібне лише тоді, коли змінна не визначена, використовуйте:
${VAR:D:Unewval}

:Dnewval
Якщо змінна визначена newval є значенням.

:L Ім'я змінної є значенням.

:P Шлях до вузла, який має те саме ім'я, що і змінна, є значенням. Якщо такого немає
вузол існує або його шлях дорівнює нулю, тоді використовується ім’я змінної. Для того, щоб
щоб цей модифікатор працював, ім’я (вузол) повинно бути принаймні на правій стороні a
залежність.

:!CMD!
Вихід запуску CMD є значенням.

Якщо змінна не порожня, вона запускається як команда, а результат стає новим
value.

::=вул
Змінній присвоюється значення вул після заміни. Цей модифікатор та його
варіації корисні в незрозумілих ситуаціях, таких як бажання встановити змінну when
команди оболонки аналізуються. Ці модифікатори присвоєння завжди розширюються до нічого,
тому, якщо вони з’являються в рядку правил самі по собі, має передувати щось, що потрібно зберегти
ганяти щасливий.

"::' допомагає уникнути помилкових збігів зі стилем AT&T System V UNIX := модифікатор і
оскільки заміна завжди відбувається ::= форма маловідповідна.

::?=вул
Що стосується ::= але тільки якщо змінна ще не має значення.

::+=вул
Додавати вул до змінної.

::!=CMD
Призначити вихід CMD до змінної.

:[діапазон]
Вибирає одне або кілька слів зі значення або виконує інші операції, пов’язані з
спосіб поділу значення на слова.

Зазвичай значення розглядається як послідовність слів, розділених пробілом. Дещо
модифікатори пригнічують цю поведінку, через що значення буде розглядатися як одне слово
(можливо, містить вбудований пробіл). Порожнє значення або значення, яке складається
повністю з пробілу, розглядається як одне слово. Для цілей ':[]"
модифікатор, слова індексуються обидва вперед за допомогою натуральних цілих чисел (де індекс 1
представляє перше слово) і назад, використовуючи від’ємні цілі числа (де індекс -1
представляє останнє слово).

Команда діапазон піддається змінному розширенню, а потім розгорнутий результат
тлумачиться наступним чином:

індекс Вибирає одне слово зі значення.

старт..кінець
Вибирає всі слова з старт до кінець, включно. Наприклад, ':[2..-1]' вибирає
всі слова від другого до останнього слова. Якщо старт більше кінець,
потім слова виводяться в зворотному порядку. Наприклад, ':[-1..1]' вибирає все
слова від останнього до першого.

* Примушує наступні модифікатори розглядати значення як одне слово (можливо
містить вбудований пробіл). Аналогічно ефекту «$*» у Борна
оболонки.

0 означає те саме, що ':[*].

@ Примушує наступні модифікатори розглядати значення як послідовність слів із роздільниками
за пробілом. Аналогічно ефекту "$@" в оболонці Борна.

# Повертає кількість слів у значенні.

ВКЛЮЧАТИ ЗАЯВИ, УМОВИ І ДЛЯ ПЕТЛІ


Включення Makefile, умовні структури та цикли for нагадують програмування на C
мова надається в ганяти. Усі такі структури позначаються лінією, що починається з
одна крапка ('.'). Файли входять до будь-якого з них .включатифайл⟩ або .включати
"файл". Змінні між кутовими дужками або подвійними лапками розгортаються, щоб утворити файл
ім'я. Якщо використовуються кутові дужки, очікується, що включений make-файл буде в системі
каталог makefile. Якщо використовуються подвійні лапки, включно з каталогом makefile та будь-яким
каталогів, зазначених за допомогою -I Параметр шукається перед системним каталогом makefile.
Для сумісності з іншими версіями ганяти "включити файл ..." також приймається.

Якщо оператор include записується як .-включати або як .включати потім помилки локалізації та/або
відкриття включаються файлів ігноруються.

Якщо оператор include записується як .включити не тільки виявлення та/або відкриття помилок
включаються файли ігноруються, але застарілі залежності у включеному файлі просто ігноруватимуться
як .MAKE.DEPENDFILE.

Умовним виразам також передує одна крапка як перший символ рядка.
Можливі такі умови:

.помилка повідомлення
Потім повідомлення друкується разом із назвою make-файлу та номером рядка
ганяти вийде.

.експорт змінна ...
Експортувати вказану глобальну змінну. Якщо список змінних не надано, усі глобали
експортуються, за винятком внутрішніх змінних (ті, які починаються з '.'). Це не
постраждалих від -X прапор, тому слід використовувати з обережністю. Для сумісності з
Інше ганяти програми 'export variable=value' також приймається.

Додавання імені змінної до .ЗРОБИТИ.ЕКСПОРТУВАТИ еквівалентно експорту змінної.

.export-env змінна ...
Те саме, що й ".export", за винятком того, що змінна не додається .ЗРОБИТИ.ЕКСПОРТУВАТИ.
Це дозволяє експортувати значення в середовище, яке відрізняється від використовуваного
by ганяти внутрішньо.

.export-literal змінна ...
Те саме, що й .export-env, за винятком того, що змінні у значенні не розгортаються.

. Інформація повідомлення
Повідомлення друкується разом із назвою make-файлу та номером рядка.

.undef змінна
Скасувати визначення вказаної глобальної змінної. Невизначені можуть бути лише глобальні змінні.

.неекспортувати змінна ...
Протилежність «.export». Вказаний глобальний змінна буде видалено з
.ЗРОБИТИ.ЕКСПОРТУВАТИ. Якщо список змінних не надано, усі глобали не експортуються, і
.ЗРОБИТИ.ЕКСПОРТУВАТИ видалено.

.unexport-env
Скасуйте експорт усіх раніше експортованих глобальних елементів і очистіть успадковане середовище
батькові. Ця операція призведе до витоку пам'яті вихідного середовища, тому
слід використовувати помірно. Тестування для .ЗРОБИТИ.РІВЕНЬ якщо 0, то матиме сенс. Також
зауважте, що будь-які змінні, які виникли в батьківському середовищі, повинні бути
явно зберігається за бажанням. Наприклад:

.якщо ${.MAKE.LEVEL} == 0
ШЛЯХ := ${PATH}
.unexport-env
.EXport PATH
. Endif

Це призведе до середовища, що містить лише "PATH", що є мінімально корисним
середовище. Насправді ".MAKE.LEVEL" також буде переміщено в нове середовище.

.увага повідомлення
Повідомлення з префіксом "увага:' друкується разом з назвою make-файлу
і номер рядка.

.якщо [!]вираз [оператор вираз ...]
Перевірте значення виразу.

.ifdef [!]змінна [оператор змінна ...]
Перевірте значення змінної.

.ifndef [!]змінна [оператор змінна ...]
Перевірте значення змінної.

.ifmake [!]мета [оператор мета ...]
Перевірте ціль, що будується.

.ifnmake [!] мета [оператор мета ...]
Перевірте ціль, що будується.

.інше Змінити значення останнього умовного слова.

.elif [!] вираз [оператор вираз ...]
поєднання '.інше"за цим".якщо.

.elifdef [!]змінна [оператор змінна ...]
поєднання '.інше"за цим".ifdef.

.elifndef [!]змінна [оператор змінна ...]
поєднання '.інше"за цим".ifndef.

.elifmake [!]мета [оператор мета ...]
поєднання '.інше"за цим".ifmake.

.elifnmake [!]мета [оператор мета ...]
поєднання '.інше"за цим".ifnmake.

. Endif Завершіть тіло умовного слова.

Команда оператор може бути будь-яке з наступного:

|| Логічне АБО.

&& Логічне І; має більший пріоритет, ніж «||».

Як і в C, ганяти буде оцінювати умовне лише настільки, наскільки це необхідно для визначення його
значення. Для зміни порядку оцінювання можна використовувати дужки. логічний оператор '!"
може використовуватися для логічного заперечення всього умовного. Вона має вищий пріоритет, ніж
"&&.

Значення вираз може бути будь-яке з наступного:

певний Бере ім’я змінної як аргумент і оцінює як істину, якщо змінна була
визначений.

зробити Бере ім’я цілі як аргумент і оцінює як істину, якщо ціль була
зазначені як частина ганяти' командного рядка або було оголошено цільовим призначенням за замовчуванням
(неявно або явно, див .ГОЛОВНИЙ) перед рядком, що містить
умовний.

порожній Бере змінну з можливими модифікаторами та оцінює як істину, якщо розширення
змінної призведе до порожнього рядка.

існує Бере ім’я файлу як аргумент і оцінює як істину, якщо файл існує. The
файл шукається на шляху системного пошуку (див .PATH).

мета Бере ім’я цілі як аргумент і оцінює як істину, якщо ціль була
визначений.

Команди
Бере ім’я цілі як аргумент і оцінює як істину, якщо ціль була
визначено та має пов’язані з ним команди.

вираз також може бути арифметичне або рядкове порівняння. Виконується змінне розширення
з обох сторін порівняння, після чого порівнюються інтегральні значення. Значення є
інтерпретується як шістнадцятковий, якщо йому передує 0x, інакше він десятковий; вісімкові числа
не підтримуються. Підтримуються всі стандартні оператори відношення C. Якщо після
змінне розширення, ліворуч або праворуч від '=="або"!=' оператор не є
інтегрального значення, потім виконується порівняння рядків між розгорнутими змінними. Якщо ні
задано оператор відношення, передбачається, що розгорнута змінна порівнюється
проти 0 або порожній рядок у разі порівняння рядків.

Коли ганяти оцінює один із цих умовних виразів і зустрічає (білий-
розділене пробілом) слово, яке воно не розпізнає, це вираз “make” або “defined”.
застосовується до нього залежно від форми умовного відмінка. Якщо форма '.ifdef',
".ifndef', або'.якщо' застосовується вираз «визначений». Аналогічно, якщо форма є
".ifmake"або".ifnmake, Застосовується вираз “make”.

Якщо умовне значення має значення true, розбір make-файлу продовжується, як і раніше. Якщо це
має значення false, наступні рядки пропускаються. В обох випадках це триває до а
".інше"або". Endif' знаходиться.

Цикли for зазвичай використовуються для застосування набору правил до списку файлів. Синтаксис a
цикл for це:

.для змінна [змінна ...] in вираз
⟨сформулюйте правила⟩
.endfor

Після за вираз оцінюється, розбивається на слова. На кожній ітерації
циклу, береться по одному слову і кожному приписується змінна, по порядку, і ці змінні він має
замінено на правила створення всередині тіла циклу for. Повинна кількість слів
вийти навіть; тобто, якщо є три ітераційні змінні, кількість наданих слів
має бути кратним трьом.

КОМЕНТАРІ


Коментарі починаються з символу хеша ('#') будь-де, крім командного рядка оболонки, і
продовжувати до кінця нового рядка без екранування.

СПЕЦІАЛЬНІ ДЖЕРЕЛА (АТРИБУТИ)


.EXEC Target ніколи не застарів, але все одно завжди виконує команди.

.ігнорувати Ігноруйте будь-які помилки з команд, пов’язаних з цією метою, як би
перед усіма ними ставився тире ('-').

.ЗРОБЛЕНО Позначте всі джерела цієї цілі як актуальні.

.ЗРОБИТИ Виконуйте команди, пов’язані з цією метою, навіть якщо -n or -t варіанти були
вказано. Зазвичай використовується для позначення рекурсивного ганятиs.

.META Створіть мета-файл для цілі, навіть якщо він позначений як .ФОНІЯ, .ЗРОБИТИабо
.СПЕЦІАЛЬНИЙ. Використання разом з .ЗРОБИТИ це найбільш вірогідний випадок. в "мета"
У режимі ціль застаріла, якщо мета-файл відсутній.

.НОМЕТА Не створюйте мета-файл для цілі. Мета-файли також не створюються для
.ФОНІЯ, .ЗРОБИТИабо .СПЕЦІАЛЬНИЙ цілі.

.NOMETA_CMP
Вирішуючи, чи застаріла ціль, ігноруйте відмінності в командах. Це
корисно, якщо команда містить значення, яке завжди змінюється. Якщо кількість
команди змінюються, однак ціль все одно буде застарілою. Той самий ефект
застосовується до будь-якого командного рядка, який використовує змінну .OODATE, який можна використовувати для
з цією метою, навіть якщо в іншому випадку немає потреби або бажання:

пропустити-порівняти-для-деяких:
@echo це буде порівнюватися
@echo це не буде ${.OODATE:M.NOMETA_CMP}
@echo це також буде порівнюватися

Команда :M шаблон пригнічує будь-яке розширення небажаної змінної.

.NOPATH Не шукайте ціль у каталогах, визначених .PATH.

.НЕГОЛОВНИЙ Зазвичай ганяти вибирає першу ціль, яку він зустрічає, як цільову за замовчуванням
створено, якщо не було зазначено жодної мети. Це джерело запобігає існуванню цієї цілі
Вибраний

.НЕОБОВ'ЯЗКОВО
Якщо ціль позначена цим атрибутом і ганяти не можу зрозуміти, як створити
він ігнорує цей факт і вважатиме, що файл не потрібен або вже існує.

.ФОНІЯ Ціль не відповідає дійсному файлу; це завжди вважається таким
застаріло, і не буде створено разом із -t варіант. Суфікс-трансформація
правила не застосовуються до .ФОНІЯ цілі.

.ДОРОЖНИЙ
Коли ганяти переривається, він зазвичай видаляє будь-які частково зроблені цілі. Це
джерело запобігає видаленню цілі.

.РЕКУРСИВНИЙ
Синонім до .ЗРОБИТИ.

.ТИХІ Не повторюйте жодної з команд, пов’язаних з цією метою, точно так, як ніби вони
всім передував знак at ('@').

.ВИКОРИСТАТИ Перетворіть ціль у ганятиВерсія макросу. Коли ціль використовується як a
джерело для іншої цілі, інша ціль отримує команди, джерела та
атрибути (крім .ВИКОРИСТАТИ) джерела. Якщо ціль вже має команди,
.ВИКОРИСТАТИ до них додаються команди цілі.

.ВИКОРИСТАТИ ДО
Точно так само .ВИКОРИСТАТИ, але додайте перед .ВИКОРИСТАТИ ДО цілі команди до цілі.

.ЗАЧЕКАЙТЕ If .ЗАЧЕКАЙТЕ з’являється в рядку залежностей, джерела, що передують йому, створені раніше
джерела, які змінюють його в рядку. Оскільки залежні файли не є
зроблено, поки не буде створено сам файл, це також зупиняє існування залежних
створені, якщо вони не потрібні для іншої гілки дерева залежностей. Так дано:

x: a .ЗАЧЕКАЙТЕ b
луна х
a:
відлуння а
b: b1
відлуння б
b1:
відлуння b1

на виході завжди буде "a", "b1", "b", "x".
Порядок, накладений .ЗАЧЕКАЙТЕ актуально лише для паралельних марок.

СПЕЦІАЛЬНІ ЦІЛІ


Спеціальні цілі не можуть бути включені до інших цілей, тобто вони повинні бути єдиною метою
вказано.

.ПОЧАТОК Будь-які командні рядки, приєднані до цієї мети, виконуються раніше, ніж будь-що інше
зроблено.

.ЗАЛОЖЕННЯ
Це свого роду а .ВИКОРИСТАТИ правило для будь-якої цілі (яке використовувалося лише як джерело).
ганяти не можу знайти іншого способу створення. Використовується лише сценарій оболонки.
Команда .IMPSRC змінна цілі, яка успадковується .ЗАЛОЖЕННЯдля команд 's встановлено значення
власне ім'я цілі.

. END Будь-які командні рядки, приєднані до цієї мети, виконуються після того, як все інше виконується
зроблено.

.ПОМИЛКА Будь-які командні рядки, приєднані до цієї мети, виконуються, коли інша ціль виходить з ладу.
Команда .ERROR_TARGET змінна встановлюється на цільове значення, яке не вдалося. Дивись також
MAKE_PRINT_VAR_ON_ERROR.

.ігнорувати Позначте кожне джерело знаком .ігнорувати атрибут. Якщо джерела не вказано,
це еквівалентно вказівці -i варіант.

.ПЕРЕРВАТИ
If ганяти переривається, команди для цієї мети будуть виконані.

.ГОЛОВНИЙ Якщо ціль не вказана, коли ганяти буде викликано, ця ціль буде створена.

.MAKEFLAGS
Ця ціль надає спосіб вказати прапори для ганяти коли використовується make-файл.
Прапорці ніби набрані в оболонку, хоча -f варіант не матиме ефекту.

.NOPATH Застосувати .NOPATH атрибут до будь-яких зазначених джерел.

.НЕПАРАЛЕЛЬНО
Вимкнути паралельний режим.

.НЕМАЄ_ПАРАЛЕЛЬНОГО
Синонім до .НЕПАРАЛЕЛЬНО, для сумісності з іншими варіантами pmake.

.OBJDIR Джерело – це нове значення для '.OBJDIR'. якщо воно існує, ганяти волі чдір(2) до нього
і оновити значення '.OBJDIR.

.ЗАКАЗАТЬ Названі цілі виготовляються послідовно. Це впорядкування не додає цілі до
список цілей, які необхідно скласти. Оскільки утриманці цілі не будуються
поки сама ціль не може бути побудована, якщо 'a' не побудовано іншою частиною
графік залежностей, це цикл залежностей:

.ЗАМОЖЕННЯ: ba
б: а

Порядок, накладений .ЗАКАЗАТЬ актуально лише для паралельних марок.

.PATH Джерела — це каталоги, у яких потрібно шукати файли, яких немає у файлі
поточний каталог. Якщо джерела не вказано, будь-які раніше вказані
каталоги видаляються. Якщо джерело особливе .DOTLAST ціль, потім
поточний робочий каталог шукається останнім.

.PATH.Суфікс
Люблю .PATH але застосовується лише до файлів із певним суфіксом. Суфікс повинен
були раніше оголошені з .СУФІКСИ.

.ФОНІЯ Застосувати .ФОНІЯ атрибут до будь-яких зазначених джерел.

.ДОРОЖНИЙ
Застосувати .ДОРОЖНИЙ атрибут до будь-яких зазначених джерел. Якщо джерел немає
зазначено, в .ДОРОЖНИЙ атрибут застосовується до кожної цілі у файлі.

.ШЕЛЮРКА Встановлює оболонку що ганяти буде використовуватися для виконання команд. Джерелами є сукупність
поле=значення пар.

ім'я Це мінімальна специфікація, яка використовується для вибору одного з вбудованих
характеристики оболонки; sh, ksh та CSH.

шлях Вказує шлях до оболонки.

має ErrCtl Вказує, чи підтримує оболонка вихід у разі помилки.

перевірка Команда для включення перевірки помилок.

ігнорувати Команда для вимкнення перевірки помилок.

нудьгувати Команда для включення відображення виконаних команд.

тихий Команда для вимкнення відображення виконаних команд.

фільтрувати Вихід для фільтрації після видачі тихий команда. Це типово
тотожна тихий.

errFlag Прапор для передачі оболонки, щоб увімкнути перевірку помилок.

echoFlag Прапор для передачі оболонки, щоб увімкнути відтворення команди.

новий рядок Рядковий литерал для передачі оболонки, що призводить до одного нового рядка
символ, якщо він використовується за межами будь-яких символів цитування.
приклад:

.SHELL: name=ksh path=/bin/ksh hasErrCtl=true \
check="set -e" ignore="set +e" \
echo="set -v" quiet="set +v" filter="set +v" \
echoFlag=v errFlag=e newline="'\n'"

.ТИХІ Застосувати .ТИХІ атрибут до будь-яких зазначених джерел. Якщо джерела не вказано,
.ТИХІ атрибут застосовується до кожної команди у файлі.

.НЕСІЙ Ця ціль запускається, коли файл залежностей містить застарілі записи, маючи .ALLSRC
встановити ім’я цього файлу залежностей.

.СУФІКСИ
Кожне джерело визначає суфікс до ганяти. Якщо джерела не вказані, будь-які
попередньо вказані суфікси видаляються. Дозволяє створювати суфікс-
правила трансформації.

приклад:

.СУФІКСИ: .o
.co:
cc -o ${.TARGET} -c ${.IMPSRC}

НАВКОЛИШНЄ СЕРЕДОВИЩЕ


ганяти використовує такі змінні середовища, якщо вони існують: MACHINE, MACHINE_ARCH,
MACHINE_MULTIARCH, MAKE, MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX, MAKESYSPATH, PWD та
TMPDIR.

MAKEOBJDIRPREFIX і MAKEOBJDIR можна встановити лише в середовищі або в командному рядку на
ганяти а не як змінні makefile; див. опис '.OBJDIR' для більш детальної інформації.

Використовуйте pmake онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

Команди Linux

Ad




×
реклама
❤️Робіть покупки, бронюйте або купуйте тут — безкоштовно, це допомагає зберегти послуги безкоштовними.