makefile 缺少分隔符

发布于 2024-08-10 05:51:50 字数 462 浏览 3 评论 0原文

我有一个 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

I have a makefile (provided by third party) which gives the following error

Makefile:108: *** missing separator.  Stop.

The line in question is the following if statement.... any ideas? have tried various replacing tabs with spaces and not got very far at all...

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

萤火眠眠 2024-08-17 05:51:50

尝试这样:

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、yes、1 或空字符串以外的其他值)

Try it this way:

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

This checks if have_sdl is non empty (meaning defined to TRUE, yes, 1 or something other than empty string)

情深已缘浅 2024-08-17 05:51:50

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

应该是ifeq()

If there is no space between ifeq and opening of bracket then also it causes the same warning.

it should be ifeq ()

泪是无色的血 2024-08-17 05:51:50

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

工作语法的示例包括:

ifdef have_sdl
... (rest is the same)

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

I am not aware of any make dialect that allows if keyword. The code you cited is neither POSIX make, nor GNU make.

Examples of working syntax include:

ifdef have_sdl
... (rest is the same)

and

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

.

岁月流歌 2024-08-17 05:51:50

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

If I remember correctly, the makefile-mode in emacs highlights whitespace syntax errors with red. Try loading the Makefile in emacs to see if the error is obvious.

愁杀 2024-08-17 05:51:50

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

IIRC (it's been a while) that if/else is a GNU makeism. If you are not running GNU make then this may well fail. Solution is to install GNU make.

惟欲睡 2024-08-17 05:51:50

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

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

I have seen problems like this caused by blank lines that aren't blank - they contain tabs or spaces. Clearing out all whitespace on the blank lines may solve it.

Edited to add: Upon rereading your question, I see that this may not be your particular problem given the line number and code you posted, but it could be a problem for others so I will leave my answer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文