一般来说在Makefile中,如果报错“*** 遗漏分隔符”, 应该是该使用 TAB的地方使用了空格,可是我的报错却是在.c 文件里面,特别奇怪,先说一下背景 --
用Makefile 管理一个c++ 工程,全部是.cpp文件,然后,需要添加一个 resource.c 文件进来, Makefile 内容如下:
SRCS += main.cpp \
Application.cpp \
resources.c
DEPS += $(SRCS:%.cpp=%.d)
...
...
-include $(DEPS)
其中 resource.c 是新添加, 把它换成 resource.cpp 也不会报错。 经过一番斗争,终于找到了原因:
原来 -include $(DEPS),展开是 include main.d Application.d 等一系列.d文件, 这些 .d文件是符合 makefile 的语法, 增加resourc.c 后, DEPS += $(SRCS:%.cpp=%.d)不能把 .c 文件名 替换成 .d文件名, 展开后,变成了 include resource.c , 而这个.c文件是不符合Makefile语法的, make 把这个resource.c 当成了 makefile 文件,就出现了标题中的错误。