1
Makefile
基础实例讲解
一?/p>
makefile
简?/p>
定义?/p>
makefile
定义了软件开发过程中,项目工程编译链、接接的方法和规则?/p>
产生:由
IDE
自动生成或者开发者手动书写?/p>
作用?/p>
Unix
?/p>
MAC OS
?/p>
Solars
)和
Linux
?/p>
Red Hat
?/p>
Ubuntu
)系统下?/p>
make
命令
调用当前目录下的
makefile
文件执行,可实现项目工程的自动化编译?/p>
二、语法规?/p>
target
?/p>
prerequisites
command
其中?/p>
target
为需要生成的目标?/p>
prerequisites
为依赖项?/p>
command
?/p>
make
需要执?/p>
的命令(任意?/p>
Shell
命令?/p>
?/p>
注意:其?/p>
command
前必须以
tab
键开始?/p>
三?/p>
makefile
内容
Makefile
里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释?/p>
1
.显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由
Makefile
?/p>
书写者明显指出,要生成的文件,文件的依赖文件,生成的命令?/p>
2
.隐晦规则。由于我们的
make
有自动推导的功能,所以隐晦的规则可以让我们比?/p>
粗糙地简略地书写
Makefile
,这是由
make
所支持的?/p>
3
.变量的定义。在
Makefile
中我们要定义一系列的变量,变量一般都是字符串,这?/p>
有点?/p>
C
语言中的宏,?/p>
Makefile
被执行时,其中的变量都会被扩展到相应的引用位置上?/p>
4
.文件指示。其包括了三个部分,一个是在一?/p>
Makefile
中引用另一?/p>
Makefile
,就
?/p>
C
语言中的
include
一样;另一个是指根据某些情况指?/p>
Makefile
中的有效部分,就?/p>
C
语言中的预编?/p>
#if
一样;还有就是定义一个多行的命令。有关这一部分的内容,请参考文
末的参考资料?/p>
5
.注释?/p>
Makefile
中只有行注释,和
UNIX
?/p>
Shell
脚本一样,其注释是用?/p>
#
”字符,
这个就像
C/C++
中的?/p>
//
”一样。如果你要在你的
Makefile
中使用?/p>
#
”字符,可以用反斜框
进行转义,如?/p>
?/p>
\#
?/p>
?/p>
四?/p>
make
的工作流?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
make
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
make
first_objname_in_makefile
?/p>
意思是生成出现?/p>
makefile
中第一个目标文件?/p>
或者指明生成的
目标名称,如
make [objname]
?/p>
按默认方式,输入
make
命令,其工作方式是:
1. make
会在当前目录下找名字叫?/p>
Makefile
”或?/p>
makefile
”的文件?/p>
2.
如果找到,它会找文件中的第一个目标文件(
target
?/p>
,在上面的例子中,并把这个文
件作为最终的目标文件?/p>
3.
如果
target
不存在,则根?/p>
target
后的依赖项和
command
生成
target
。如?/p>
target
?/p>
存在,则
make
检?/p>
target
依赖项是否有修改,若修改,则跟新
target
?/p>
四、实例讲?/p>
鄙人将以实际工作项目?/p>
makefile
为例为大家讲?/p>
makefile
的创建过程?/p>
Makefile
?/p>
容如下: