Makefile相关总结

原创 2011年01月17日 21:57:00

1、主要功能:make是一个解释Makefile文件中指令的命令工具,其最基本的功能就是通过Makefile文件描述源程序之间的相互关系并自动维护编译工作,它会告知系统以何种方式编译和链接程序。剩下的工作就是输入make,就可以自动完成所有的编译任务,并且生成目标程序。

2、工作流程:

1)查找当前目录下的Makefile文件

2)初始化文件中的变量

3)分析Makefie中的所有规则

4)为所有的目标文件创建依赖关系

5)根据依赖关系,决定哪些目标文件要重新生成

6)执行生成命令

3、原理:make工具判断文件有无更新的主要依据是判断依赖文件的建立时间是否比所生成的目标文件要晚。

4Make命令的格式:执行make命令时只需要在Makefile文件所在的目录输入make指令即可,make命令本身带有一些参数:【选项】、【宏定义】、【目标文件】。

标准形式如下:

Make [选项] [宏定义] [目标文件]

下面是一些常用选项:

-f file :指定Makefile的文件名

-n 打印出所有的执行命令,但事实上并不执行这些命令

-s 在执行时不打印命令

-w 如果在make执行时要改变目录,则打印当前的执行目录

-I <dirname> : 指定所有Makefile所在的目录。

-d 打印调试信息

-h help文档,显示Makefile的帮助文档。

Make在没有指定目标文件时,默认生成Makefile文件的第一个目标文件。

5、Makefile文件语法规则:Makefile文件定义了一系列的规则

#注释 //shell脚本一样

目标文件:依赖文件列表 //目标:目标文件列表,一般指的是编译过程中生成的.o文件或可执行文件,也可以是要执行的动作,如“clean”这样的目标。

.......................

<TAB>命令列表 //命令列表:make程序执行的动作,也是创建目标文件的命令,一个规则可以有多条命令,每一行只能有一条命令。

.......................

Makefile文件中变量的使用:

一般都是大写,放在Makefile的顶部来定义,后面跟一个“=”,“=”后面是设定的变量值。如果要引用这个变量,用“$”,变量名需要放在“$”后面的括号中。

Make中一些特殊的内部变量,它们根据每个规则内容定义。

$@ 指代当前规则下的目标文件列表

$< 指代依赖文件列表中的第一个文件

$^ 指代依赖文件列表中的所有依赖文件

$? 指代依赖文件列表中新于对应目标文件的文件列表

使用变量的好处是简化Makefile的书写,方便对程序的维护。变量一般代表 一个文件列表 、编译命令选项。

常用的伪目标:clean(负责清理工作) 、 install(负责安装工作,将可执行程序拷贝到对应目录)。

太基础了,还有很多重要的没有补充。。。。。

makefile总结 (可做手册使用)

引言:楼主超棒。 千里之行,始于足下 Makefile使用总结 1. Makefile 简介 自己补充两个概念: make:一种控制编译或者重复编译软件...
  • qq_33850438
  • qq_33850438
  • 2016年07月14日 22:02
  • 719

makefile全面总结

makefile很重要       什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professio...
  • nyist327
  • nyist327
  • 2015年01月09日 13:17
  • 890

Makefile的编写总结

在Linux做开发,工程的编译输出,需要自己编写Makefile来构建,下面笔者根据自己的实践,做一些总结,本文并不是什么教程, 只是笔者觉得一些重要的东西在此记录下来。 一、基本格式 targe...
  • KentZhang_
  • KentZhang_
  • 2015年09月01日 22:10
  • 427

编写makefile遇到的一个错误

错误:makefile:2: *** missing separator.  Stop. 原因:makefile写规则的时候前面必须用tab而不是空格,再我的vim配置中设置了expandtab,自...
  • ruohuanni
  • ruohuanni
  • 2015年07月14日 21:10
  • 199

makefile相关总结

1、@ $ archclean:           @$(MAKEBOOT)   clean 或者 checkbin:           @   /bin/ture           @   ...
  • u013359794
  • u013359794
  • 2015年10月15日 09:09
  • 249

非常好的Makefile实用总结

1. Makefile 简介 http://www.cnblogs.com/wang_yb/p/3990952.html Makefile 是和 make 命令一起配合使用的. 很多大型项目的编...
  • leonliufeng
  • leonliufeng
  • 2016年10月18日 15:42
  • 936

Makefile经典教程(掌握这些足够) .

http://www.cnblogs.com/kungfupanda/p/4341184.html makefile很重要       什么是makefile?或许很多Winodws的程序员都不...
  • zxygww
  • zxygww
  • 2015年10月13日 15:00
  • 1107

makefile中常用函数

makefile中常用函数 http://blog.sina.com.cn/s/blog_4c4d6e74010009jr.html一函数的调用语法 二字符串处理函数subst fromtotext...
  • yangxuan0261
  • yangxuan0261
  • 2016年07月29日 03:46
  • 2502

图论相关算法知识总结

今天是暑假集训的第四场比赛,题目稍微有难度,但是前三道还算比较水,第一道题因为是图论题,当时一看就是裸的tarjan算法的模板题,但是好久没写这算法,临时上网找的模板,可惜忘了重边处理,就没过,在此也...
  • uestct
  • uestct
  • 2015年07月19日 22:43
  • 77

SEAndroid相关总结

有时候会遇到selinux相关的问题,今天来做一下总结:打开和关闭selinux功能 如果出现了selinux相关的权限拒绝,则在kernel log 或者android log中都有对应的”av...
  • mockingbirds
  • mockingbirds
  • 2016年11月03日 22:22
  • 1136
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Makefile相关总结
举报原因:
原因补充:

(最多只允许输入30个字)