如何正确创建和使用makefile

时间:2016-12-19 11:48:37

标签: c shell makefile

我开始使用makefile,但我遇到了一些问题。

我有一个fase_1.c文件,我想编译并运行。

我正在尝试在makemake clean处创建一个简单的makefile。 这就是我试过的:

OBJECTS = fase_1.o
CFLAGS = -Wall
NAME = makefile

build: $(OBJECTS)
    cc $(CFLAGS) $(OBJECTS) -o $(NAME)

clean: 
    rm -f *.o
    rm -f $(NAME)   

make,它会创建fase_1.omakefile。然后我运行./makefile(有没有其他方法可以做到没有像make或make clean但是要运行它?)。然后我输入make clean,它表示缺少分隔符并且该行被忽略,并且不会删除fase_1.omakefile(我想要做的)。我把线分开了吗?也许它与标签或我的编辑有关,但我找不到。

2 个答案:

答案 0 :(得分:3)

这是重写。不过,请将其称为Makefile,而不是makefile

OBJECTS = fase_1.o
CFLAGS = -Wall
NAME = fase

$(NAME): $(OBJECTS)
    cc $(CFLAGS) $(OBJECTS) -o $(NAME)

run : $(NAME)
    ./fase

.PHONY: clean
clean: 
    rm -f *.o
    rm -f $(NAME)   

可以做出更好的改进,但最好不要在这个阶段陷入困境。作为奖励,我添加了.PHONY。这告诉make目标clean是虚假的目标;它实际上并没有创建任何名为clean的东西。

当然,您不必让run依赖于$(NAME),但在这种特定情况下它是有道理的。

答案 1 :(得分:2)

看起来你正在使用GNU make。从信息页面:

  

默认情况下,当'make'查找makefile时,它会尝试以下操作   名称,按顺序:'GNUmakefile','makefile'和'Makefile'。

您的可执行文件名为makefile。当您运行make时,它会尝试将可执行文件解析为Makefile。重命名可执行文件,或明确指定makefile:

make -f Makefile clean