【问题标题】:makefile missing separatormakefile 缺少分隔符
【发布时间】:2009-11-02 20:00:11
【问题描述】:

我有一个生成文件(由第三方提供),它给出了以下错误

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

【问题讨论】:

    标签: makefile compilation


    【解决方案1】:

    试试这个方法:

    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
    

    这会检查 have_sdl 是否为非空(意味着定义为 TRUE、是、1 或非空字符串)

    【讨论】:

      【解决方案2】:

      如果 ifeq 和括号打开之间没有空格,那么它也会导致相同的警告。

      应该是ifeq()

      【讨论】:

        【解决方案3】:

        我不知道任何允许 if 关键字的 make 方言。您引用的代码既不是 POSIX make,也不是 GNU make。

        工作语法示例包括:

        ifdef have_sdl
        ... (rest is the same)
        

        ifneq ($(have_sdl),)  #not equal to empty string
        ... (rest is the same)
        

        .

        【讨论】:

          【解决方案4】:

          如果我没记错的话,emacs 中的 makefile-mode 会用红色突出显示空白语法错误。尝试在emacs中加载Makefile,看看错误是否明显。

          【讨论】:

            【解决方案5】:

            IIRC(已经有一段时间了)认为 if/else 是 GNU makeism。如果您没有运行 GNU make,那么这很可能会失败。解决方案是安装 GNU make。

            【讨论】:

            • 是的 - 它充满了 GNU make-isms,不使用 GNU make 会出现该错误。
            【解决方案6】:

            我看到过这样的问题是由非空白的空行引起的——它们包含制表符或空格。清除空白行上的所有空格可能会解决它。

            编辑添加:重新阅读您的问题后,我发现考虑到您发布的行号和代码,这可能不是您的特定问题,但对其他人来说可能是个问题,所以我会离开我的回答。

            【讨论】:

              猜你喜欢
              • 2011-03-19
              • 1970-01-01
              • 2012-03-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-12-16
              • 2016-10-04
              相关资源
              最近更新 更多