通用的Makefile及解释
来源:互联网 发布:阿里云视频直播php 编辑:程序博客网 时间:2024/06/07 17:28
- ":="赋值,和"="不同的是,":="在赋值的同时,会将赋值语句中所有的变量就地展开,也就是说,A:=$(B)后,B的值的改变不再影响A
- 隐含规则。GUN Make在不特别指定的情况下会使用诸如以下编译命令:$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@,这也是为什么这个Makefile最后一个命令没有添加$(CPPFLAGS)的原因,因为缺省是包含这个变量的
- 函数和变量很相似:"$ (函数名,空格,一列由逗号分隔的参数)"
- SOURCES = $(wildcard *.cpp) 列出工作目录下文件名满足"*.cpp"条件的文件,以空格分隔,并将列表赋给SOURCE变量
- patsubst函数:3个参数。功能是将第三个参数中的每一项(由空格分隔)符合第一个参数描述的部分替换成第二个参数制定的值
- addprefix函数:2个参数。将源串(第2个参数,由空格分隔)中的每一项添加前缀(第1个参数)
- filter-out函数:2个参数。从第二串中过滤掉包含在第一个串中的项
- $(CC) -MM -MMD $(SOURCE) : 对每个源文件生成依赖(dependence,Make通过依赖规则来判断是否需要重新编译某个文件),"D"生成".d"文件,-MM表示去掉 depends里面的系统的头文件(使用<>包含的头文件)(若使用-M则全部包含,事实上,系统头文件被修改的可能性极小,不需要执行依赖检查)
- .PHONY,不检查后面制定各项是否存在同名文件
- ifneg...else...endif,Makefile中的条件语句
- -include $(DEPS) : 将DEPS中的文件包含进来,"-"表示忽略文件不存在的错误
- @$(RM) *.o : 开头的"@"表示在Make的时候,不显示这条命令(GNU Make缺省是显示的)
- all : 作为第一个出现的目标项目,Make会将它作为主要和缺省项目("make"就表示"make all")
- deps : 只生成依赖文件(.d文件)
- objs : 为每一个源码程序生成或更新 '.d' 文件和'.o'文件
- clean : 删除所有'.d','.o'和可执行文件
- rebuild : clean然后重建
- 内部变量$@, $< $^ : 分别表示目标名(:前面的部分,比如all),依靠列表(:后面的部分)中的第一个依靠文件,所有依靠文件
摘自:http://blog.csdn.net/yusiguyuan/article/details/17348615 鱼思故渊的专栏
0 0
- 通用的Makefile及解释
- 通用的Makefile及解释
- 通用的Makefile及解释
- 通用Makefile及部分解释(转)
- Android makefile mk 重要参数解释及 通用模板编写
- makefile解释及模板
- 通用Makefile原理及应用
- 一个通用的Makefile
- 一个通用的Makefile
- 一个通用的Makefile
- makefile的通用写法
- 一个通用的Makefile
- 通用的MAKEFILE文件
- 通用的makefile文件
- 一个通用的makefile
- 较为通用的makefile
- 通用的makefile模板
- 一个通用的Makefile
- HashMap使用Comparator排序
- 追踪算法MUSTer体验
- std::bind源码剖析
- jQuery中 $(this)与this的区别
- 隐马尔科夫模型(HMMs)之一:简介及生成模式
- 通用的Makefile及解释
- ubuntu下备份系统以及遇到的问题
- 在大数据圈你不知道的15个新技术
- c++较好程序:map的enum键
- HTML 基础语法1
- Android 应用启动流程初步分析之1
- C#和java混合编程
- CALayer简单的时钟动画
- 关于Fragment中定义一个ListView,然后给这个ListView添加header(ViewPager)的问题