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

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

The only processing make does on the result, before substituting it into the surrounding text, is to convert each newline or carriage-return / newline pair to a single space. It also removes the trailing (carriage-return and) newline, if it’s the last thing in the result.

为什么Make会做这个处理?

没有递归通配符命令,能够从find返回分隔列表肯定会很好.

最佳答案 使用变量时,变量的值将被替换.

Make docs(如C中的“定义”).

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

虽然可以在变量中包含新行:
Another question

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

点赞