制作错误:缺少分隔符

6 浏览
0 Comments

制作错误:缺少分隔符

我在运行make时遇到以下错误:

Makefile:168: *** 缺少分隔符。停止。

这是什么原因导致的?

0
0 Comments

在这段内容中,出现了一个问题是“missing separator”错误。这个错误的原因是在定义一个函数的规则时,使用了错误的语法。正确的语法应该是$(eval $(call function,args)),而错误的语法是($eval $(call function,args))。错误的语法中使用了($而不是$(。这可能是因为在$符号前面缺少一个空格(0x20)。在这段内容中没有提到如何解决这个问题。

0
0 Comments

这是一个在你的Makefile中出现的语法错误。如果没有看到文件本身或相关的部分,很难给出更具体的解释。

通常,出现这个错误的原因是在Makefile中缺少了分隔符。Makefile是一个用于构建和编译项目的文件,它使用特定的语法和规则来定义目标和依赖关系。

解决这个错误的方法是找到缺少分隔符的位置,并在适当的地方添加它。分隔符在Makefile中通常是一个制表符或者多个空格。它的作用是将目标、依赖关系和命令分隔开来,以确保Make工具能够正确地执行构建过程。

下面是一个示例的Makefile,其中缺少了分隔符的部分:

target: dependency1

command1

command2

在这个示例中,缺少了分隔符,导致了错误的发生。正确的Makefile应该是这样的:

target: dependency1

command1

command2

通过在目标和命令之间添加制表符或多个空格,我们解决了这个错误。现在,Make工具将能够正确地解析Makefile,并执行相应的构建指令。

总结起来,"Make error: missing separator"这个问题通常是由于Makefile中缺少了分隔符导致的。解决这个问题的方法是找到缺少分隔符的位置,并在适当的地方添加分隔符。这样,Make工具就能够正确地执行构建过程了。

0
0 Comments

在GNU make的在线手册中指出,出现(Make error: missing separator)错误的最常见原因是使用空格进行缩进,而make需要使用制表符进行缩进。

正确的方法

target: 
\tcmd

其中\t代表制表符(U+0009)。

错误的方法

target:
....cmd

其中每个.代表一个空格(U+0020)。

你可以使用.RECIPEPREFIX来更改make使用的字符。参考链接:gnu.org/software/make/manual/html_node/…

为了确认,我自己遇到了这个问题。大多数编辑器/IDE都可以帮助发现这个问题。例如,在IDEA中,转到“View”菜单,选择“Active Editor”,然后选择“Show Whitespaces”。我简直不敢相信在2022年(检查笔记)还存在空格和制表符之间的问题。

我有一个包含换行符的字符串变量 - 并不是出于选择。通过execute_process插入,通过使用OUTPUT_STRIP_TRAILING_WHITESPACE来修复,因为输出是单行的。不过错误信息确实令人恼火。

0