这是我的makefile:

all:ll

ll:ll.c   
  gcc  -c  -Wall -Werror -02 c.c ll.c  -o  ll  $@  $<

clean :
  \rm -fr ll

当我尝试make clean或make make时,我得到这个错误:

:makefile:4: *** missing separator.  Stop.

我该怎么解决呢?


当前回答

如果你在这里搜索如何使你添加的选项卡和新行可以通过vim理解,你必须首先在vim中启用选项卡。

你可以在添加制表符之前使用:set noet即(从空格切换到制表符)。

使用这个命令,您的选项卡将看起来像其他选项卡(即^I)和***缺少分隔符。停止。make的错误将消失:)

在你做了更改之后,你可以用set et切换回来

其他回答

当你在VSCode中创建Makefile时,你应该设置Tab Size: 4。

使用.editorconfig自动修复选项卡:

root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4

[Makefile]
indent_style = tab

PyCharm的解决方案是安装一个Makefile支持插件:

打开首选项(cmd +,) 去插件->市场 搜索Makefile支持,安装并重新启动IDE。

这应该可以解决问题,并提供makefile的语法。

如果你在eclipse中编辑你的Makefile:

Windows-> Preferences->General->Editor->Text Editors->Show Whitespace Characters -> Apply

或使用下面显示的快捷方式。

Tab用灰色“>>”表示,Space用灰色“.”表示,如下图所示。

TLDR;

Makefile语法可能很古怪 如果你想让一行代码被解释为make代码,那么它只能用空格缩进。 如果您希望将一行代码解释为bash代码,则必须只使用制表符缩进

sometask:
  ifeq ($FOO,bar)  // this is make code. only spaces
    echo "foobar"  // this is bash code. only tabs
  endif            // again, this is make code. only spaces

从技术上讲,它是指示解释器的首缩进。