1.自动化构建-make/Makefile
1.1 认识make和Makefile
make是一个命令;
Makefile是一个文件。
1.2 理解
其中在第一个图片中,第一行的
mytest:test.c
叫做依赖关系;第二行的
gcc test.c -o mytest
叫做依赖方法。
依赖关系和依赖方法共同形成目标文件Makefile。
1.3 具体语法
make 会自顶向下扫描Makefile文件,默认形成一个目标文件。
如果想要指定形成,make 后面跟一个指定名称。
那么伪目标的作用是什么呢?
在Linux中,伪目标所依赖的方法,总是可以被执行的。
当Makefile中的内容是:
此时,只能执行一次编译,那么原因是什么呢?
主要原因是为了提高翻译效率。
那么是怎样判断要不要重新编译的呢?
对比源文件与可执行文件的修改时间。
在之前的博客中,我们提到,文件 = 内容 + 属性
对其编译之后,形成——
形成了以 .c .i .o .s结尾的文件。
使用make clean指令,就可以将其清除掉。
1.4 推导过程
(图一)
(图二)
由图一可知,指令是从上到下依次执行的
(图片来自于比特就业课)
该图片就解释了图一的过程。
根据上述,我们总结Makefile的推导原则——
将依赖方法不断入栈,推导完毕,出栈执行方法。
1.5 更加具有通用性的Makefile
但是,我们一般不用这个来写,因为其不具有通用性。
该代码比上一个更好,但是当源文件很多时,就不具有通用性。