我得到以下错误运行make:

Makefile:168: *** missing separator.  Stop.

是什么导致了这种情况?


当前回答

在我的例子中,同样的错误是由于冒号:在结束时丢失了stage .deploy:。所以请注意,这可能是一个简单的语法错误。

其他回答

这是因为在PHONY后面没有冒号

不是这个,

.PHONY install
install:
    install -m0755 bin/ytdl-clean /usr/local/bin

但是这个(注意冒号)

.PHONY: install
...

这是Makefile中的语法错误。如果没有看到文件本身或其中的相关部分,就很难更具体。

我的错误发生在具有多行扩展名的变量声明行上。我在“\”后面有一个尾随空格,这使得它是一个无效的行续。

MY_VAR = \
   val1 \ <-- 0x20 there caused the error.
   val2

正如在线手册中所指出的,该错误最常见的原因是当make期望制表符时,行被空格缩进。

正确的

target: 
\tcmd

其中\t为TAB (U+0009)

错误的

target:
....cmd

每一个。表示空格(U+0020)。

对我来说,问题是我有一些行将结束的#…注释嵌入在定义…结束多行变量定义。删除注释使问题消失了。