任何人都可以告诉我如何执行makefile中编写的clean目标。 这是我的代码
jamm : hello.o ghola.o
gcc $^ -o $@
%.o : %.c
gcc -c S<
clean :
rm *.c
我有一些问题。如何使用clean as target清理所有这些c文件。我们给命令make -f file1(比如文件名是file1),它看到目标为jamm并执行但它不会执行干净的target.If在命令行中我说make clean它说没有这样的文件或目录我是无法得到这个概念任何人都可以告诉我如何在我的make文件中写下这些干净。请给我一个
答案 0 :(得分:3)
如果您有一个名为“ clean ”的文件,请检入您的目录。
可能是您的make
调用认为必须以某种方式生成“干净”文件。
要解决此问题,请尝试在清洁目标之前添加.PHONY indicator:
jamm : hello.o ghola.o
gcc $^ -o $@
%.o : %.c
gcc -c S<
# add this:
.PHONY: clean
clean :
rm *.c
顺便说一下:你清洁的目标看起来很糟糕:你不应该删除.o文件而不是.c ????
答案 1 :(得分:1)
在我的一个makefile中,clean
目标如下所示:
.PHONY: depend clean all new
clean:
rm *.o *~ $(PROGS) ~/include/*.gch
请注意,带有可执行语句的行以制表符开头。
其他一些事情:
rm
您的.c
个文件。这些是您的源文件,您可能会失去编写它们的所有工作。.o
)和可执行文件(在我的示例中为$(PROGS)
,实际上是包含可执行文件名称的任何变量)和预编译的标头(.gch
),所以你可以从一个干净的石板上重拍。clean
)应列为.PHONY
的先决条件。这让我们知道即使有一个名为clean
的文件,它也应该运行命令。要执行特定目标(例如clean
),只需输入
make clean
但要确保:
Makefile
或makefile
。如果您使用的是GNU make,您也可以将其命名为GNUmakefile