Makefile - 缺少分隔符

94

可能是重复问题:
Make错误:缺少分隔符


在makefile中有以下代码:

PROG = semsearch
all: $(PROG)
%: %.c
gcc -o $@ $< -lpthread

clean:
rm $(PROG)

和错误

missing separator. stop.

有人能帮助我吗?


3
Makefile 中的缩进不是可选项。您发布的内容是否完全按原样,还是空格被修改了? - Mat
9
这个问题应该重新开放。这里的回答还展示了如何编写一个没有制表符的Makefile,完全避免了这个问题。 - Jens
1个回答

238

你需要在以gccrm开头的行之前加一个硬制表符。make规则中的命令必须以制表符开头(除非它们在同一行上跟随分号)。

PROG = semsearch
all: $(PROG)
%: %.c
        gcc -o $@ $< -lpthread

clean:
        rm $(PROG)

请注意,一些编辑器可能配置为插入一系列空格而不是硬制表符。如果这些行的开头有空格,您也会看到“缺少分隔符”错误。如果您在插入硬制表符时遇到问题,请使用分号方式:

PROG = semsearch
all: $(PROG)
%: %.c ; gcc -o $@ $< -lpthread

clean: ; rm $(PROG)

3
你可以使用.RECIPEPREFIX来改变make使用的字符。参见:https://www.gnu.org/software/make/manual/html_node/Special-Variables.html#Special-Variables - aseq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接