Makefile语法错误.缺少分隔符

Makefile syntax error. Missing separator

本文关键字:分隔符 错误 语法 Makefile      更新时间:2023-10-16

在修改makefile以满足自己的需要之前,我需要了解它的语法。通过网络搜索,我已经能够理解其中的大部分内容,但最后一部分给了我一个语法错误:

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

119行是这里的第一行:

        rm -rf $(CLEANFILES)
.cpp.o:
        $(CXX) $(CXXFLAGS) $(INCL) -c -o $@ `test -f '$<' || echo '$(SRCDIR)/'`$<
.cpp.obj:
        $(CXX) $(CXXFLAGS) $(INCL) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(SRCDIR)/$<'; fi`
.c.o:
        $(CC) $(CFLAGS) $(INCL) -c -o $@ `test -f '$<' || echo '$(SRCDIR)/'`$<
.c.obj:
        $(CC) $(CFLAGS) $(INCL) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(SRCDIR)/$<'; fi`

我真的不知道最后几行做了什么,而且我似乎在GNU制作手册中找不到我需要的信息

感谢

由于您已经从实际的Makefile中进行了剪切和粘贴,因此很难给出确切的答案。如果您提供的第一行rm -rf $(CLEANFILES)确实是第119行,并且makefile在此之前是有效的,那么您可能在rm -rf $(CLEANFILES)之前没有TAB。它应该是这样的:

clean:
        rm -rf $(CLEANFILES)
.cpp.o:
        $(CXX) $(CXXFLAGS) $(INCL) -c -o $@ `test -f '$<' || echo '$(SRCDIR)/'`$<
.cpp.obj:
        $(CXX) $(CXXFLAGS) $(INCL) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(SRCDIR)/$<'; fi`
.c.o:
        $(CC) $(CFLAGS) $(INCL) -c -o $@ `test -f '$<' || echo '$(SRCDIR)/'`$<
.c.obj:
        $(CC) $(CFLAGS) $(INCL) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(SRCDIR)/$<'; fi`

也就是说,每个配方中的命令行必须在行的开头有一个文本TAB字符。