makefile的一点基础使用
Makefile为何物??
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 —— [ 百度百科 ]
通俗来讲就是自动编译脚本,提前设定好待编译文件的依赖关系,之后便可以像windows下IDE那样“一键“编译。
Makefile的意义
之所以makefile会存在,必然有它的理由。想象一下,若是一个工程有n多个功能模块并且有很多头文件,一个个编译,每一个步骤都有冗长的文件列表。重复劳动并且还容易出错。
有了makefile以后,仅仅需要一开始分析项目文件中的依赖关系,仅执行需要重新编译链接的命令即可。即为:在后续的改动后仅仅需要简单的make命令即可。
makefile内容
makefile实则为一个简单的文本文件,由一条条规则构成
target:prerequistes
<tab>command1
<tab>command2
...
<tab>commandN
target:规则的目标,即为目的,下面命令所要达到的目的。
prerequisites:依赖列表,可以简单的理解为要达到本条规则的目标所需要的先决条件是什么。可以是文件名,也可以是其他规则的目标
command:命令,可以简单的理解为当目标所需要的先决条件的满足了之后,需要执行什么动作来达成规则的目标。规则的命令其实就是shell命令。一条规则中可以有多行命令。
makefile的使用
当在项目文件中建立一个makefile文件后,并且依赖逻辑关系正确。既可以使用make命令。
具体可见:GNUMAKEFILE
基本范式如下
make [ -f makefile ] [ options ] … [ targets ] …
1.简单粗暴,不带任何参数,直接执行make:
$ make
2.指定makefile文件:
$ make -f
3.指定makefile 目标:
$ make
4.到指定目录下执行make:
$ make -C