gpt4 book ai didi

makefile - 使用 GNU Make,如何将多个文件合二为一?

转载 作者:行者123 更新时间:2023-12-05 00:24:17 24 4
gpt4 key购买 nike

我想用 sed 处理一些 SQL 文件并连接成一个文件。有没有一种巧妙的方法可以用一个 GNU Make 配方来做到这一点?

如果我在编写 Makefile 时知道文件集,我就可以编写一个多行配方。

combined.sql: main.sql table1.sql table2.sql
sed -e 's/latin1/utf8/' main.sql > $@
sed -e 's/latin1/utf8/' table1.sql >> $@
sed -e 's/latin1/utf8/' table2.sql >> $@

这似乎太重复了,如果我有一个动态生成的输入文件列表,也不行。我怎样才能以可以扩展到任意数量的输入文件的最小冗余方式很好地做到这一点?

最佳答案

使用您拥有 automatic variable 的事实对于您的先决条件和事实sed获取任意多个输入文件:

combined.sql: main.sql table1.sql table2.sql
sed -e 's/latin1/utf8/' $^ > $@

对于不接受多个文件输入的工具的一般情况,您仍然可以使用 $^在 shell 循环中:
combined.sql: main.sql table1.sql table2.sql
for file in $^; do \
some_other_tool $$file; \
done > $@

关于makefile - 使用 GNU Make,如何将多个文件合二为一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com