我的命令获取在参数中传递的文件的依赖项,现在,我想将它像依赖项一样用于Makefile。我做了一些想法:
%.dep: %.txt
./mycommand filedepend ${<} > $@
#Tex compilation
$(OUTPUTDIRECTORY)/%.tex.json: %.txt %.dep $(eval $(shell cat %.dep))
./mycommand export --to="latex" --path="${<}" $<
rm $*.dep
它不起作用,规则的结果应该是:
$(OUTPUTDIRECTORY)/%.tex.json: %.txt %.dep foo.txt bar.txt
./mycommand export --to="latex" --path="${<}" $<
rm $*.dep
但是对于独立文件(我希望所有文件都有一条规则)
答案 0 :(得分:1)
您可以通过以下方式生成依赖项文件:
$(OUTPUTDIRECTORY)/%.tex.json: foo.txt bar.txt
而不仅仅是
foo.txt bar.txt
然后包含依赖项文件:
-include %.dep
减号用于在依赖项文件尚不存在时忽略初始包含错误。您可以尝试省略它时会发生什么,它也可以工作。
完整的例子,没有经过测试,也许我错过了什么,但基本上这应该有效:
-include %.dep
%.dep: %.txt
./mycommand filedepend ${<} > $@ # <-- this must generate the dep file in the correct format
#Tex compilation
$(OUTPUTDIRECTORY)/%.tex.json: %.txt %.dep
./mycommand export --to="latex" --path="${<}" $<
rm $*.dep
这是一个很好的资源,解释了使用gcc生成自动依赖关系,只需用自定义依赖关系生成器替换gcc:http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/