在 Makefile 中打印换行符出现问题

4

如何在makefile中打印换行符?

例如,如果我有一个目标:

printIt:
        @echo "Compiling..."

如何打印出

正在编译...

我曾在某处阅读到可以定义一个。但是我已经尝试了这里提到的方法:

define \n

endef



printit:
        @echo "${\n}Compiling..."

但是这不会打印出换行符。我也尝试了C++风格的 "\n" 。我使用的是 GNU Make 3.81


在定义\n时,需要两个空行。 - bobbogo
在您的配方中使用它是行不通的。make 首先展开整个配方,然后将结果中的每一行传递给单独的 shell 调用。因此,第一个命令将是 echo ",这是一个语法错误。 - bobbogo
2个回答

11

使用:

@echo ""; echo "Compiling..."

第一个 echo 输出一个换行符;第二个输出消息。

2

在某些实现中的 echo,例如 Bash,您可以使用 echo -e 来解释转义字符。使用

printIt:
        @echo -e "\nCompiling..."

通常情况下,您可以可靠地使用POSIX printf命令(而非函数):printf '\nCompiling...\n' — 而且这并不依赖于使用的shell的变化。它不会打印换行符,除非您请求它们。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接