Назва

make - знаряддя make GNU для підтримки в робочому стані багаточисельних програм

Стисло

make [-f make-файл] [опції]... [адресати]...

Опис

Метою знаряддя make являється автоматичне визначення, які частини великої програми необхідно перекомпілювати, і віддати відповідні команди для їхньої компіляції. В цьому посібнику описано GNU втілення make, написане Richard Stallman і Roland McGrath. В прикладах використовуються C-програми, оскільки вони найпоширеніші, але ви можете вживати make з будь-якими мовами програмування, чий компілятор можна запустити за допомогою команд оболонки. Насправді, make не обмежується програмами. Ви можете використати його для опису якого-завгодно завдання, де якісь файли необхідно автоматично оновити з інших, коли ці інші змінено.

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

Як тільки існуватиме задовільний make-файл, кожний раз, як ви поміняєте щось у вихідних текстах, вистачить простої оболонкової команди

   make

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

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

За звичайних обставин, вам слід назвати ваш make-файл як makefile або Makefile. (Ми радимо назву Makefile, оскільки її краще видно на початку переліку файлів каталогу, поруч з іншими важливими файлами, як скажімо README.) Перше ім'я, що перевіряється, не рекомендовано вживати в більшості випадків. Воно призначено для make-файлів, характерних для make GNU, не зрозумілих іншим версіям make. Якщо make-файл вказано як `-', читатиметься стандартний пристрій вводу.

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

Ключі

-b :

-m : Ці ключі ігноруються заради сумісності з іншими версіями make.

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

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

-f файл : Використати файл як make-файл.

-i : Ігнорує всі помилки команд, виконаних для оновлення файлів.

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

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

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

-l :

-l навантаження : Не розпочинатиме жодних завдань (команд), якщо виконуються інші, і середнє навантаження системи, щонайменше дорівнює вказаному (числу з плаваючою точкою). Без жодних аргументів, скасовує попереднє обмеження навантаження.

-n : Виведе команди, які би було виконано, але не виконуватиме їх.

-o файл : Не чіпати файл, навіть якщо він старший за залежні від нього, так само не перезбирати нічого, пов'язаного зі змінами у файлі. Фактично, файл вважатиметься дуже старим, і його правила ігноруватимуться.

-p : Виведе дані make-файлу (правила і значення змінних), після чого продовжити звичайне виконання, або таке, яке вказано. Це також виводить інформацію про версію make, ніби було вжито ключ -v (дивіться нижче). Щоб вивести дані make-файлу, без перезібрання, скористайтеся з "make -p -f/dev/null".

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

-r : Скасує використання вбудованих, прихованих правил. Також очистить стандартний список суфіксів, вживаних у суфіксних правилах.

-s : Безмовний режим; не друкуватиме команд під час їхнього виконання.

-S : Скасовує дію ключа -k. В цьому, звичайно, немає необхідності, за винятком рекурсивного make, де -k, можливо, успадковано від попереднього make рівнем вище, зі встановленою змінною MAKEFLAGS, або коли MAKEFLAGS вашого середовища включає -k.

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

-v : Виводить версію програми make, а також авторські права, список авторів, і попередження про відсутність гарантії.

-w : Виведе повідомлення з вказівкою робочого каталогу до і після іншої обробки. Це може виявитись корисним для виявлення помилок під час складного гніздування, або рекурсивних викликів make.

-W файл : Прикинутись, ніби адресований файл щойно модифіковано. При використанні з прапорцем -n, це продемонструє, що би сталося, якби ви змінили цей файл. Без -n, це рівнозначно виконанню команди touch(1) перед запуском make, за винятком того, що час модифікації змінено тільки в уяві make .

Дивіться також

Посібник make GNU

Вади

Дивіться розділ "Проблеми і вади" в "Посібнику make GNU".

Автор

Цю сторінку посібника складено Dennis Morse зi Стенфордського Університету, і допрацьовано Roland McGrath.