Makefile 我如何用make在每个文件周围包装一个字符串,并包括文件名?

Makefile 我如何用make在每个文件周围包装一个字符串,并包括文件名?,makefile,Makefile,我对makefiles不太熟悉,手册也把我弄糊涂了。我有一种情况,我需要在目录中的每个文件周围包装文本,并将文件名也放入文件中 基本上我是从这个开始的: file1.exp file2.exp ... 需要像这样转换目录中的每个文件: "string1" [fileX's filename] "string2" [fileX's contents] "string3" > fileX.tmp 如何使用makefile实现这一点?或者我应该采取另一种方法,用另一种构建方法使我的应用程序复

我对makefiles不太熟悉,手册也把我弄糊涂了。我有一种情况,我需要在目录中的每个文件周围包装文本,并将文件名也放入文件中

基本上我是从这个开始的:

file1.exp
file2.exp
...
需要像这样转换目录中的每个文件:

"string1" [fileX's filename] "string2" [fileX's contents] "string3" > fileX.tmp
如何使用makefile实现这一点?或者我应该采取另一种方法,用另一种构建方法使我的应用程序复杂化


顺便说一句,如果您能推荐任何不太可能让我感到困惑的make教程,我将不胜感激。

您可以这样做:

all: fileX.tmp fileY.tmp

%.tmp : %
        echo "string1 $< string2 `cat $<` string3" > $@
all:fileX.tmp fileY.tmp
%.tmp:%

echo“string1$%.tmp:%.exp…echo“string1”>$@;echo$<>>$@;echo“string2”>>$@;cat$<>$@;echo“string3”>$@;
(适当时插入-n).好吧,这就是为什么我说需求没有明确定义。我的答案和你的答案之间的区别是,你的答案会在每个项目“string1”之后添加换行符,“$Good point”。另外,您的解决方案的优点是它只产生2-3个额外的进程(sh、echo可能是shell内置的,cat),而不是2-10个(取决于换行符转义)。然而,echo的大多数实现都有一个开关来抑制换行符,而不是对
$