如何在使用makefile编译时不使用命令'make clean'来清理目标文件?

时间:2014-11-06 09:44:41

标签: c compilation makefile

我想知道的是如何编写一个编译程序的makefile,然后使用命令'make'删除在该过程中创建的目标文件,因此我不必在之后运行命令'make clean'。这是我当前的makefile:

prog: prog.o prog_func.o
    gcc prog.o prog_func.o -o prog -Wall -std=c99   
prog.o: prog.c prog_func.h
    gcc prog.c -c -Wall -std=c99 
prog_func.o: prog_func.c prog_func.h
    gcc prog_func.c -c -Wall -std=c99
clean:
    rm prog.o prog_func.o

修改

这就是它的完成方式:

prog: prog.o prog_func.o
    gcc prog.o prog_func.o -o prog -Wall -std=c99
    rm prog.o prog_func.o
prog.o: prog.c prog_func.h
    gcc prog.c -c -Wall -std=c99 
prog_func.o: prog_func.c prog_func.h
    gcc prog_func.c -c -Wall -std=c99

现在有效。感谢您的快速回复。

3 个答案:

答案 0 :(得分:2)

构建可执行文件后,只需在可执行命令

之后给出相同的命令(rm命令)

答案 1 :(得分:0)

如何编译而不制作像这样的文件

gcc -Wall -o prog prog.c

此命令不会生成o文件。

答案 2 :(得分:-1)

我刚刚举了一个示例。

makebuild: clean prog                                
prog: 
    gcc a.c -o a.o
clean:
    rm a.o

跑步'制作'从命令行将首先' rm' a.o文件,然后运行' gcc a.c -o a.o'。这里唯一的问题是它不会第一次工作,因为makebuild首先调用clean,它会抛出一个错误,因为它找不到a.o文件。你必须检查' rm'仅当a.o文件存在时。

类似的东西:

clean:
    if a.o exist
        rm a.o