如何通过Makefile生成文本文件?

4 投票
1 回答
2185 浏览
提问于 2025-04-17 09:15

我的构建过程使用了很多第三方工具。这些工具中的很多都需要用ASCII文本文件来进行配置。我想通过一个Makefile来生成这些简短的文本文件。我知道的唯一方法就是用echo命令一行一行地写文本文件,然后像这样重定向输出:

foo.script: bar.prj
        touch $@
        echo run >>$@
        echo -input bar.prj >>$@
        echo -output baz.out >>$@

这样做看起来有点麻烦。更糟糕的是,我是通过一个Python程序来生成这个Makefile。所以实际的代码看起来更像这样:

TEMPLATE="""{target}: {input}
        touch $@
        echo run >>$@
        echo -input {input} >>$@
        echo -output {output} >>%@"""
TEMPLATE.format(target='foo.script',input='bar.prj',output='baz.out')

这样就变得很难阅读和维护了。有没有人知道更好的方法?

回答:

不要通过Make来生成文本。可以调用一个用更简单的语言写的脚本来生成文本。

1 个回答

1

如果你在构建过程中已经使用了Python,你可以写一个简单的Python脚本。这个脚本可以接收一个模板文件、一个目标文件和一些参数,然后根据模板文件生成目标文件,并把合适的参数填进去。

撰写回答