我得到以下错误运行make:
Makefile:168: *** missing separator. Stop.
是什么导致了这种情况?
我得到以下错误运行make:
Makefile:168: *** missing separator. Stop.
是什么导致了这种情况?
当前回答
再补充一个出现这种情况的原因:
$(eval VALUE)
无效,将产生“缺少分隔符”错误。
$(eval IDENTIFIER=VALUE)
是可以接受的。当我用define定义宏并尝试执行时,出现了这种错误
define SOME_MACRO
... some expression ...
endef
VAR=$(eval $(call SOME_MACRO,arg))
宏没有计算为赋值。
其他回答
这是因为在PHONY后面没有冒号
不是这个,
.PHONY install
install:
install -m0755 bin/ytdl-clean /usr/local/bin
但是这个(注意冒号)
.PHONY: install
...
因此,显然,我所需要的是“构建必要”包,然后首先运行autoconf,这使得Makefile.pre。In,然后是。/configure,然后是make。
在我的例子中,我实际上在ifeq和下一行的命令之间缺少了一个制表符。一开始就没有空间。
ifeq ($(wildcard $DIR_FILE), )
cd $FOLDER; cp -f $DIR_FILE.tpl $DIR_FILE.xs;
endif
本来应该是:
ifeq ($(wildcard $DIR_FILE), )
<tab>cd $FOLDER; cp -f $DIR_FILE.tpl $DIR_FILE.xs;
endif
注意<tab>是一个实际的制表符
正如在线手册中所指出的,该错误最常见的原因是当make期望制表符时,行被空格缩进。
正确的
target:
\tcmd
其中\t为TAB (U+0009)
错误的
target:
....cmd
每一个。表示空格(U+0020)。
在我的例子中,同样的错误是由于冒号:在结束时丢失了stage .deploy:。所以请注意,这可能是一个简单的语法错误。