使用autotools构建时生成变量名源文件

时间:2013-08-01 21:11:52

标签: makefile code-generation autotools autoconf automake

此问题建立在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来做,最好不要使用通配符。

1 个答案:

答案 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时依赖它。