【发布时间】:2013-08-03 00:02:03
【问题描述】:
这个问题建立在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 来做这件事,最好不要使用通配符。
【问题讨论】:
-
生成的文件是否有共同的模式或什么?
-
如果输出文件仅在扩展名中与输入不同,则可以使用后缀规则。通用模式规则是 GNU 扩展。
-
如果目标文件不存在且先决条件文件列表未知,则不能使用模式或后缀规则。例如,假设您不知道 C 程序由哪些 C 源代码组成。如果 .o 文件都存在于以前的构建中,那么您可以推断该程序由所有 .o 组成,并且对于每个 .o,您可以推断相应的 .c 是先决条件。但是,当 .o 文件不存在时(清理(重新)构建),哎呀!
标签: makefile code-generation autotools autoconf automake