本文所使用系统为Linux、centos 7
makefile是一个文件。里面包含了:
1.文件与文件的依赖关系
2.文件与文件的依赖方法
为什么需要包含文件与文件的依赖方法和依赖方法呢?
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
假设有一个源文件,mytest.c.我们将它生成的可执行目标文件命名为mytest.那么我们所编写的Makefile文件的内容应该包含这两个文件的依赖关系和依赖方法。
1.依赖关系:mytest的生成依赖于mytest.c
2.依赖关系:gcc mytest.c -o mytest
mytest:mytest.c
gcc mytest.c -o mytest
第一行:表明依赖关系,mytest文件的生成依赖于mytest.c
第二行:表明依赖的方法
make是一个命令工具,是一个解释Makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,make
和makefile
搭配着使用就可以完成项目自动化构建。
make 目标文件名
如果不写目标文件名,则会使用默认的目标文件,该目标文件是Makefile的第一个表明依赖关系和方法的目标文件
当我们已经使用一次之后,再实用则会出现这样的报错,“mytest
是最新的”
预处理、编译、汇编、链接的过程是要消耗的,既然没有任何的改动有必要重新再来一次吗?所以,这种情况下需要清理工程。
清理工程的方法:设置伪目标文件
设置伪目标的方法:使用.PHONY
修饰,不需要写所依赖的文件。
伪目标的特性:总是可执行的
清理后,则可以继续make
make
命令的谜之操作(防止绕口,我把目标文件所依赖的文件简称为文件2):
- 去寻找所在目录下的名为
makefile
/Makefile
文件 - 找到后,去找make命令后的文件,或者找默认目标文件
- 如果目标文件不存在/文件2的修改时间比目标文件新,则执行依赖方法
- 如果文件2不存在,则会找文件2所依赖的文件去生成,一层一层地去找关系来生成所需文件
- 如果最后找不到,则退出并报错
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)