Прочетете онлайн Изкуството на Unix програмирането от Реймънд Ерик Стивън - RuLit - Страница 217

dist

Създаване на архив от изходен код (обикновено с помощта на програматаtar(1)),който може да бъде разпространен като единична единица и използван за изграждане на програмата отново на друга машина. Целта на тази директива е да създаде еквивалентен код, който зависи отall, така че правилотоmake dist автоматично да възстанови целия проект, преди да създаде неговия архив за разпространение. Това е добър начин да се избегнат грешки, които водят до това, че дистрибуцията не включва наистина необходимите производни файлове (напр. обикновен текстов файл README вfetchmail,, който всъщност се генерира от HTML файл).

distclean

Отхвърля всичко освен това, което разработчикът би включил, ако изходният код беше пакетиран сmake dist. Действието може да бъде същото катоmake clean, ноdistcleanвсе още трябва да бъде включено като отделно правило за документиране на случващото се. Ако действието се различава, то обикновено се различава чрез изхвърляне на локални конфигурационни файлове, които не са част от нормалната последователност за изграждане наmake all (като последователността, генерирана от помощната програмаautoconf( 1 )\ autoconf(1), разгледана в Глава 17).

realclean

Отхвърля всичко, което може да бъде възстановено с дадения makefile. Действието може да бъде същото катоmake distclean, ноrealcleanвъв всеки случай трябва да бъде включено като отделно правило за документиране на случващото се. Ако действието е различно, то обикновено е различно чрез изхвърляне на файлове, които са производни, но (по някаква причина) така или иначе се изпращат с изходния код на проекта.

инсталирайте

Инсталиране на изпълними файлове и документация на проекта в системни директории по такъв начин, че да са достъпни за потребителите (обикновено тази операция изисква администраторски права). Инициализиране или актуализиране на бази данни или библиотеки, които изпълнимите файлове трябва да работят.

деинсталиране

Премахване на файлове, инсталирани в системни директории с командатаmake install (обикновено тази операция изисква администраторски права). Тази операция трябва да бъде точно обратното наmake install. Това правило означава спазване на конвенциите, които опитните потребители на Unix търсят, тъй като те са доказателство за добър дизайн. Напротив, липсата му е в най-добрия случай небрежна и (например, когато по време на инсталацията се създават големи файлове с база данни) може да се разглежда като некомпетентност и невнимание.

Работещи примери за всички стандартни цели са достъпни за изучаване във файлаfetchmail shaka.Изучаването им ще ви позволи да разберете модела и да проучите структурата напакета fetchmail по-пълно.Едно от предимствата на използването на тези стандартни правила е, че те образуват пълна схема на проекта.

Не е необходимо обаче разработчикът да се ограничава до тези правила. След като разработчикът се научи как да използваmake,, програмистът все по-често използва механизма makefile за автоматизиране на малки задачи, които зависят от състоянието на файловете на проекта. Makefile на проекта е удобна централна точка за организиране на тези задачи. Използването му ги прави лесни за научаване и избягва претрупването на работното пространство на проекта с малки произволни сценарии.

15.4.4. Генериране на Makefile

Една от неочевидните ползиUnixmakeв сравнение с базите данни за зависимости, вградени в много IDE е, че makefiles са обикновени текстови файлове, т.е. файлове, които могат да бъдат създадени от програми.

В средата на 80-те години на миналия век беше доста обичайно големите Unix софтуерни дистрибуции да имат сложни персонализирани шел скриптове, които изследват околната среда и използват събраната информация за създаване на потребителски makefiles. Такива специални конфигуратори достигнаха абсурдни размери. Авторът на тази книга веднъж написа такъв конфигуратор, състоящ се от 3000 реда шел код, почти два пъти повече от всеки отделен модул на програмата, за която е предназначен, и това не беше необичайно.

Един ден беше решено да се сложи край на това и мнозина в общността се заеха да напишат инструменти, които да автоматизират част или целия процес на поддръжка на makefile. Тези инструменти обикновено са предназначени за решаване на два проблема.