此问题建立在How to generate a source file when building using autotools
之上我想做点什么
<generated-c-files>: input.txt generator
./generator input.txt # produces <generated-c-files>
当生成的c文件具有先验已知的固定名称时,较早的问题回答了这种情况。但是,根据input.txt的内容,我生成了可变数量的可变名称文件。用autotools做这件事的好方法是什么?
我正在使用通配符来获取所有生成的文件,这些文件放在一个构建文件夹中。但是,这需要我make
两次,其中第一个make
无法链接。这似乎是因为在执行generator
之前评估通配符。我想用一个成功的make
来做,最好不要使用通配符。
答案 0 :(得分:0)
我想说,因为解析input.txt
的责任被封装在generator
中,所以generator
可以告诉你要生成哪些文件。它应该有一些选项,所以你可以做一些事情,例如:
GENERATED_C_FILES := $(shell ./generator --list-output-files input.txt)
# We don't list generator as a prerequisite here because it has to exist
# for the above to work.
$(GENERATED_C_FILES): input.txt
./generator input.txt
有一些方法可以让make
检测到generator
缺失,重建并重新运行。但是,更简单明了,也许generator
构建时实用程序可以在./configure
时生成,因此可以在make
时依赖它。