如何修改Makefile中的全局变量?

时间:2018-10-09 09:13:47

标签: makefile

我的makefile中有类似的内容:

JAR = jar1.jar

run:
    java -cp $(JAR)

我想要做的是让makefile多次执行run,但是每次迭代都使用另一个jar,它们全称为jarx.jar,例如x的范围是1到10

是否可以在不通过语句内部传递jar名称的情况下执行此操作?为了简单起见,我给出的示例非常简单,但是我正在使用的实际makefile已经非常复杂...

1 个答案:

答案 0 :(得分:1)

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,则它应该清理所有标志文件。