我有一个makefile(由第三方提供),它给出了以下错误
Makefile:108: *** missing separator. Stop.
有问题的一行是以下if声明....任何想法?我尝试过用空格替换各种标签而不是很远......
if have_sdl
libiulib_a_SOURCES += $(srcdir)/utils/dgraphics.cc
libiulib_a_SOURCES += $(srcdir)/utils/SDL_lines.cc
include_HEADERS += $(srcdir)/utils/SDL_lines.h
else
libiulib_a_SOURCES += $(srcdir)/utils/dgraphics_nosdl.cc
endif
答案 0 :(得分:5)
以这种方式尝试:
ifneq ($(have_sdl),)
libiulib_a_SOURCES += $(srcdir)/utils/dgraphics.cc
libiulib_a_SOURCES += $(srcdir)/utils/SDL_lines.cc
include_HEADERS += $(srcdir)/utils/SDL_lines.h
else
libiulib_a_SOURCES += $(srcdir)/utils/dgraphics_nosdl.cc
endif
检查has_sdl是否为非空(意味着定义为TRUE,yes,1或除空字符串以外的其他内容)
答案 1 :(得分:4)
如果ifeq和支架打开之间没有空格,那么它也会引起相同的警告。
应该是ifeq()
答案 2 :(得分:2)
我不知道任何允许使用if
关键字的制作方言。你引用的代码既不是POSIX make,也不是GNU make。
工作语法示例包括:
ifdef have_sdl
... (rest is the same)
和
ifneq ($(have_sdl),) #not equal to empty string
... (rest is the same)
答案 3 :(得分:1)
如果我没记错的话,makefile-mode
中的emacs
会突出显示带有红色的空格语法错误。尝试在emacs中加载Makefile以查看错误是否明显。
答案 4 :(得分:1)
答案 5 :(得分:1)
我看到这样的问题是由非空白的空行引起的 - 它们包含制表符或空格。清除空行上的所有空格可以解决它。
编辑添加:在重新阅读您的问题后,我发现根据您发布的行号和代码,这可能不是您的特殊问题,但这对其他人来说可能是一个问题所以我会离开我的回答。