Ваш make-файл будет выглядеть примерно так:
code.compressed.js: code.js
compressor -o $@ $<
Обратите внимание, что вторая строка имеет отступ для символа табуляции , а не только для пробелов. Утилита make заботится об этом.
code.compressed.js
- это имя, в которое должен быть записан файл, code.js
- это файл для сжатия, а compressor
- программа, выполняющая сжатие.
Флаг -o
указывает выходной файл в соответствии с соглашением компиляторов и аналогичных инструментов. Ваш может отличаться; проверьте его документацию.
Переменная $@
является сокращением Makefile для «цели этого правила», в данном случае code.compressed.js
. Точно так же, $<
является аббревиатурой для «первой зависимости этого правила». Эти переменные полезны, так что вам не нужно ни повторяться, ни вносить повторяющиеся изменения при переименовании файлов.
Если у вас есть несколько файлов, которые будут сжаты в один выходной файл, вы можете поместить их все в строку зависимости, а затем использовать специальную переменную $^
в правиле сборки , чтобы указать все они:
code.compressed.js: code1.js code2.js
compressor -o $@ $^
В качестве альтернативы, если вы хотите, чтобы они были сжаты по отдельности, вы можете написать шаблонное правило и использовать его для всех них:
TARGETS = code1.cjs code2.cjs code3.cjs
all: $(TARGETS)
%.cjs: %.js
compressor -o $@ $<
По умолчанию строит первую цель, которую видит, в данном случае all
. Список файлов для сжатия определяется содержимым переменной TARGET
. %
- это подстановочный знак, который заменяет генерацию правил для сопоставления имен исходного и целевого файлов.