Вот минимальный make-файл для использования pandoc для компиляции md
в pdf
. Команда make watch
наблюдает за измененными md
файлами (с использованием fswatch
) и триггерами make
, если это так.fswatch-ing список файлов, составляющих только измененные
SRCS=$(wildcard *.md)
PDFS=$(SRCS:.md=.pdf)
all: $(PDFS)
%.pdf: %.md
@pandoc $< -o [email protected]
watch: $(SRCS)
@fswatch -o $^ | xargs -n1 -I{} make
В настоящее время watch
не очень избирательно: даже если только один md
файл изменен, он строит всех возможных целей (все в PDFS
). Мне нужна версия этого кода, которая отслеживает все файлы md
для изменений, но только строит pdf
для измененmd
файлов. (Я понимаю, что это совершенно бессмысленно для настоящего случая, но это полезно в другом, более сложном случае использования.)
Спасибо, но это, похоже, не работает: make [1]: *** Нет правила, чтобы сделать цель «1». Стоп. –
Я думаю, вам не нужно действительно '{}'. Ну, я не знаю, как работает fswatch. Очевидно, что что-то не так ожидалось с его выходом (например, это не просто печать списка файлов, которые были изменены одним именем файла в строке). Я рекомендую вам добавить параметр '-t' или' --verbose' в 'xargs' и посмотреть, что на самом деле вызывает команда xargs. Также вы должны запустить команду 'fswatch' самостоятельно из командной строки и посмотреть на вывод, который он генерирует. – MadScientist
Я просто посмотрел онлайн-документы: http://emcrisostomo.github.io/fswatch/doc/1.9.3/fswatch.html/Tutorial-Introduction-to-fswatch.html#Detecting-File-System-Changes Вы не Я не хочу «-o», ясно. Это просто печатает количество изменений. Вам нужен основной режим, который печатает фактически измененные файлы. – MadScientist