我刚刚解决了我的 Makefile 的一个问题。<<<
使用错误消息遍历每一个
/bin/sh: 1: Syntax error: redirection unexpected
我想知道为什么。(我使用 Bash 作为SHELL
)
在我目前的项目中,我尝试了很多类似的食谱:
target:
read FOO <<< "XXX"; \
read BAR <<< "YYY"; \
read BAZ <<< "ZZZ"; \
someprog -a param0 -b $$FOO -c param1 -d $${BAR} -e param2 -f $${BAZ} >$@
<<<
如开头所述,尝试此操作将导致每个错误。我的解决方法是
target.dep:
echo "XXX YYY ZZZ" >$@
target: %: %.dep
read FOO BAR BAZ < $<;\
someprog -a param0 -b $$FOO -c param1 -d $${BAR} -e param2 -f $${BAZ} >$@
这意味着我将我的东西放入临时文件中,然后使用<
. 当我将 make 输出复制粘贴到正常的 bash 提示符时,每个命令都按预期工作,即使使用<<<
. 我相当肯定我的问题是,使用<<<
运算符,即这里的字符串,会破坏一些东西。为什么会这样,有没有办法让这里的字符串在 Makefile 中工作?
PS:是的,有时我觉得 autotools 会是比 make 更好的选择。