今天在学习makefile的时候遇到一个问题,执行命令的时候老师报:make8.mk:11: *** missing separator. Stop.的错误。
场景还原:
Makefile文件名:
make8.mk
<span style="font-size:18px;">#this file is just a demo to test the make
define print_target
@echo the make target is $(MAKECMDGOALS)
endef
.PHONY:values clean makecmd
values:
$(print_target)
clean:
$(print_target)
@echo execute the clean target
ifeq($(MAKECMDGOALS),clean)
print_string=the make target is clean
else
print_string=the make target is $(MAKECMDGOALS)
endif
makecmd:
@echo $(print_string)</span>
执行命令出现一下情况:
desktop:~/work$ make -f make8.mk makecmd
make8.mk:12: *** missing separator. Stop.
我反复检查变量命名,语法最终才发现了错误地方,原来是ifeq后面缺少一个空格,加上一个空格就ok了。
ifeq<span style="background-color: rgb(255, 0, 0);"> </span>($(MAKECMDGOALS),clean)
唉,就这个空格花费了我一个小时的时间。惭愧啊!
希望自己以后学习的时候细心点,引以为鉴吧!嘿嘿!
最后的执行结果:
desktop:~/work$ make -f make8.mk makecmd
the make target is makecmd