nixp.ru v3.0

17 октября 2017,
вторник,
23:26:39 MSK

DevOps с компанией «Флант»
denes написал 16 января 2013 года в 13:53 (1223 просмотра) Ведет себя неопределенно; открыл 5 тем в форуме, оставил 14 комментариев на сайте.

Просмотр файла манифеста как сделать?cd /usr/ports/net/mpd5makemake installmake cleanА без сд как? команда pkg_version. Впрочем, она требует наличия индексного файла. как найти?

fhunter

Пробелы и переводы строки люди, естественно, придумали зря.

 

Так вот — у make есть ключ -C

make -C /usr/ports/net/mpd5 


PS. Люди, учите русский язык, или хотя бы перечитывайте ваши вопросы перед тем, как их отправлять.

denes

И как использовать ?

fhunter
denes

Типа это  СИНТАКСИС

make [-f имя_файла] [-BeiknpPqrstuw] [имена]

ОПИСАНИЕ

Утилита make позволяет программисту сопровождать, обновлять и пересоздавать группы компьютерных программ. make выполняет команды из файла управления проектом (makefile) для обновления одного или нескольких целевых имен (имена обычно представляют собой программы). Если опция -f не указана, последовательно делаются попытки использовать makefile, Makefile и файлы системы управления исходным кодом (Source Code Control System — SCCS) s.makefile и s.Makefile. Если в качестве makefile указан -, берется стандартный входной поток. Можно указывать несколько пар аргументов -f makefile.

make обновляет цель, только если цели, от которых она зависит, более новые, чем сама цель. Все необходимые для построения цели файлы рекурсивно добавляются к списку целей. Отсутствующие файлы предполагаются устаревшими.

В файлы управления проектом можно включать следующий список директив, изменяющих поведение make. Они используются в файлах управления проектами как цели:.DEFAULT: Если файл должен быть сделан, но для этого нет явных команд или соответствующих правил построения, используются команды, ассоциированные с целью .DEFAULT, если она существует.

.IGNORE: Действует так же, как опция -i.

.MUTEX: Устанавливает последовательность обновления указанных целей (см. подраздел «Параллельный make» ниже).

.PRECIOUS: Цели, от которых зависит запись .PRECIOUS, не будут удалены при выходе или нажатии клавиши выхода или прерывания.

.SILENT: Действует так же, как опция -s.

Опции make перечислены ниже:-B Разбивать результаты выполнения параллельного make на соответствующие блоки для удобства чтения.

-e Переменные среды переопределяют присваивания в файлах управления проектами.

-f имя_файла Указывает имя файла управления проектом.

-i Игнорировать коды ошибок, возвращаемые вызываемыми программами.

-k Отказаться от обработки текущей записи, если она закончилась неудачно, но продолжить обработку других ветвей, не зависящих от этой записи.

-n Режим без выполнения. Команды выдаются, но не выполняются. Печатаются даже командные строки, начинающиеся с @.

-p Выдать полный набор макроопределений и описаний целей.

-P Обновлять одновременно несколько целей. Количество одновременно обновляемых целей определяется переменной среды PARALLEL и наличием директив .MUTEX в файлах управления проектами.

-q Запрос. make возвращает нулевой или ненулевой код возврата в зависимости от того, обновлен или нет целевой файл.

-r Не использовать встроенные правила.

-s «Молчаливый» режим. Не выдавать строки команд перед выполнением.

-t Обновить дату последнего изменения («затронуть» — touch) у целевых файлов (тем самым они будут считаться обновленными) вместо выполнения обычных команд.

-u Безусловно пересоздать цели, игнорируя все временные отметки.

-w Подавить выдачу предупреждений. Фатальные сообщения по-прежнему будут выдаваться.

Создание файла управления проектом (makefile)

Файл управления проектом, указываемый в опции -f (или используемый по умолчанию), — это файл специальной структуры, содержащий явные инструкции по обновлению и пересозданию программ, а также последовательность записей, определяющих зависимости. Первая строка записи представляет собой непустой список целей через пробел, за которым идет двоеточие (:), а затем (возможно пустой) список требуемых файлов или файлов, от которых зависит цель. Текст после; и все последующие строки, начинающиеся с символа табуляции, являются командами интерпретатора shell, которые необходимо выполнить для обновления цели. Первая непустая строка, не начинающаяся с символа табуляции или #, задает новую зависимость или определение макроса. Команды интерпретатора shell можно переносить на следующую строку, указывая обратную косую (\) перед переводом строки. Все введенное в команде (за исключением начального символа табуляции) передается непосредственно интерпретатору без изменений. Так,

echo a\

b

выдаст

ab

точно так же, как и в командном интерпретаторе.

Комментарии начинаются со знака # и продолжаются до перевода строки; при этом в них включаются последовательности обратная косая-перевод строки.

Следующий файл управления проектом утверждает, что 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

Строки команд выполняются по очереди, каждая в отдельном командном интерпретаторе. Чтобы указать, какой командный интерпретатор должна использовать утилита make для выполнения команд, можно использовать переменную среды SHELL. По умолчанию используется /usr/bin/sh. Первым одним или двумя символами команды могут быть: @, -, @- или -@. Если указан символ @, выдача команды подавляется. Если указан символ -, make игнорирует ошибку. При выполнении каждая строка печатается, если только не указана опция -s, в файле управления проектом нет директивы .SILENT: и если начальная последовательность символов команды не содержит символа @. Опция -n вызывает печать без выполнения; однако, если командная строка содержит подстроку $(MAKE), она всегда выполняется (см. обсуждение макроса MAKEFLAGS в разделе «Среда» ниже). Опция -t (затронуть) обновляет дату модификации файла, не выполняя никаких команд.

Команды, возвращающие ненулевой код возврата, обычно прерывают работу make. Если указана опция -i, в файле управления проектом имеется запись .IGNORE: или если начальная последовательность символов содержит символ -, ошибка игнорируется. Если указана опция -k, обработка текущей записи прекращается, но продолжается для других ветвей, не зависящих от соответствующей цели.

Прерывание или выход ведет к удалению цели, если только цель не указана в списке зависимостей директивы .PRECIOUS.

Параллельный make

Если утилита make вызывается с опцией -P, она путается строить одновременно, параллельно несколько целей. (Это делается с помощью стандартного механизма многозадачности системы UNIX, который позволяет одновременно выполнять несколько процессов.) Для файла управления проектом, показанного в примере в предыдущем разделе, будут созданы процессы для параллельного построения a.o и b.o. После завершения процессов будет построен файл pgm.

Количество целей, которое make попытается построить параллельно, определяется значением переменной среды PARALLEL. Если указана опция -P, но переменная PARALLEL не установлена, make будет пытаться построить не более двух целей одновременно.

Для указания определенной последовательности обновления целей можно использовать директиву .MUTEX. Эта возможность пригодится, когда две или более цели изменяют общий файл вывода, например, при добавлении модулей в библиотеку или при создании промежуточного файла с одним и тем же именем, как делают утилиты lex и yacc. Если бы файл управления проектом в примере из предыдущего раздела содержал директиву .MUTEX вида

.MUTEX: a.o b.o

это не позволило бы make строить a.o и b.o параллельно.

denes

Не смешно !

fhunter

Ну извините, не тот раздел man-а открылся.

Объясняю. в официальном мане, опция -C описана.

просто добавляете её в ту командную строчку для make, которую собирались запустить. с путём до каталога, где собственно лежит makefile.

denes

Не извеню