我试图在GNU make中获得可选的依赖项。我试图使用$(通配符)但是得到了不期望的输出:
test.mk:
a:
@echo "a"
b: $(wildcard a)
@echo "b"
@touch a
预期产出:
$ make -f ./test.mk b
b
$ make -f ./test.mk b
a
b
实际输出:
$ make -f ./test.mk b
b
$ make -f ./test.mk b
b
我对$(通配符)缺少什么?
答案 0 :(得分:1)
您不会错过$(wildcard ...)
的任何内容。就是这样
第二次运行a
时,文件make b
已经存在,所以
make
不需要制作它,因此不会运行其配方。
如果你添加:
.PHONY: a
到makefile,如果需要,将生成目标a
,无论是否存在这样的文件
并给出你期望的行为,但从你的帖子中不清楚这是否能真正实现你的目标。