Makefile简单总结

来源:互联网 发布:erp软件视频介绍 编辑:程序博客网 时间:2024/06/06 02:27

MAKE的概述:

Makefile文件 Makefile 一个工程中源文件不计数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,提高了编译速度。

Makefile基本格式如下:

target ... : prerequisites ...

    command

    ...

    ...

其中,

· target        -目标文件,可以是Object File,也可以是可执行文件

· prerequisites -生成target所需要的文件或者目标

· command       - make需要执行的命令(任意的shell命令), Makefile中的命令必须以[tab]开头

 

1)显示规则::说明如何生成一个或多个目标文件(包括 生成的文件,文件的依赖文件,生成的命 令)

 2隐晦规则:: make的自动推导功能所执行的规则

 3变量定义:: Makefile中定义的变量

 4文件指示:: Makefile中引用其他Makefile;指定Makefile中有效部分;定义一个多行命令

 5注释     :: Makefile只有行注释"#",如果要使用或者输出"#"字符,需要进行转义, "\#"

6)执行顺序:从上到下

7)执行规则:第一行的目标指令的依赖文件如果也是一个目标的话,就会跳到 相应的目标来执行。

8)Makefile的三要素是:目标文件,依赖文件,命令行

9)Makefile如果改了名字,用make -f +指定文件名。

10)Makefile的一个特点是具有自动编译,具体是指:

1、按照makefile的规则编译,

2、看时间戳,若.c文件的时间戳没有改变,则执行之后输出“MAKE最新”。

简单的Makefile程序如下:


然后按“MAKE”执行


MAkEFILE的基本指令


变量定义:= :=+=(追加)、?=(避免重复定义)

变量代替文件名: $ 文件名

伪目标:.PHONY表示伪目标

文件查找:VPATH =目录:目录

嵌套执行:cd 子目录 && $(make)$(make) -c子目录 对子目录执行make


MAKEFILE 基本函数指令:


$(patsubset 模式参数,参数1,参数2):把参数二中符合模式参数的被空格隔开的字符串替换成参数.

$(wildcard模式参数):列出当前目录下所有符合模式参数的文件名

$(addsuffix参数1,参数2):在参数2中的每个单词加上后缀参数1.

$(foreach变量参数,参数1,表达式):循环取出参数1的单词赋给变量参数然后运行表达式。

$(call 变量参数,参数):循环把参数依次赋给变量参数中的$(1)$(2).......

 

Makefile 的简单模板:

1、读取scripts下的Makefile:定义了许多变量,使用时相当于C语言头文件,能提高维护性和灵活性。


1、读取总控的Makefile:进入各个功能子目录执行make命令,将所有的.o文件链接生成最终的可执行文件


2、功能子目录下的Makefile:将src下的.c文件变为.o文件


以上各图是进行加减乘除四种运算的模块。最后在整体的文件夹下输入make,即运行成功。

tree以树状来显示目录结构,清晰明了


以后用于其他函数只需要将scripts中的Makefile中的Modules改变一下就可以了,再把每个功能目录下的函数改成具体的一个就可以了。

 

如果不用函数,模块在改的时候就没那么方便,分别如图:






0 0
原创粉丝点击