为什么Make中的`shell`命令会删除换行符?

hat*_*tch 5 makefile

根据此处的Make文档:http : //www.ecoop.net/coop/translated/GNUMake3.77/make_8.html#SEC80

在将结果替换为周围的文本之前,对结果进行的唯一处理是将每个换行符或回车符/换行符对转换为单个空格。如果这是结果中的最后一件事,它也会删除尾随(回车和)换行符。

为什么Make会完全执行此处理?

如果没有递归通配符命令,那么能够返回定界列表的功能find肯定会很好。

Car*_*arl 6

当您使用该变量时,该变量的值将被替换。 制作文档(如 C 中的“define”)。

新的行会对 make 的解析能力造成严重破坏。

不过,变量中可以有新行: 另一个问题

我想这只是因为“没有新行”是最常用的情况。在 make 尝试替换这些新行之前,您也许可以使用其他 shell 命令将这些新行替换为其他内容。