µM — Минималистичный сборщик проектов

Загрузка и установка

  1. Загрузите сжатый файл um.cpp.gz.
  2. Распакуйте в любой каталог gz -d -c um.cpp.gz >um.cpp.
  3. Откомпилируйте g++ um.cpp -o um

Программу можно запускать прямо с места компиляции, но можно скопировать в /usr/bin или другую директорию из $PATH.

Вызов программы

um [-опции...] цели... < скрипт

Выбор выполняемых действий

-q
Проверить, нужно ли собирать какую-либо цель.
-t
Пометить все цели как «чистые».
-n
Прогнать необходимые рецепты но не исполняет команды в них (полезно с -d1).
-h
-v
Вывести описание утилиты и завершить работу.

Управление выполнением рецептов

-B
Считать все цели «грязными» и выполнять все правила для сборки целей.
-k
Продолжать выполнять рецепты, даже если произошли ошибки.
-Wфайл
Считать файл изменившимся с момента последней сборки и собрать цели зависящие от него.

Опции вывода

-dуровень
Изменить уровень говорливости
  • - — не сообщать ничего кроме сообщений об ошибках;
  • 0 (стоит по умолчанию) — сообщать о ходе процесса сборки (количество выполненного);
  • 1 (включится, если указать опцию без значения) — выводить исполняемые команды;
  • d — вывести базу данных правил.

Написание скрипта

Скрипт сборки представляет набор правил, каждое из которых состоит из цели, требований и рецепта.

цель:[шаблон:] требования
        действия

Простые правила

Заголовок правила состоит из дух частей, разделённых двоеточием. Слева от двоеточия — цель или список целей, разделённых пробелами. Справа — список требуемых файлов. Например:

um.o: um.cpp

Шаблонные правила

Шаблонное правило отличается от простого возможностью использовать подстановочный символ '%', значение которого зависит от цели. Для этого перед требованиями указывается шаблон вида начало%конец, указывающий, что на место символа процента в списке требований и рецепте будет подставляться часть имени цели без указанных начальной и конечной части. Разумеется, при этом указанные части у всех целей должны совпадать.

foo.o bar.o baz.o:%.o:%.c

В данном примере для подстаноски используется часть названия цели без окончания .o. Таким образом после подстановки требование будет foo.c, bar.c и baz.c для соответствующих целей. Точно также подстановка работает и в рецепте. При этом и в списке требований, и в рецепте символ подстановки может использоваться многократно.

Рецепты

Рецепты — это последовательности команд, которые необходимо выполнить для достижения цели. Рецепт записывается после заголовка правила. Каждая строка рецепта должна начинаться с символа горизонтальной табуляции (код 8, \t в си).

При сборке команды (после подстановки %) последовательно посылаются командному интерпретатору.

Сходства и различия с другими системами сборки

Основные отличительные особенности

  • Отсутствуют какие либо вообще средства программирования (кроме ущебного %).
  • В отличие от ninja, может без изменений переваривать списки зависимостей, генерируемые gcc.

Сходства и различия с GNU make

Сходства:

  • Опции -k, -B, -q, -t, -n работают аналогично.
  • Синтаксис правил в целом совпадает.

Различия:

  • Переменные отсутствуют совсем.
  • Вместо $* в правилах можно использовать %.
cifra/um.txt · Последние изменения: 2012/08/17 20:37 — vovanium
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 3.0 Unported