makefile----学习笔记总结
2015-12-28 14:41
411 查看
什么是 makefile?
makefile是一套编译规则,关系到整个工程,方便于大型项目,makefile 带来的好处就是——“自动化编译”,固化了源代码之间的关系,只要写好,那么只需要一个 make 命令(调用make命令就会去找makefile文件进行编译),整个工程完全自动编译,极大的提高了软件开发的效率。
默认make命令的文件可以命名为:makefile Makefile GNUmakefile
若想任意命名时,加上make -f 任意命名的文件名
makefile文件的规则:
目标:依赖关系
命令
目标:一般就是make命令后面可以所跟的目标,eg make install ,目标就是install
依赖关系:就是实现目标必须先要完成的事情
命令:任意的shell命令,命令前可以加@表示不输出命令本身,默认或输出命令本身,且命令前必须是至少一个tab键
执行make 相当于执行makefile文件中的第一条规则,且在一个目录下执行make调用的是本目录的makefile文件,不同目录下make的内容不同
make决定编译的要素:时间,会比较二进制文件(执行文件)跟源代码文件的时间,如果源码时间新,则必须重新编译
内置变量:
$@:表示规则中的目标文件集。
$%:仅当目标是函数库文件中,表示规则中的目标成员名。
$<:依赖目标中的第一个目标名字。
$^:所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。
$+:这个变量很像"$^",也是所有依赖目标的集合。只是它不去除重复的依赖目标。
$?:所有比目标新的依赖目标的集合。以空格分隔。
一个简单的例子:
例子上shell表示的makefile中的一个内置函数,$()调用变量,.PHONY表示makefile中的伪目标。
makefile是一套编译规则,关系到整个工程,方便于大型项目,makefile 带来的好处就是——“自动化编译”,固化了源代码之间的关系,只要写好,那么只需要一个 make 命令(调用make命令就会去找makefile文件进行编译),整个工程完全自动编译,极大的提高了软件开发的效率。
默认make命令的文件可以命名为:makefile Makefile GNUmakefile
若想任意命名时,加上make -f 任意命名的文件名
makefile文件的规则:
目标:依赖关系
命令
目标:一般就是make命令后面可以所跟的目标,eg make install ,目标就是install
依赖关系:就是实现目标必须先要完成的事情
命令:任意的shell命令,命令前可以加@表示不输出命令本身,默认或输出命令本身,且命令前必须是至少一个tab键
执行make 相当于执行makefile文件中的第一条规则,且在一个目录下执行make调用的是本目录的makefile文件,不同目录下make的内容不同
make决定编译的要素:时间,会比较二进制文件(执行文件)跟源代码文件的时间,如果源码时间新,则必须重新编译
内置变量:
$@:表示规则中的目标文件集。
$%:仅当目标是函数库文件中,表示规则中的目标成员名。
$<:依赖目标中的第一个目标名字。
$^:所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。
$+:这个变量很像"$^",也是所有依赖目标的集合。只是它不去除重复的依赖目标。
$?:所有比目标新的依赖目标的集合。以空格分隔。
一个简单的例子:
例子上shell表示的makefile中的一个内置函数,$()调用变量,.PHONY表示makefile中的伪目标。
相关文章推荐
- 使用Tomcat——表单中的中文服务端接收到为乱码
- 记一次hive的内存溢出(OutOfMemoryError: Java heap space)排查
- javascript滚动栏响应鼠标滑轮的实现上下滚动事件
- BZOJ 4321: queue2( dp )
- 函数及自定义函数
- (数学概念)矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵
- mysqldump使用
- Codeforces Round #337 (Div. 2) A. Pasha and Stick (水)
- YiiFramework入门知识点总结(图文教程)
- 利用StatusPage免费开源程序自建网站/主机监控列表过程
- 使用rsync同步数据(by quqi99)
- linux 查看log日志常用命令
- 栈的实现
- Java [Leetcode 83]Remove Duplicates from Sorted List
- [转]layoutSubviews总结
- Android 任务和返回栈
- CSS3:制作阴影
- 关于不定项参数的查询方法(多条件查询)
- 例子程序2:使用内存操作函数memset()给数组赋值
- POJ 2387 Til the Cows Come Home(spfa)