我开始使用makefile,但我遇到了一些问题。
我有一个fase_1.c
文件,我想编译并运行。
我正在尝试在make
和make 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.o
和makefile
。然后我运行./makefile
(有没有其他方法可以做到没有像make或make clean但是要运行它?)。然后我输入make clean
,它表示缺少分隔符并且该行被忽略,并且不会删除fase_1.o
和makefile
(我想要做的)。我把线分开了吗?也许它与标签或我的编辑有关,但我找不到。
答案 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