我正在编写一个 Makefile 配方,如果且仅当某个文件存在时才需要执行...
这是我所拥有的:
clean:
$(if $(shell test -s ${MFN_LSTF}), \
$(foreach mfn, $(shell cat ${MFN_LSTF}), \
$(MAKE) -f mfd/${mfn} clean;), )
.PHONY: clean
${MFN_LSTF} 包含一个文件名,该文件名包含一列生成文件名列表,假定与此生成文件配方位于同一本地目录中。
我遇到的问题是,foreach
语句总是执行。我希望它仅在文件名${MFN_LSTF}
存在时执行。
我也试过这个:
clean:
[ test -s ${MFN_LSTF} ] &&
for mfn in $(shell cat ${MFN_LSTF}); do
$(MAKE) -f mfd/${mfn} clean
done
.PHONY: clean