Make
Перевод- Make
-
make
make — утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. Чаще всего это компиляция исходного кода в объектные файлы и последующая компоновка в исполняемые файлы или библиотеки.
Утилита использует специальные make-файлы, в которых указаны зависимости файлов друг от друга и правила для их удовлетворения. На основе информации о времени последнего изменения каждого файла make определяет и запускает необходимые программы.
Содержание
Происхождение
До создания make системы сборки (компиляции) ПО Unix обычно состояли из shell-скриптов сборки, сопровождавших исходный код программ.
make была создана Стюартом Фельдманом (Stuart Feldman) в 1977 году в Bell Labs.
В настоящее время существует множество утилит для отслеживания зависимостей, но make — одна из самых широко распространённых, в первую очередь благодаря тому, что она включена в Unix, начиная с версии PWB/UNIX (for Programmer’s Workbench), которая содержала инструменты для разработки программного обеспечения.
Современные версии
Существует несколько версий make, основанных на оригинальной make или написанных с нуля, использующих те же самые форматы файлов и базовые принципы и алгоритмы, а также содержащие некоторые улучшения и расширения. Например:
- BSD make, основанная на работе Адама де Бура (Adam de Boor) над версией make, с возможностью параллельной сборки; в той или иной форме перешла в FreeBSD, NetBSD и OpenBSD.
- GNU make — входит в большинство дистрибутивов GNU/Linux и часто используется в сочетании с GNU build system.
POSIX включает в себя стандарт основных возможностей утилиты make, с той или иной степенью совместимости реализованный в различных версиях make. Как правило, простые make-файлы могут быть успешно использованы различными версиями make.
Использование
make [ -f make-файл ] [ цель ] ...
Если опция -f не указана, используется имя по умолчанию для make-файла — Makefile (однако, в разных реализациях make кроме этого могут проверяться и другие файлы, например GNUmakefile).
make открывает make-файл, считывает правила и выполняет команды, необходимые для создания указанной цели.
$ make love Not war. $ uname -r 7.1-RELEASE-p3
Make-файл
Программа make выполняет команды согласно правилам в специальном файле. Этот файл называется make-файл (makefile, мейкфайл). Как правило, make-файл описывает, каким образом нужно компилировать и компоновать программу.
make-файл состоит из правил и переменных. Правила имеют следующий синтаксис:
цель1 цель2 ...: реквизит1 реквизит2 ... команда1 команда2 ...Правило представляет собой набор команд, выполнение которых приведёт к сборке файлов-целей из файлов-реквизита.
Правило сообщает make, что файлы, получаемые в результате работы команд (цели) являются зависимыми от соответствующих файлов-реквизита. make никак не проверяет и не использует содержимое файлов-реквизита, однако, указание списка файлов-реквизита требуется только для того, чтобы make убедилась в наличии этих файлов перед началом выполнения команд и для отслеживания зависимостей между файлами.
Обычно цель представляет собой имя файла, который генерируется в результате работы указанных команд. Целью также может служить название некоторого действия, которое будет выполнено в результате выполнения команд (например, цель clean в make-файлах для компиляции программ обычно удаляет все файлы, созданные в процессе компиляции).
Строки, в которых записаны команды, должны начинаться с символа табуляции.
Рассмотрим несложную программу на Си. Пусть программа program состоит из пары файлов кода — main.c и lib.c, а также из одного заголовочного файла — defines.h, который подключён в оба файла кода. Поэтому, для создания program необходимо из пар (main.c defines.h) и (lib.c defines.h) создать объектные файлы main.o и lib.o, а затем слинковать их в program. При сборке вручную требуется дать следующие команды:
cc -c main.c defines.h cc -c lib.c defines.h cc -o program main.o lib.o
Если в процессе разработки программы в файл defines.h будут внесены изменения, потребуется перекомпиляция обоих файлов и линковка, а если изменим lib.c, то повторную компиляцию main.о можно не выполнять.
Таким образом, для каждого файла, который мы должны получить в процессе компиляции нужно указать, на основе каких файлов и с помощью какой команды он создаётся. Программа make на основе этих данных выполняет следующее:
- собирает из этой информации правильную последовательность команд для получения требуемых результирующих файлов;
- и инициирует создание требуемого файла только в случае, если такого файла не существует, или он старше, чем файлы от которых он зависит.
Если при запуске make явно не указать цель, то будет обрабатываться первая цель в make-файле, имя которой не начинается с символа «.».
Для программы program достаточно написать следующий make-файл:
program: main.o lib.o cc -o program main.o lib.o main.o lib.o: defines.hСтоит отметить ряд особенностей. В имени второй цели указаны два файла и для этой же цели не указана команда компиляции. Кроме того, нигде явно не указана зависимость объектных файлов от «*.c»-файлов. Дело в том, что программа make имеет предопределённые правила для получения файлов с определёнными расширениями. Так, для цели-объектного файла (расширение «.o») при обнаружении соответствующего файла с расширением «.c» будет вызван компилятор «сс -с» с указанием в параметрах этого «.c»-файла и всех файлов-зависимостей.
Синтаксис для определения переменных:
переменная = значение
Значением может являться произвольная последовательность символов, включая пробелы и обращения к значениям других переменных. С учётом сказанного, можно модифицировать наш make-файл следующим образом:
OBJ = main.o lib.o program: $(OBJ) cc -o program $(OBJ) $(OBJ): defines.hНужно отметить, что вычисление значение переменных происходит только в момент использования (используется так называемое ленивое вычисление). Например, при сборке цели all из следующего make-файла на экран будет выведена строка «Huh?».
foo = $(bar) bar = $(ugh) ugh = Huh? all: echo $(foo)Предположим, что к проекту добавился второй заголовочный файл lib.h, который включается только в lib.c. Тогда make-файл увеличится ещё на одну строчку:
lib.o: lib.h
Таким образом, один целевой файл может указываться в нескольких целях. При этом полный список зависимостей для файла будет составлен из списков зависимостей всех целей, в которых он участвует, создание файла будет производиться только один раз.
См. также
Ссылки
В Википедии есть портал
«Свободное программное обеспечение»- Руководство по GNU make на gnu.org(англ.)
- Руководство по GNU make (версия 3.79)(рус.)
- Руководство по FreeBSD make(англ.)
- Решение проблем, возникающих при выполнении команд
./configure,makeиmake install - Применение GNU make(рус.)
- Эффективное использование GNU Make(рус.)
- Справка по составлению Makefile(рус.)
Wikimedia Foundation. 2010.
См. также в других словарях:
make — 1> форма, конструкция; модель, фасон Ex: a new make of automobile новая модель автомобиля Ex: dresses of a new make платья нового фасона Ex: a coat of first class make пальто отличного покроя Ex: a tool of heavier make более тяжелый инструмент 2> … Новый большой англо-русский словарь
make — make, v. t. [imp. & p. p. {made} (m[=a]d); p. pr. & vb. n. {making}.] [OE. maken, makien, AS. macian; akin to OS. mak?n, OFries. makia, D. maken, G. machen, OHG. mahh?n to join, fit, prepare, make, Dan. mage. Cf. {Match} an equal.] 1. To cause to … The Collaborative International Dictionary of English
make — 1. v.; past and past part. made 1) делать; совершать; сделать 2) про изводить 3) создавать, образовывать; составлять (завещание, документ) 4) гото вить, приготовлять; to make a fire разжигать костер; to make tea завари вать чай 5) составлять,… … Англо-русский словарь Мюллера
Make — (engl. machen, erstellen) ist ein Computerprogramm, das Shellskript ähnlich Kommandos in Abhängigkeit von Bedingungen ausführt. Es wird hauptsächlich bei der Softwareentwicklung eingesetzt. Genutzt wird es beispielsweise, um in einem Projekt, das … Deutsch Wikipedia
make — (engl. machen, erstellen) ist ein Computerprogramm, das Kommandos in Abhängigkeit von Bedingungen ausführt. Es wird hauptsächlich bei der Softwareentwicklung als Programmierwerkzeug eingesetzt. Genutzt wird es beispielsweise, um in Projekten, die … Deutsch Wikipedia
Make — (m[=a]k), v. i. 1. To act in a certain manner; to have to do; to manage; to interfere; to be active; often in the phrase to meddle or make. [Obs.] [1913 Webster] A scurvy, jack a nape priest to meddle or make. Shak. [1913 Webster] 2. To proceed;… … The Collaborative International Dictionary of English
Make — Cet article a pour sujet le logiciel intitulé make. Pour une définition du mot « make », voir l’article make du Wiktionnaire. make est un logiciel traditionnel d UNIX. C est un « moteur de production » : il sert à appeler … Wikipédia en Français
Make — Saltar a navegación, búsqueda make es una herramienta de generación o automatización de código, muy usada en los sistemas operativos tipo Unix/Linux. Por defecto lee las instrucciones para generar el programa u otra acción del fichero makefile.… … Wikipedia Español
make — es una herramienta de generación o automatización de código, muy usada en los sistemas operativos tipo Unix/Linux. Por defecto lee las instrucciones para generar el programa u otra acción del fichero makefile. Las instrucciones escritas en este… … Wikipedia Español
Make — Make, n. Structure, texture, constitution of parts; construction; shape; form. [1913 Webster] It our perfection of so frail a make As every plot can undermine and shake? Dryden. [1913 Webster] {On the make}, (a) bent upon making great profits;… … The Collaborative International Dictionary of English
Фильмы
- Наш Никита Сергеевич., 1961 — Биографический фильм о Никите Сергеевиче Хрущеве.
- Ночь над Китаем, 1971 — В фильме разоблачается предательский курс маоизма.
- Сургут. Что дальше. . ., 1989 — О встрече комсомольских лидеров ряда организаций страны в Сургуте в январе 1989 года.
Книги
- Make-Up and Costume for Television (Media Manuals) (Media Manuals), Jan Musgrove Подробнее Купить за 2138.6 руб
- Make Money as a Buyer's Agent: Double Your Commissions by Working with Real Estate Buyers, Chantal Howell-Carey, Bill Carey Подробнее Купить за 874.3 руб
- Make Build Autotools. Управление программными проектами, В. П. Солдатов Подробнее Купить за 231 руб
DVD
- Paul McCartney: The Love We Make (Blu-ray), , Купить за 926 руб
- Paul McCartney: The Love We Make, , Купить за 662 руб
- Fatboy Slim. The Greatest Hits - Why Make Videos, Россия, 2006 Купить за 349 руб
Музыка
- Pretty Girls Make Graves. Good Health (Pretty Girls Make Graves), 2004 Купить за 867 руб
- Pretty Girls Make Graves. Elan Vital (Pretty Girls Make Graves), 2006 Купить за 681 руб
- James Last. Make The Party Last (James Last), 2000 Купить за 283 руб
Торренты
- (Post Rock / Progressive Rock) Do Make Say Think - Do Make Say Think / 1998, FLAC (tracks+.cue), lossless Скачать torrent файл (Indie, Post-Rock & Post-Punk (lossless))
- (Happy hardcore/Pop-punk) Looks To Make History - Looks To Make History [EP] - 2008, MP3 (tracks), 320 kbps Скачать torrent файл (Punk (mp3))
- (Post Rock) Shapes Stars Make - Shapes Stars Make / 2008, FLAC (tracks+.cue), lossless Скачать torrent файл (Indie, Post-Rock & Post-Punk (lossless))



