注意:这不是Is it possible to create a multi-line string variable in a Makefile和其他此类问题的重复。这个问题要求不依赖纯Bash或仅GNU Make的功能的POSIX兼容解决方案。关于堆栈溢出的另一个问题没有此要求。
在macOS High Sierra上使用BSD sed
获取此Shell脚本:
printf 'foo\nbaz\n' | sed '/foo/a\
bar
'
输出为:
foo
bar
baz
如何将相同的内容放入Makefile
中?这是我尝试过的方法,但似乎不起作用:
all:
printf 'foo\nbaz\n' | sed '/foo/a\\
bar\
'
这会导致错误:
$ make
printf 'foo\nbaz\n' | sed '/foo/a\\
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [all] Error 2
如何将上述sed
调用正确地写入Makefile中,以便make
执行all
目标时,它将尾部斜杠和换行符正确地输入到shell中? >
注意:我希望Makefile
符合POSIX,并且仅使用http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html中的功能。
答案 0 :(得分:-1)
您只能通过在单独的Shell脚本中编写配方并调用它,而不是在制作配方中对其进行开放编码来实现。