- 什么是 标的?
- 标的就是在makefile中单冒号前的名称,是代表了一个与他同名的文件,编译之后生成的.o文件,编译链接之后生成的可执行文件或者其他任何类型的文件,例如下边例子中main这个标的代表的就是main这个可执行文件。
main: gcc -o main main.c
- 标的的语法
target代表的是一个 标的(可以有1+个),prerequisites代表的是这个标的所依赖的标的(1+个),下面那个command就是生成这个标的 的命令。target ...: prerequisites command command
- 标的 在makefile中的执行过程
- 1.makefile中的每个标的都代表了一个文件。
- 2.如果只运行make命令(区别make all等),那么默认执行第一个标的。
- 3.执行一个标的时,会做两件事情:
- 3.1.查看与这个标的同名的文件是否存在,如果不存在,那么就运行这个标的下面的命令。
- 3.2.如果与这个标的同名的文件已经存在,那么就检查与这个标的同名的文件是否需要更新(即标的文件的修改时间是否早于依赖文件的修改时间),如果需要更新,那么就运行这个标的下面的命令。
- 重要的例子
- 例1
main: gcc -o main main.c
- 例2(clean标的):
如果运行make clean命令,那么就会删除main这个可执行文件,那么这个标的的原理是什么呢?其实当运行make clean命令之后,它的执行步骤是这样的:main: main.c gcc -o main main.c clean: rm main
由于clean标的没有依赖的文件,所以它就是检查clean这个文件是否存在,如果不存在,那么执行clean标的下面的命令来生成clean文件。但是下面的rm命令又不会生成clean文件,所以导致的结果就是每回我们运行make clean命令,都会执行下面的rm命令。如下图所示: - 例1
makefile中的标的(di)
最新推荐文章于 2024-03-14 16:57:05 发布