【发布时间】:2014-11-08 02:13:26
【问题描述】:
我想知道的是如何编写一个编译程序的makefile,然后仅使用命令'make'删除在该过程中创建的目标文件,这样我就不必在之后运行命令'make clean'。这是我当前的生成文件:
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
现在可以了。感谢您的快速回复。
【问题讨论】:
-
这并不是一个普通的
clean目标首先要做的事情。它通常会破坏 所有 人为的文件,包括 .o 文件 和 最终输出目标。我怀疑你总是可以在链接到主要目标后删除 .o 文件(尽管它会引起你的疑惑为什么你会想要这样做)。 -
这对我来说似乎毫无用处。 make 的全部意义在于它只重建已更改的文件。这就是为什么它有额外的语法来声明先决条件等。如果你每次都删除所有文件,那么一切都会重新构建,你不妨写一个小shell脚本,每次都重新编译所有东西,不要打扰完全是
make。
标签: c compilation makefile