make 学习笔记二

来源:互联网 发布:淘宝爆款计划表 编辑:程序博客网 时间:2024/05/21 09:20

1.关于伪目标,具体定义为:伪目标不是真正的目标文件,所以通过伪目标可以让Make 工程管理器只执行规则命令,而不用创建实际的目标文件。伪目标的使用方式为:

make 伪目标名

由于伪目标不是真正的目标文件,只是一个符号。为了不和真实的目标文件混淆,最好使用“.PHONY”对伪目标进行标识。

2.make –f 的使用,该命令是用来配置Makefile的,具体实现为:

make –f Makefile1

3.学会了标准工程目录的构成与Makefile 的编写;一个标准目录的构成是由src,include,scripts,bin,doc,Makefile构成的(其中bin中存放的是最终生成的可执行文件),创建一个路径目录,可以使用以下该种命令:

mkdir –p sub/src sub/pngsub/lib sub/doc

4.命令tree:树状显示目录结构;

5.Makefile可出现在以下几个目录下:功能目录,脚本目录,源目录

其中,最顶层的Makefile为总控Makefile;其作用为:进入各个功能子目录里执行make命令,将所有的.o文件链接生成最终可执行文件。

功能子目录Makefile:其作用为将src 目录下的.c文件编译成.o 文件

脚本目录下的Makefile:其作用为定义许多变量,相当于c语言的头文件。

由它们的作用可知,我们要想理清一个linux下的make的功能,浏览各Makefile的顺序为:先看scripts下的Makefile,再看总控Makefile ,最后查看各个功能Makefile.

6.Makefile中的注释为#号。

7.Make的特性

(1)   嵌套执行

为避免将所有的源文件的编译规则命令都写在一个makefile中,可以把Makefile分解成多个子程序并放到程序的子目录里,而Make 工程管理器会首先读取程序根目录下的Makefile文件即总控Makefile,然后再读各个子模块下的Makefile,,该过程为嵌套执行。执行方法为:

$(MAKE) –c 子目录

(2)函数

**下面结合具体的实例来解释函数的用法,并尝试着用编译命令加以代替。

首先,创建test1目录,为了进行嵌套执行,分解为多个子程序如下:


然后在scripts下创建makefile,定义该脚本下的变量,相当于c语言中的头文件。如下:

在总目录下创建Makefile文件,该文件为总控Makefile如下图。





最后依次创建各个功能下的Makefile,即add,sub,div,mul,main下的Makefile

 如下:

最后在test1下执行make命令,则编译成功!




2 0