GNU Make (запуск программы на нескольких файлах) - PullRequest
0 голосов
/ 06 октября 2011

Я застрял, пытаясь выяснить, как запустить программу для набора файлов с использованием GNU Make:

У меня есть переменная, которая загружает некоторые имена файлов, например:

FILES=$(shell ls *.pdf)

Теперь я хочу запустить программу 'p' для каждого из файлов в 'ФАЙЛАХ', однако я не могу понять, как именно это сделать.

Пример 'Переменная FILES будет выглядеть так:

"a.pdf k.pdf omg.pdf"

Я безуспешно пробовал $ (foreach ,,), и циклы типа #! Bin / bash, похоже, не работают.

1 Ответ

1 голос
/ 06 октября 2011

Вы можете выполнить цикл оболочки внутри команды:

all:
    for x in $(FILES) ; do \                                                
      p $$x ; \
    done

(Обратите внимание, что только первая строка команды должна начинаться с табуляции, остальные могут иметь любые старые пробелы.)

Вот более подход к созданию стиля:

TARGETS = $(FILES:=_target)

all: $(TARGETS)
    @echo done

.PHONY: $(TARGETS)

$(TARGETS): %_target : %
    p $*
...