我在Makefile中定义了一个函数
define write_file
for i in $( seq 1 10 )
do
echo "1234567" >> "tmp/test.txt"
done
endef
并且
pre:
mkdir -p exe tmp
${call write_file}
但是当我make pre
时,我收到了错误:
mkdir -p exe tmp
因为我在 / bin / sh:1:语法错误:文件结束意外
答案 0 :(得分:1)
make-recipe的每一行都是make
在一个单独运行的单个命令
新壳。所以你需要将宏write_file
的主体变成一个单独的主体
shell命令。
此外,make
扩展了未转义形式$(....)
的所有内容,
将....
视为已定义或未定义的make
表达式。所以在你的
大小写,make
将$( seq 1 10 )
扩展为空。阻止make
做
并且让shell展开$( seq 1 10 )
,您需要为$
转义make
,
您可以通过编写$$
代替。制作配方中的任何$
都是如此
你打算通过shell进行扩展。
将这些要点放在一起,你想要:
define write_file
for i in $$( seq 1 10 ); \
do \
echo "1234567" >> "tmp/test.txt"; \
done
endef