Это команда fmake, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
сделать - поддерживать программные зависимости
СИНТАКСИС
сделать [-ABPSXeiknpqrstv] [-C каталог] [-D переменная] [-d Флаги] [-E переменная] [-f Makefile]
[-I каталог] [-j max_jobs] [-m каталог] [-V переменная] [-x предупреждение_опции]
[переменная=ценностное ] [цель ...]
ОПИСАНИЕ
Команда сделать Утилита - это программа, предназначенная для упрощения обслуживания других программ. Его
входные данные - это список спецификаций, описывающих отношения зависимости между поколением
файлов и программ.
Прежде всего, начальный список спецификаций будет прочитан из системного make-файла,
sys.mk, если это не запрещено -r вариант. Стандарт sys.mk как поставляется с FreeBSD
также обрабатывает Make.conf(5), путь по умолчанию к которому можно изменить с помощью сделать переменная
__MAKE_CONF.
Тогда первый из BSDmakefile, Makefileи Makefile что можно найти в текущем
каталог, каталог объекта (см. .OBJDIR) или путь поиска (см. -I вариант) будет прочитан
для основного списка спецификаций зависимостей. Другой make-файл или их список можно
поставляется через -f параметры). Наконец, если файл .зависеть можно найти в любом из
вышеупомянутых местах, это также будет прочитано (см. мкдеп(1 г.)).
После появления сделать ищет make-файл, его имя имеет приоритет над его местоположением. Для
экземпляр, BSDmakefile в каталоге объектов будет предпочтительнее Makefile в течении
каталог.
Возможны следующие варианты:
-A Сделать ошибки архива нефатальными, вызывающими сделать чтобы просто пропустить остаток или все
заархивируйте и продолжите после печати сообщения.
-B Попытайтесь обеспечить обратную совместимость, выполняя одну оболочку для каждой команды и
выполнение команд для последовательного создания источников строки зависимости. Этот
включен по умолчанию, если -j используется.
-C каталог
Изменения в каталог перед чтением make-файлов или чем-либо еще. Если
с разными -C указаны параметры, каждый интерпретируется относительно предыдущего:
-C / -C и т.д эквивалентна -C / и т.д..
-D переменная
определять переменная быть 1 в глобальном контексте.
-d Флаги
Включите отладку и укажите, какие части сделать распечатать отладку
Информация. Аргумент Флаги одно или несколько из следующих:
A Распечатать всю возможную отладочную информацию; эквивалентно указанию всех
флаги отладки.
a Распечатать отладочную информацию о поиске и кешировании в архивах.
c Распечатать отладочную информацию об условной оценке.
d Распечатать отладочную информацию о поиске и кэшировании в каталогах.
f Вывести отладочную информацию о выполнении циклов for.
g1 Прежде чем что-либо делать, распечатайте входной график.
g2 Распечатайте входной график после выполнения всего или перед выходом в случае ошибки.
j Распечатать отладочную информацию о запуске нескольких оболочек.
l Команды печати в файлах Makefile независимо от того, имеют они префиксы или нет
@ или другими «тихими» флажками. Также известно как «громкое» поведение.
m Распечатать отладочную информацию о создании целей, включая модификацию
даты.
s Распечатать отладочную информацию о правилах преобразования суффиксов.
t Распечатать отладочную информацию о ведении целевого списка.
v Распечатать отладочную информацию о присвоении переменных.
-E переменная
Укажите переменную, значение среды которой (если есть) переопределит назначения макроса
в make-файлах.
-e Укажите, что значения среды переопределяют назначения макросов в make-файлах для всех
переменные.
-f Makefile
Укажите make-файл для чтения вместо файла по умолчанию. Если Makefile это не
абсолютный путь, сделать будет искать его, как описано выше. В случае Makefile is
"-', читается стандартный ввод. Несколько -f могут быть предоставлены опции, а файлы сборки
будут читаться в таком порядке. В отличие от других параметров командной строки, -f не является ни
Хранится в .MAKEFLAGS и не передаются суб-производителям через MAKEFLAGS. Подробнее см. Ниже
подробности об этих переменных.
-I каталог
Укажите каталог, в котором нужно искать файлы сборки и включенные файлы сборки.
Многочисленные -I параметры могут быть указаны для формирования пути поиска. Системный файл makefile
каталог (или каталоги, см. -m option) автоматически добавляется в хвост
этого пути.
-i Игнорировать ненулевой выход команд оболочки в make-файле. Эквивалентно указанию
"-'перед каждой командной строкой в make-файле.
-j max_jobs
Укажите максимальное количество заданий, которые сделать может быть запущен в любое время.
Выключает режим совместимости, если -B также указан флаг.
-k Продолжайте обработку после обнаружения ошибок, но только для тех целей, которые
не зависят от цели, создание которой вызвало ошибку.
-m каталог
Укажите каталог, в котором следует искать системные make-файлы и make-файлы.
включается через стиль <...>. Несколько -m параметры могут быть указаны для формирования поиска
дорожка. Этот путь заменит системный путь по умолчанию,
/ usr / share / mk-freebsd. Путь включения системы всегда будет добавлен к
путь поиска, используемый для включений стиля "..." и поиска в make-файлах (см. -I
опция).
Если имя файла или каталога в -m аргумент (или среда MAKESYSPATH
переменная) начинается со строки "... /", затем сделать будет искать указанный файл
или каталог, указанный в оставшейся части строки аргумента. Поиск начинается
с текущим каталогом Makefile, а затем работает вверх к корню
файловая система. Если поиск успешен, то полученный каталог заменяет
спецификация "... /" в -m аргумент. Если используется, эта функция позволяет сделать в
легко искать в текущем дереве исходных текстов настроенные файлы sys.mk (например, используя
"... / mk / sys.mk" в качестве аргумента). Обратите внимание, что -C которые ранее по команде
линия влияет где -m "... /" поиски.
-n Отображение команд, которые были бы выполнены, но на самом деле не выполняются
их.
-P Сортировка вывода заданного задания и отображение его только после завершения задания.
смешивания вывода параллельных работ вместе. Этот параметр не действует, если -j
тоже используется.
-p Распечатайте только график ввода, не выполняя никаких команд. Вывод такой же, как
-d g1, В сочетании с -f / DEV / нуль, только встроенные правила сделать
отображается.
-Q Будьте очень тихими. Для многоцелевых моделей это приведет к тому, что баннеры файлов не будут
генерируется.
-q Не выполнять никаких команд, но выйдите из 0, если указанные цели актуальны и
1, иначе.
-r Не обрабатывайте системный make-файл.
-S Остановить обработку при обнаружении ошибки. Поведение по умолчанию. Это необходимо для
свести на нет -k вариант во время рекурсивных сборок.
-s Не повторяйте никакие команды во время их выполнения. Эквивалентно указанию '@' до
каждая командная строка в make-файле.
-t Вместо того, чтобы перестраивать цель, как указано в make-файле, создайте ее или обновите
время его модификации, чтобы оно выглядело актуальным.
-V переменная
Печать сделатьпредставление о ценности переменная, в глобальном контексте. Не строить никаких
цели. Можно указать несколько экземпляров этой опции; переменные будут
печатается по одному в каждой строке с пустой строкой для каждой нулевой или неопределенной переменной. Если
переменная содержит '$'то значение будет расширено перед печатью.
-v Будьте очень многословны. Распечатайте любую дополнительную информацию.
-X При использовании -V возможность печатать значения переменных, не раскрывать рекурсивно
ценности.
переменная=ценностное
Установите значение переменной переменная в ценностное .
-x предупреждение_опции
Укажите расширенные параметры предупреждений. Этот параметр можно указывать несколько раз. А
предупреждение_опция может иметь префикс «нет», и в этом случае предупреждение отключается.
В настоящее время доступны следующие варианты:
дирсинтаксис
Предупреждаем, если что-либо, кроме пробелов и комментариев, следует за . Endif or .еще
Директивы.
См. Также .ПРЕДУПРЕЖДАТЬ специальная цель.
В make-файле есть семь различных типов строк: спецификации зависимостей файлов,
команды оболочки, присвоение переменных, операторы include, условные директивы, циклы for,
и комментарии.
Как правило, строки могут продолжаться от одной строки к другой, заканчивая их обратной косой чертой.
('\'). Завершающий символ новой строки и начальный пробел в следующей строке:
сжато в единое пространство.
ФАЙЛОВ ЗАВИСИМОСТЬ ХАРАКТЕРИСТИКИ
Строки зависимости состоят из одной или нескольких целей, оператора и нуля или нескольких источников.
Это создает отношения, в которых цели «зависят» от источников и обычно
создано из них. Определяется точное соотношение между целью и источником.
оператором, который их разделяет. Три оператора следующие:
: Цель считается устаревшей, если время ее изменения меньше, чем у любого
его источников. Источники для цели накапливаются по линиям зависимостей, когда это
используется оператор. Цель удаляется, если сделать прерывается.
! Цели всегда воссоздаются, но только после того, как все источники будут исследованы и повторно созданы.
создается по мере необходимости. Источники для цели накапливаются по линиям зависимостей, когда это
используется оператор. Цель удаляется, если сделать прерывается.
:: Если источники не указаны, цель всегда создается заново. В противном случае цель
считается устаревшим, если какой-либо из его источников был изменен позже, чем
цель. Источники для цели не накапливаются в строках зависимости, когда это
используется оператор. Цель не будет удалена, если сделать прерывается.
Цели и источники могут содержать подстановочные знаки оболочки '?', '*', '[]' И '{}'. В
выражения '?', '*' и '[]' могут использоваться только как часть последнего компонента цели
или источник, и должен использоваться для описания существующих файлов. Выражение "{}" не обязательно
обязательно использоваться для описания существующих файлов. Расширение происходит в порядке каталогов, а не
в алфавитном порядке, как это сделано в оболочке.
SHELL КОМАНДЫ
Каждая цель может быть связана с серией команд оболочки, обычно используемых для создания
цель. Каждая из команд в этом скрипте должен предшествовать табуляции. Пока какие-то
цель может появиться в строке зависимости, только за одной из этих зависимостей может следовать
сценарий создания, если '::'используется оператор.
Если первые символы командной строки - это '@','-', и / или'+', команда обрабатывается
специально. А '@'заставляет команду не воспроизводиться эхом до ее выполнения. А '-'причины
любой ненулевой статус выхода командной строки игнорируется. А '+'заставляет команду быть
выполнен, даже если -n указывается в командной строке.
ПЕРЕМЕННЫЕ НАЗНАЧЕНИЯ
Переменные в сделать очень похожи на переменные в оболочке и по традиции состоят из всех
заглавные буквы. Пять операторов, которые можно использовать для присвоения значений переменным:
следующим образом:
= Присвойте значение переменной. Любое предыдущее значение отменяется.
+= Добавить значение к текущему значению переменной.
?= Присвойте значение переменной, если она еще не определена.
:= Присвойте с расширением, т. Е. Разверните значение перед присвоением его переменной.
Обычно раскрытие не выполняется до тех пор, пока не будет сделана ссылка на переменную.
!= Разверните значение и передайте его оболочке для выполнения и присвойте результат
Переменная. Любые символы новой строки в результате заменяются пробелами.
Любые пробелы перед назначенным ценностное удален; если значение добавляется,
одиночный пробел вставляется между предыдущим содержимым переменной и добавленным
значения.
Переменные раскрываются путем заключения имени переменной в фигурные скобки ('{}') или
круглые скобки ('()') и предшествующий ему знак доллара ('$'). Если имя переменной содержит
только одна буква, фигурные скобки или круглые скобки не требуются. Это короче
форма не рекомендуется.
Замена переменной происходит в два разных момента, в зависимости от того, где находится переменная.
использовал. Переменные в строках зависимости раскрываются по мере чтения строки. Переменные в оболочке
Команды раскрываются при выполнении команды оболочки.
Четыре различных класса переменных (в порядке возрастания приоритета):
Переменные среды
Переменные, определенные как часть сделатьокружающая среда.
Глобальные переменные
Переменные, определенные в make-файле или во включенных make-файлах.
Переменные командной строки
Переменные, определенные как часть командной строки, и переменные, полученные из
Переменная среды MAKEFLAGS или .MAKEFLAGS цель.
Локальные переменные
Переменные, определенные для определенной цели.
Если имя переменной окружения появляется в make-файле в левой части
присваивания, создается глобальная переменная с тем же именем, которая затеняет
бывшие в соответствии с их относительным приоритетом. Окружающая среда в этом случае не изменяется, и
изменение не экспортируется в программы, выполняемые сделать. Однако переменная командной строки
фактически заменяет переменную среды с тем же именем, если последняя существует, т.е.
видны дочерним программам.
Есть семь локальных переменных в сделать:
.ALLSRC Список всех источников для этой цели; также известный как '>.
.АРХИВ Имя архивного файла; также известный как '!.
.IMPSRC Имя / путь к источнику, из которого должна быть преобразована цель (
«Подразумеваемый» источник); также известный как '<.
.ЧЛЕН Имя члена архива; также известный как '%.
.ООДАТЭ Список источников для этой цели, которые были признаны устаревшими; также известный как
"?.
.ПРИСТАВКА Префикс файла, содержащий только часть файла, без суффикса или
предыдущие компоненты каталога; также известный как '*.
.ЦЕЛЬ Название цели; также известный как '@.
Более короткие формы '@','!','<','%','?','>', а также '*'разрешены для обратного
совместимость и не рекомендуются. Шесть переменных '@F','@D','<F','<D','*F', а также
"*D'разрешены для совместимости с make-файлами UNIX AT&T System V и не
рекомендуется.
Четыре локальные переменные могут использоваться в источниках в строках зависимости, потому что они расширяют
к правильному значению для каждой цели на линии. Эти переменные .ЦЕЛЬ, .ПРИСТАВКА,
.АРХИВи .ЧЛЕН.
Кроме того, сделать устанавливает или знает о следующих внутренних переменных или среде
переменные:
$ Одиночный знак доллара «$», т.е. «$$» заменяется одинарным знаком доллара.
ДЕЛАТЬ Имя, которое сделать был выполнен с (ARGV[0]).
.КУРДИР Путь к каталогу, в котором сделать был выполнен. В сделать комплекты утилит
.КУРДИР к каноническому пути, данному получить cwd(3).
.OBJDIR Путь к каталогу, в котором создаются цели. При запуске сделать
ищет альтернативный каталог для размещения целевых файлов. Он попытается
перейти в этот специальный каталог и будет искать в этом каталоге
make-файлы не найдены в текущем каталоге. Следующие каталоги
попробовал по порядку:
1. $ {MAKEOBJDIRPREFIX} / `pwd -P`
2. $ {MAKEOBJDIR}
3. объект $ {MACHINE}
4. OBJ
5. / usr / obj / `pwd -P`
Первый каталог, который сделать успешно заменяется на используется. Если либо
MAKEOBJDIRPREFIX или MAKEOBJDIR устанавливается в среде, но сделать не может
для перехода в соответствующий каталог, тогда текущий каталог будет
используется без проверки оставшейся части списка. Если они не определены и
сделать не может перейти ни в один из оставшихся трех каталогов, тогда
используется текущий каталог. Обратите внимание, что MAKEOBJDIRPREFIX и MAKEOBJDIR
должны быть переменными среды и не должны устанавливаться на сделатькомандная строка.
Команда сделать комплекты утилит .OBJDIR к каноническому пути, данному получить cwd(3).
.MAKEFILE_LIST As сделать читает различные make-файлы, включая файлы по умолчанию и любые
полученный из командной строки и .включают и .включить директивы, их
имена будут автоматически добавлены к .MAKEFILE_LIST Переменная. Они
добавляются прямо перед сделать начинает их разбирать, так что имя
текущий make-файл - последнее слово в этой переменной.
MAKEFLAGS Переменная среды MAKEFLAGS изначально может содержать все, что может
быть уточненным на сделатькомандная строка, включая -f параметры). После
обработки, его содержимое хранится в .MAKEFLAGS глобальная переменная,
хотя любой -f параметры опущены. Тогда все варианты и переменные
задания, указанные на сделатькомандная строка, кроме -f, добавляются к
.MAKEFLAGS Переменная.
Всякий раз, когда сделать выполняет программу, устанавливает MAKEFLAGS в
окружающей среды к текущему значению .MAKEFLAGS глобальная переменная. Таким образом,
если ЗАБЛОКИРОВАТЬСЯ в сделатьокружение содержит любые -f вариантов, их не будет
автоматически передается дочерним программам. В сделать полезность эффективно
отфильтровывает -f параметры из среды и командной строки, хотя
по умолчанию передает остальные параметры дочерним производителям через MAKEFLAGS.
При передаче определений макросов и аргументов флага в MAKEFLAGS
переменная среды, пробелы и символы табуляции цитируются перед ними
с обратной косой чертой. При чтении переменной MAKEFLAGS из среды
все последовательности обратной косой черты и одна из пробелов или табуляции заменяются просто на
их второй символ, не вызывая разрыва слова. Любые другие случаи
обратной косой черты. Группы пробелов без кавычек, табуляции и новой строки
символы вызывают разрыв слов.
.MAKEFLAGS Изначально эта глобальная переменная содержит сделатьтекущие параметры времени выполнения
из среды и командной строки, как описано выше в разделе MAKEFLAGS.
Изменяя содержимое .MAKEFLAGS глобальная переменная, make-файл
может изменять содержимое доступной переменной среды MAKEFLAGS
для всех программ, которые сделать выполняет. Это включает добавление -f параметры).
Текущее значение .MAKEFLAGS просто копируется дословно в MAKEFLAGS в
среда детских программ.
Обратите внимание, что любые параметры, введенные в .MAKEFLAGS ни повлиять на текущее
экземпляр сделать ни мгновенно появиться в собственной копии MAKEFLAGS.
Однако они отображаются в переменной среды MAKEFLAGS программ.
выполняется по сделать. С другой стороны, прямое присвоение MAKEFLAGS
ни один из них не влияет на текущий экземпляр сделать и не передается сделать's
дети. Сравните с .MAKEFLAGS специальная цель ниже.
МФЛАГС Эта переменная предназначена для обратной совместимости и содержит все
параметры из переменной среды MAKEFLAGS плюс любые указанные параметры
on сделатькомандная строка.
.СДЕЛАТЬ.ПИД Идентификатор процесса сделать.
.СДЕЛАТЬ.PPID Идентификатор родительского процесса сделать.
.MAKE.JOB.PREFIX
If сделать работает с -j -v то вывод для каждой цели имеет префикс
token '--- target ---' первой частью которого можно управлять через
.MAKE.JOB.PREFIX.
Например: .MAKE.JOB.PREFIX = $ {. Newline} --- $ {MAKE: T} [$ {. MAKE.PID}] будет
производить токены вроде '--- make [1234] target ---' или
.MAKE.JOB.PREFIX = --- pid [$ {. MAKE.PID}], ppid [$ {. MAKE.PPID}] создаст
такие токены, как '--- pid [56789], ppid [1234] target ---', что упрощает отслеживание
степень достигаемого параллелизма.
.ЦЕЛИ Список целей сделать в настоящее время строится.
.ВКЛЮЧАЕТ В СЕБЯ Посмотреть .ВКЛЮЧАЕТ В СЕБЯ специальная цель.
.LIBS Посмотреть .LIBS специальная цель.
МАШИНА Название архитектуры машины сделать работает, полученный из
Переменная среды MACHINE или через uname(3) если не определено.
MACHINE_ARCH Название архитектуры машины сделать был скомпилирован, определен в
время компиляции.
ВПУТЬ Makefiles может назначать список каталогов, разделенных двоеточиями, для ВПУТЬ, Эти
каталоги будут искать исходные файлы сделать после того, как это закончится
парсинг всех входных make-файлов.
Технология Модификаторы
Расширение переменной может быть изменено, чтобы выбрать или изменить каждое слово переменной (где
«Слово» - это последовательность символов, разделенных пробелами). Общий формат переменной
расширение выглядит следующим образом:
{переменная [: модификатор [: ...]]}
Каждый модификатор начинается с двоеточия и одного из следующих специальных символов. Толстая кишка
может быть экранирован обратной косой чертой ('\').
:C/описания/замена/[1g]
Измените каждое слово значения, заменяя каждое совпадение расширенного регулярного
выражение описания (См. переформатировать(7)) с ed(1) -стиль замена строка.
Обычно первое вхождение шаблона в каждое слово значения -
измененный. Модификатор «1» заставляет замену применяться не более чем к одному слову;
модификатор 'g' заставляет замену применяться к как можно большему количеству экземпляров
шаблон поиска, встречающийся в слове или словах, в которых он находится. Обратите внимание, что "1" и
'g' ортогональны; первый указывает, являются ли несколько слов потенциально
влияет, последнее, могут ли потенциально произойти множественные замены в пределах
каждое затронутое слово.
:E Заменяет каждое слово в переменной его суффиксом.
:H Заменяет каждое слово в переменной всем, кроме последнего компонента.
:L Преобразует переменную в строчные буквы. (не рекомендуется)
:Mописания Выбирайте только те слова, которые соответствуют остальной части модификатора. Стандартная оболочка
Можно использовать подстановочные знаки ('*', '?' и '[]'). Подстановочные знаки
может быть экранирован обратной косой чертой ('\').
:Nописания Это идентично :M, но выбирает все слова, которые не соответствуют остальным
модификатор.
:O Упорядочить каждое слово в переменной в алфавитном порядке.
:Q Заключает в кавычки каждый метасимвол оболочки в переменной, чтобы его можно было передать
безопасно через рекурсивные вызовы сделать.
:R Заменяет каждое слово в переменной всем, кроме его суффикса.
:S/старая_строка/новая_строка/[g]
Измените первое вхождение старая_строка в каждом слове значения переменной,
заменив его новая_строка. Если к последней косой черте
шаблона, все вхождения в каждом слове заменяются. Если старая_строка начинается с
каретка ('^'), старая_строка закрепляется в начале каждого слова. Если
старая_строка заканчивается знаком доллара ('$'), он закрепляется в конце каждого
слово. Внутри новая_строка, амперсанд ('&') заменяется на старая_строка, Любые
символ может использоваться как разделитель для частей строки модификатора. В
символы привязки, амперсанда и разделителя могут быть экранированы обратной косой чертой
('\').
Расширение переменной происходит обычным образом внутри обоих старая_строка и
новая_строка за единственным исключением, что используется обратная косая черта для предотвращения
расширение знака доллара ('$'), а не предшествующего знака доллара, как обычно.
: old_string = new_string
Это подстановка переменных в стиле UNIX в системе AT&T System V. Это должно быть последнее
указан модификатор. Если старая_строка or новая_строка не содержат шаблон
соответствующий символ % то предполагается, что они закреплены в конце
каждое слово, поэтому можно заменять только суффиксы или целые слова. Иначе % это
подстрока старая_строка быть замененным в новая_строка.
:T Заменяет каждое слово в переменной его последним компонентом.
: tl Преобразует переменную в строчные буквы.
: tu Преобразует переменную в заглавные буквы.
:U Преобразует переменную в заглавные буквы. (не рекомендуется)
:u Удалите соседние повторяющиеся слова (например, уник(1 г.)).
ДИРЕКТИВЫ, УСЛОВИЯ, И Для ПЕТЛИ
Директивы, условия и циклы for, напоминающие язык программирования C:
предоставляется в сделать. Все такие структуры обозначаются линией, начинающейся с одной точки.
('.') персонаж. Поддерживаются следующие директивы:
.включают
.включают "файл"
Включите указанный make-файл. Переменные между угловыми скобками или двойными
кавычки расширяются, чтобы сформировать имя файла. Если используются угловые скобки, входящие в комплект
Предполагается, что makefile находится в системном каталоге makefile. Если двойные кавычки
используется, включая каталог makefile и любые каталоги, указанные с помощью -I
опции ищутся перед системным каталогом makefile.
.включить
.включить "файл"
Подобно .включают, но игнорируется, если файл не может быть найден и открыт.
.undef переменная
Отмените определение указанной глобальной переменной. Только глобальные переменные могут быть не определены.
.ошибка сообщение
Немедленно прекратите обработку make-файла. Имя файла makefile,
строка, в которой обнаружена ошибка, и указанное сообщение печатаются на
стандартный вывод ошибок и сделать заканчивается кодом выхода 1. Переменные в
сообщение расширено.
.предупреждение сообщение
Вывести предупреждающее сообщение. Имя файла makefile, строка, в которой отображается предупреждение
было обнаружено, и указанное сообщение выводится на стандартный вывод ошибок.
Переменные в сообщении раскрываются.
Условные выражения используются для определения того, какие части Makefile обрабатывать. Они используются
аналогично условным операторам, поддерживаемым препроцессором C. Следующие условные предложения
поддерживаются:
.если [!]выражение [оператор выражение ...]
Проверить значение выражения.
.ifdef [!]переменная [оператор переменная ...]
Проверить значение переменной.
.ifndef [!]переменная [оператор переменная ...]
Проверить значение переменной.
.ifmake [!]цель [оператор цель ...]
Протестируйте строящуюся цель.
.ifnmake [!]цель [оператор цель ...]
Протестируйте строящуюся цель.
.еще Измените смысл последнего условия.
.элиф [!]выражение [оператор выражение ...]
Сочетание .еще последующей .если.
.elifdef [!]переменная [оператор переменная ...]
Сочетание .еще последующей .ifdef.
.elifndef [!]переменная [оператор переменная ...]
Сочетание .еще последующей .ifndef.
.elifmake [!]цель [оператор цель ...]
Сочетание .еще последующей .ifmake.
.elifnmake [!]цель [оператор цель ...]
Сочетание .еще последующей .ifnmake.
. Endif Завершить тело условного.
Команда оператор может быть одним из следующих:
|| Логическое ИЛИ
&& Логическое И; с более высоким приоритетом, чем '||.
Как и в C, сделать будет оценивать условное выражение только в той мере, в какой это необходимо для определения его
ценить. Скобки можно использовать для изменения порядка оценки. Логический оператор '!"
может использоваться для логического отрицания всего условного выражения. Он имеет более высокий приоритет, чем
"&&.
Значение выражение может быть одним из следующих:
определенный Принимает имя переменной в качестве аргумента и принимает значение true, если переменная имеет
был определен.
сделать Принимает имя цели в качестве аргумента и принимает значение true, если цель была
указано как часть сделатьв командной строке или был объявлен целью по умолчанию
(явно или неявно, см. .ГЛАВНЫЙ) перед строкой, содержащей
условный.
пустой Принимает переменную с возможными модификаторами и принимает значение true, если
расширение переменной приведет к пустой строке.
существует Принимает имя файла в качестве аргумента и принимает значение true, если файл существует. В
файл ищется в системном пути поиска (см. .ДОРОЖКА).
цель Принимает имя цели в качестве аргумента и принимает значение true, если цель была
определены.
An выражение также может быть числовым или строковым сравнением: в этом случае левая часть
должен be расширение переменной, тогда как правая часть может быть константой или переменной
расширение. Расширение переменной выполняется с обеих сторон, после чего полученные значения
сравниваются. Значение интерпретируется как шестнадцатеричное, если ему предшествует 0x, в противном случае оно
десятичный; восьмеричные числа не поддерживаются.
Для сравнения строк можно использовать только символ '==' или '!='операторы, тогда как числовые значения (оба
целое число и с плавающей запятой) также можно сравнить с помощью символа '>','>=','<'И'<="
операторы.
Если оператор отношения (и значение справа) не задан, неявное '!= 0' используется.
Однако будьте очень осторожны при использовании этой функции, особенно когда левая переменная
раскрытие возвращает строку.
После появления сделать вычисляет одно из этих условных выражений и встречает слово, которое
не распознает, к нему применяется выражение «сделать» или «определено», в зависимости от
форма условная. Если форма .если, .ifdef or .ifndef, «определенный»
выражение применяется. Аналогично, если форма .ifmake or .ifnmake, выражение «make»
применены.
Если условное выражение истинно, синтаксический анализ make-файла продолжается, как и раньше. Если оно
принимает значение false, следующие строки пропускаются. В обоих случаях это продолжается до тех пор, пока
.еще or . Endif найден.
Циклы For обычно используются для применения набора правил к списку файлов. Синтаксис
цикл for:
.для переменная in выражение
.endfor
После для выражение оценивается, он разбивается на слова. Итерация переменная is
последовательно устанавливаются для каждого слова и подставляются в правила изготовления внутри тела для
петля.
КОММЕНТАРИИ
Комментарии начинаются с символа решетки ('#') в любом месте, кроме командной строки оболочки, и
продолжайте до конца строки.
SPECIAL ИСТОЧНИКИ
.ИГНОРИРОВАТЬ Игнорируйте любые ошибки команд, связанных с этой целью, точно так же, как если бы
им всем предшествовал тире ('-').
.ДЕЛАТЬ Выполняйте команды, связанные с этой целью, даже если -n or -t кредита
были указаны. Обычно используется для обозначения рекурсивных сделать"ы.
.NOTMAIN Обычная стоимость сделать выбирает первую встреченную цель в качестве цели по умолчанию.
строится, если цель не указана. Этот источник препятствует тому, чтобы эта цель была
выбран.
.ПО ЖЕЛАНИЮ Если цель отмечена этим атрибутом и сделать не могу понять, как
создайте его, он проигнорирует этот факт и предположит, что файл не нужен или уже
существует.
.ДРАГОЦЕННЫЙ После появления сделать прерывается, он удаляет любые частично сделанные цели. Этот источник
предотвращает удаление цели.
.ТИХИЙ Не повторяйте никакие команды, связанные с этой целью, точно так же, как если бы они
всем предшествовал знак at ('@').
.ИСПОЛЬЗОВАТЬ Превратите цель в сделатьверсия макроса. Когда цель используется как
источник для другой цели, другая цель получает команды, источники и
атрибуты (кроме .ИСПОЛЬЗОВАТЬ) источника. Если у цели уже есть команды,
.ИСПОЛЬЗОВАТЬ к ним добавляются целевые команды.
.ЖДАТЬ Если особые .ЖДАТЬ источник отображается в строке зависимости, источники, предшествующие
они создаются до источников, следующих за ним в строке. Петли не ведутся
обнаружены, и цели, образующие петли, будут игнорироваться.
SPECIAL ЦЕЛЕВЫЕ
Специальные цели не могут быть включены в другие цели, т. Е. Они должны быть единственной целью.
указано.
.НАЧИНАТЬ Любые командные строки, прикрепленные к этой цели, выполняются раньше, чем что-либо еще.
сделанный.
.ПО УМОЛЧАНИЮ Это своего рода .ИСПОЛЬЗОВАТЬ правило для любой цели (которая использовалась только как источник), которая
сделать не могу придумать другого способа творить. Используется только сценарий оболочки.
Команда .IMPSRC переменная цели, которая наследует .ПО УМОЛЧАНИЮкоманды установлены в
собственное имя цели.
. END Любые командные строки, прикрепленные к этой цели, выполняются после того, как все остальное
сделанный.
.ИГНОРИРОВАТЬ Отметьте каждый из источников значком .ИГНОРИРОВАТЬ атрибут. Если нет источников
указано, это эквивалент указания -i опцию.
.ВКЛЮЧАЕТ В СЕБЯ Список суффиксов, обозначающих файлы, которые могут быть включены в исходный файл.
Суффикс должен быть уже объявлен с помощью . СУФФИКСЫ; любой суффикс так
объявленный будет иметь каталоги на своем пути поиска (см. .ДОРОЖКА) помещен в
.ВКЛЮЧАЕТ В СЕБЯ специальная переменная, каждой из которых предшествует -I флаг.
.ПРЕРЫВАТЬ If сделать прерывается, команды для этой цели будут выполнены.
.LIBS Это делает для библиотек то, что .ВКЛЮЧАЕТ В СЕБЯ делает для включаемых файлов, за исключением того, что
используемый флаг -L.
.ГЛАВНЫЙ Если цель не указана, когда сделать вызывается, эта цель будет построена. Этот
всегда устанавливается явно или неявно, когда сделать выбирает значение по умолчанию
target, чтобы дать пользователю возможность ссылаться на цель по умолчанию в команде
линии.
.MAKEFILEDEPS
Включите функцию «Переделка файлов Makefile», как описано в ПЕРЕПИСЫВАЯ
МАКФАЙЛЫ раздел ниже.
.MAKEFLAGS Эта цель предоставляет способ указать флаги для сделать когда используется make-файл.
Флаги как бы вводятся в оболочку, хотя -f вариант не будет
эффект. Флаги (кроме -f) и присвоения переменных, указанных в качестве источника
для этой цели также добавляются к .MAKEFLAGS внутренняя переменная. Пожалуйста
обратите внимание на разницу между этой целью и .MAKEFLAGS внутренняя переменная:
указание параметра или присвоения переменной в качестве источника для этой цели будет
влиять на изоферменты печени текущий make-файл и все процессы, которые сделать выполняет.
.MFLAGS То же, что и выше, для обратной совместимости.
.НЕПАРАЛЛЕЛЬ
Отключить параллельный режим.
.NO_PARALLEL
То же, что и выше, для совместимости с другими сделать варианты.
.ПОРЯДОК Названные мишени производятся последовательно.
.ДОРОЖКА Источники - это каталоги, в которых нужно искать файлы, не найденные в
Текущий каталог. Если источники не указаны, любые ранее указанные
каталоги удаляются. Где возможно, использование .ДОРОЖКА предпочтительнее использования
ВПУТЬ Переменная.
.ДОРОЖКАсуффикс
Источники - это каталоги, в которых нужно искать файлы с суффиксами, не
найдено в текущем каталоге. В сделать утилита сначала ищет суффикс
путь поиска, прежде чем вернуться к пути по умолчанию, если файл не найден
там. Эта форма необходима для .LIBS и .ВКЛЮЧАЕТ В СЕБЯ Если вы меняете свою работу и работаете с другим работодателем, то этот новый работодатель должен получить для вас новое разрешение на работу.
.ФОНИЯ Применить .ФОНИЯ атрибут к любым указанным источникам. Цели с этим
атрибут всегда считается устаревшим.
.POSIX Регулировать сделатьповедение в соответствии с применимыми спецификациями POSIX. (Обратите внимание на это
отключает функцию «Переделка файлов Makefile».)
.ДРАГОЦЕННЫЙ Применить .ДРАГОЦЕННЫЙ атрибут к любым указанным источникам. Если нет источников
указано, .ДРАГОЦЕННЫЙ Атрибут применяется к каждой цели в файле.
.ОБОЛОЧКА Выберите другую оболочку. Источники этой цели имеют формат ключ=ценностное .
Команда ключ один из:
путь Укажите путь к новой оболочке.
имя Укажите имя новой оболочки. Это может быть один из
три встроенных оболочки (см. ниже) или любое другое имя.
тихий Укажите команду оболочки, чтобы отключить эхо.
эхо Укажите команду оболочки, чтобы включить эхо.
фильтр Обычно оболочки выводят команду выключения эха перед выключением эха.
Это точная строка, которая будет напечатана оболочкой и является
используется для фильтрации вывода оболочки для удаления команды echo off.
эхофлаг Опция оболочки, включающая эхо.
errFlag Параметр оболочки для включения проверки ошибок. Если проверка ошибок включена,
оболочка должна завершиться, если команда возвращает ненулевой статус.
имеетErrCtl Истинно, если в оболочке есть контроль ошибок.
проверка If имеетErrCtl верно, то это команда оболочки для устранения ошибки
проверка. Если имеетErrCtl ложно, то это шаблон команды
для вывода команд, для которых отключена проверка ошибок. Шаблон
должен содержать "% s".
игнорировать If имеетErrCtl верно, это команда оболочки для устранения ошибки
проверка. Если имеетErrCtl ложно, это шаблон команды для
выполнить команду, чтобы ошибки игнорировались. Шаблон должен
содержат "% s".
цель Это строка метасимволов оболочки.
встроенные команды Это строка, содержащая все встроенные команды оболочки, разделенные
заготовками. В цель и встроенные команды строки используются в режиме совместимости.
Когда командная строка не содержит ни метасимвола, ни начинается с
встроенная оболочка, она выполняется напрямую, без вызова оболочки.
Когда одна из этих строк (или обе) пуста, все команды
выполняется через оболочку.
снят с охраны Если это правда, удалите переменную среды ENV перед выполнением любого
команда. Это полезно для оболочки Korn (КШ).
Значения, которые являются строками, должны быть заключены в двойные кавычки. Логические значения
указано как «T» или «Y» (в любом случае), чтобы означать истину. Принимается любое другое значение
означать ложь.
Есть несколько вариантов использования .ОБОЛОЧКА цель:
· Выбор одной из встроенных оболочек. Это можно сделать, просто указав
имя оболочки с имя ключевое слово. Также возможно изменить
параметры встроенной оболочки, просто указав другие ключевые слова (кроме
для путь).
· Использование другого исполняемого файла для одной из встроенных оболочек. Это делается
указав путь к исполняемому файлу с помощью путь ключевое слово. Если последний
компонент совпадает с именем встроенной оболочки, имя не должно быть
указано; если он другой, необходимо указать имя:
.SHELL: путь = "/ usr / local / bin / sh"
выбирает встроенную оболочку «sh», но выполняет ее из / USR / местные / бен / ш.
Как и в предыдущем случае, есть возможность изменять параметры
встроенная оболочка, просто указав их.
· Использование совершенно другой оболочки. Это делается путем указания всех ключевых слов.
Встроенные оболочки - это «sh», «csh» и «ksh». Поскольку FreeBSD не имеет КШ in
/ бен, неразумно указывать имя= "ksh" без указания пути.
.ТИХИЙ Применить .ТИХИЙ атрибут к любым указанным источникам. Если нет источников
указано, .ТИХИЙ Атрибут применяется к каждой команде в файле.
. СУФФИКСЫ Каждый источник указывает суффикс к сделать. Если источники не указаны, любые
предыдущие указанные суффиксы удаляются.
.ПРЕДУПРЕЖДАТЬ Каждый источник указывает флаг предупреждения, как описано ранее для -x команду
вариант линии. Предупреждающие флаги, указанные в командной строке, имеют приоритет над
флаги, указанные в make-файле. Кроме того, предупреждающие флаги командной строки помещаются в
подделки через переменные среды MAKEFLAGS, чтобы предупредительный флаг
указанное в командной строке, повлияет на все подделки. Несколько флагов могут
быть указанным на едином .ПРЕДУПРЕЖДАТЬ target, разделив их пробелами.
ПЕРЕПИСЫВАЯ МАКФАЙЛЫ
Если специальная цель .MAKEFILEDEPS существует в Makefile, сделать позволяет «Переделать
Makefiles ». После прочтения Makefile и всех файлов, включенных с помощью
.включают or .включить директивы (исходные файлы Makefiles) сделать рассматривает каждый исходный Makefile как
цель и пытается восстановить ее. Проверяются как явные, так и неявные правила, и все исходные коды
При необходимости файлы Makefile обновляются. Если какой-либо из исходных Make-файлов был перестроен, сделать
перезагружается из чистого состояния.
Для предотвращения бесконечных циклов игнорируются следующие целевые файлы Makefile:
· :: цели, у которых нет предпосылок
· ! направлена против
· цели, которые имеют .ФОНИЯ or .ИСПОЛНИТЕЛЬ Атрибуты
· цели без предварительных условий и без команд
При переделке исходных параметров Makefile -t (коснуться цели), -q (режим запроса) и -n (нет exec)
не вступают в силу, если исходный Makefile не указан явно как цель в сделать
командная строка.
Кроме того, системные файлы makefiles и .зависеть не считаются Make-файлами, которые можно
перестроен.
ОКРУЖАЮЩАЯ СРЕДА
Команда сделать утилита использует следующие переменные среды, если они существуют: MACHINE, MAKE,
MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX и MAKESYSPATH.
Используйте fmake онлайн с помощью сервисов onworks.net