Makefile

Werdna

У кого есть документация сабжа? (Юникс)

Beshlan

/usr/doc

Werdna

хм, а у меня нет...
это какой пакет под Линуксом (и какой под Фришкой)

Pchela2008

под фрей родной make входит в систему, GNUтый - devel/gmake, если не ошибаюсь.

Beshlan

MAKE(1)
НАЗВАНИЕ
make - поддержка, обновление и восстановление групп программ
СИНТАКСИС
make [-f make-файл] [-p] [-i] [-k] [-s] [-r] [-n] [-b] [-e] [-u] [-t] [
[целевой_файл ...]
ОПИСАНИЕ
Утилита make позволяет поддерживать, изменять и регенерировать группы программ. Ниже приведено краткое описание всех опций и некоторых специальных имен:
-f make-файл
Задание имени файла с описаниями.
-p
Вывести все макроопределения, а также описания зависимостей и операций для создания целевых_файлов.
-i
Игнорировать коды ошибок, возвращаемых запускаемыми программами. Этот режим устанавливается также при появлении в файле описаний специального целевого имени .IGNORE.
-k
При ошибке прекращать выполнение команд, связанных с текущей зависимостью, но продолжать обработку других зависимостей.
-s
Не выводить командные строки перед их выполнением. Этот режим устанавливается также при появлении в файле описаний специального целевого имени .SILENT.
-r
Не использовать встроенные правила.
-n
Выводить команды, но не выполнять их. Выводятся даже команды, которые начинаются с @.
-b
Режим для совместимости со старыми версиями make-файлов.
-e
В первую очередь используются переменные окружения, а не одноименные макросы make-файлов.
-u
Вызывает безусловное обновление.
-t
"Массаж" целевых_файлов: время их создания устанавливается равным текущему времени; команды, предназначенные для получения целевых_файлов, не выполняются.
-q
Запрос. Команда make возвращает нулевой или ненулевой код завершения в зависимости от того, нужно ли обновлять целевые_файлы (0, если не нужно). Печать команд подавляется, даже если присутствует опция -n.
.DEFAULT
Если должен быть сделан файл, но нет ни явных команд, ни соответствующих встроенных правил, то используются команды, ассоциированные со специальным целевым именем .DEFAULT, если они существуют.
.PRECIOUS
Файлы, которые зависят от этого специального имени, не удаляются, если работа команды make была прервана или прекращена.
.SILENT
Дает тот же эффект, что и опция -s.
.IGNORE
Дает тот же эффект, что и опция -i.
Make выполняет команды из make-файла для обновления одного или нескольких целевых_файлов, имена которых указаны в команде. Если отсутствует опция -f, то ищутся файлы makefile, Makefile, и файлы системы управления исходными текстами (SCCS) s.makefile и s.Makefile в указанном порядке. Если вместо make-файла указан -, то это означает стандартный ввод. В командной строке может встретиться более чем одна пара -f make-файл.
Команда make обновляет целевой_файл только в том случае, если файлы, от которых он зависит, оказываются новее в смысле времени модификации (кроме случая, когда была использована опция -u с целью вызвать безусловное обновление). Все файлы, от которых зависит целевой_файл добавляются рекурсивно к списку целевых файлов. Отсутствующие файлы считаются требующими обновления.
Make-файл состоит из последовательности разделов, определяющих зависимости. Первая строка раздела - непустой список разделенных пробелами имен целевых файлов, затем знак :, затем (возможно пустой) список необходимых файлов или зависимостей. Текст, следующий за ; и все последующие строки, начинающиеся с табуляции, представляет собой команды shell'а, которые необходимо выполнить для обновления целевого файла. Первая строка, которая не начинается с табуляции или #, открывает новое описание зависимости или макроопределение. Команды shell'а могут быть продолжены в следующей строке, если последним символом текущей строки поставить \. Все, что выводит make, кроме начальных символов табуляции, передается shell'у в исходном виде. Например,
echo a\
b
даст
ab
как если бы команда выполнялась просто shell'ом.
Символы # и перевод_строки обрамляют комментарии.
В приведенном ниже make-файле определяется, что pgm зависит от двух файлов: a.o и b.o, и что они в свою очередь зависят от соответствующих исходных файлов (a.c и b.c) и общего файла incl.h:
pgm: a.o b.o
cc a.o b.o -o pgm
a.o: incl.h a.c
cc -c a.c
b.o: incl.h b.c
cc -c b.c
Командные строки выполняются по одной, каждая своим собственным shell'ом. Чтобы указать, каким shell'ом выполнять команду, можно использовать переменную окружения SHELL. Первые один или два символа команды могут быть следующими: -, @, -@, @-. Если присутствует @, то подавляется вывод команды. При указании символа - make игнорирует ошибки. Команда перед ее выполнением выводится, если только не указана опция -s, или в make-файле отсутствует вход .SILENT:, или в начале команды не стоит знак @. Опция -n специфицирует вывод команд без их выполнения; однако, если командная строка содержит текст $(MAKE то она всегда выполняется (см. MAKEFLAGS в пункте Окружение). Если указана опция -t, то изменяется время последней модификации файлов без выполнения каких-либо команд. К сожалению, при этом не изменяются даты сохранения файлов в библиотеках (см. Библиотеки а меняется только время последней модификации библиотеки.
Команды, возвращающие ненулевой код завершения, обычно прекращают выполнение make. Если же указана опция -i или в make-файле присутствует вход .IGNORE:, или командная строка начинается со знака -, то ошибки игнорируются. Если указана опция -k, то прекращается обработка текущего раздела, но продолжаются действия, которые не зависят от целевого файла этого раздела. В конце выводится сообщение о первоначальных целях, которые не были достигнуты.
Опция -b позволяет без ошибок выполнять make-файлы, написанные для старой версии make'а. Отличие состоит в том, что в новой версии все строки зависимостей должны содержать (возможно пустые или задаваемые по умолчанию) команды, связанные с ними. В предыдущей версии считалось, что неспецифицированная команда является пустой.
Сигналы прерывания и выхода вызывают уничтожение целевого файла, если только он не зависит от специального имени .PRECIOUS.
Окружение
Команда make читает окружение. Все переменные окружения обрабатываются как макроопределения. Все они читаются и обрабатываются до обработки make-файла и после обработки встроенных правил; поэтому макроопределения из make-файла перекрывают макроопределения из окружения. Если задана опция -e, то переменные из окружения перекрывают макроопределения из make-файла. Суффиксы и связанные с ними правила из make-файла перекрывают описания суффиксов во встроенных правилах.
Переменная окружения MAKEFLAGS обрабатывается как содержащая любую из допустимых опций (кроме -f и -p описанных для командной строки. Далее, если такой переменной в окружении нет, то make создает ее, помещая в нее все указанные в командной строке опции, и передает ее всем запускаемым им командам. Таким образом, MAKEFLAGS всегда содержит текущие опции. Эта возможность очень полезна, если возникла необходимость отладить make-файл для проекта, состоящего из подсистем, для которых есть свои собственные make-файлы. Как уже отмечалось выше (при использовании опции -n) команда $(MAKE) выполняется всегда, следовательно, можно выполнить make -n р

zsn66

Документация по GNU make идет в поставке в формате texinfo
info make
Там страниц под 1000 наверное
Оставить комментарий
Имя или ник:
Комментарий: