如何编写一个不在Makefile中生成目标文件的中间规则,以便正确检查依赖关系?
所以我有这样的事情:
install_script: xxx.sql
psql -f $?
dump.txt: install_script
psql -c 'select * from xxx;' > $@
我想确保install_script
仅在make dump.txt
时才运行,当且仅当xxx.sql
被修改时。
答案 0 :(得分:1)
AFAIK,最简单的方法是使用虚拟中间文件:
.xxx.sql.timestamp: xxx.sql
psql -f $?
@touch $@
dump.txt: .xxx.sql.timestamp
psql -c 'select * from xxx;' > $@
如果您想无条件地强制转储查询结果(即使所有内容都是最新的),请添加.PHONY
目标:
.PHONY : dump.txt
答案 1 :(得分:0)
您可能正在寻找makefile中的phony targets。 所以看起来应该是这样的:
.PHONY: dump.txt
dump.txt: install_script