Как я могу изменить глобальную переменную в Makefile? - PullRequest
0 голосов
/ 09 октября 2018

У меня есть что-то вроде этого в моем make-файле:

JAR = jar1.jar

run:
    java -cp $(JAR)

, что я хочу сделать, чтобы make-файл выполнял run несколько раз, но на каждой итерации он использует другой jar, онивсе они называются jarx.jar, где x - от 1 до 10, например

. Можно ли это сделать, не передавая имя jar внутри оператора?Пример, который я привел, ради простоты очень прост, но фактический make-файл, с которым я работаю, уже довольно сложен ...

1 Ответ

0 голосов
/ 09 октября 2018

make использует объекты файловой системы для сохранения состояния.Распространенным решением для отслеживания вещей, которые не видны непосредственно как файлы в текущем каталоге, является создание файла локального флага.

JARS := first.jar 2nd.jar thirdjar.jar

.PHONY: all run
all: $(patsubst %, .made-%,$(JARS))
run: all

.made-%.jar: %.jar
    java -cp $<
    touch $@

Таким образом, существует .made-first.jar сигналов, чтобы сделать эту цель целевойбыло выполнено для обязательного условия first.jar и т. д.

Если у вас есть цель clean или хотя бы realclean, она, вероятно, должна очистить все файлы флагов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...