目录
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命 令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一 种在工程方面的编译方法。
Makefile由依赖方法和依赖关系组成。
注意:
依赖文件列表可以有一个,也可以有多个。
tab键不能用空格键替代。?
1)创建一个test.c和Makefile文件,vim Makefile输入以下指令。保存退出。
2)当我们想编译test.c时,直接make,就可以自动调用Makefile的依赖方法。
3)Makefile可以构建项目,同时也可以清理项目?
.PHONY是Makefile的关键字,声明是伪目标。?
4)当有多个目标文件时,只会从上到下执行第一个目标文件。想要执行其他目标文件,需要make+目标文件。
伪目标最大的特点是:总是会根据依赖关系,执行依赖方法!
习惯于把clean设置成伪目标。
可以查看文件重要的三个时间(AMC)
Access:文件最近被访问的时间。
Modify:文件内容最近的修改时间。
Change:文件属性最近的修改时间。
因为文件一定要被访问,才能完成文件内容的修改,所以Modify更新,Access一定也会更新
因为文件内容被修改,文件大小一定发生改变,所以Modify更新,Change一定也会更新
但是Access/Change改变并不会造成另外两个时间也改变
touch指令有两个作用:创建一个新的文件;更新AMC时间为系统时间。
touch [文件名],AMC时间都更新
touch [文件名] -a ,Access时间更新
touch [文件名] -m,Modify时间更新
touch [文件名] -c,Change时间更新
【答案】根据文件的最近修改时间来的。?
可执行文件是依赖目标文件产生的,所以可执行文件的修改时间一定大于目标文件的修改时间。如果可执行文件的修改时间小于目标文件的修改时间时,这时候一定可以make成功。
1)在Makefile里输入依赖方法和依赖关系,保存。
?2)make 会默认形成相应的可执行程序和文件。
3)clean 清理(需要在Makefile文件里输入相应依赖方法和依赖关系)