Scroll to navigation

make(1) 2007-10-27-16:31 make(1)

Назва

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-файл вказано як `-', читатиметься стандартний пристрій вводу.

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

Ключі


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

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

Посібник make GNU

Вади

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

Автор

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

2007-10-27-16:31 © 2005-2007 DLOU, GNU FDL