make与Makefile提要
2015-12-27 04:38
369 查看
make和Makefile提要
参考:https://www.gnu.org/software/make/manual/make
命令
目标与需求条件target:prereq1 prereq2 #说明:target常见是executable or object files. <tab>commands ... .PHONY: clean clean: -rm -rf $(target) *.o
Makefile
内容
Makefile里主要包含了五种东西:显式规则、隐式规则、变量、指示和注释。这里参见gnu官方make手册3.1节
显式规则:显式写出来的
隐式规则:make自己推导出来的。详细参见官方.
main.o : defs.h 生成 main.o 所以会自动推导出有 main.c ,自动执行 cc -c main.c -o main.o
完整例子:
objects = main.o kbd.o \ command.o display.o edit : $(objects) cc -o edit $(objects) main.o : defs.h kbd.o : defs.h command.h command.o : defs.h command.h display.o : defs.h buffer.h .PHONY: clean clean : -rm edit $(objects)
变量:
指示directive :包括,
1包含另一个Makefile,类似于C的include一样
include foo *.mk $(bar) #包含进所有的mk文件和bar变量代表的文件。 #另外 -include filenames... 表示当文件不存在时继续而不报错。
2判断某块是否有效,类似于C的预编译
#ifdef一样
libs_for_gcc = -lgnu normal_libs = foo: $(objects) ifeq ($(CC),gcc) $(CC) -o foo $(objects) $(libs_for_gcc) else $(CC) -o foo $(objects) $(normal_libs) endif
3多行字面值的变量
注释#
变量与宏
用户定义变量环境变量
自动变量
赋值:
:=
?=
!=
+=
取出宏值:
$()
命令结果:“两个反斜点包裹
交互:输入输出
控制
函数
重定向
文件
相关文章推荐
- Leetcode-39.Combination Sum
- iOS objc在simulator-x86_64体系下一般传参方式
- 拦截器示例之日志记录
- Maven with Scala
- scala + intellij idea 环境搭建及编译、打包
- nginx 安装手记
- HDU 2082 找单词 --- 母函数
- 如何正确看待手机的续航
- 陈坤:一个贫穷而美貌的男人在这世上可能遭遇什么
- Scrum Meeting 14-20151227
- centos7图形配置 firewall-config
- centos7图形配置 firewall-config
- CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段
- 网页全栈工程师要点分析
- java使用jUnit,jMockit,dbunit做DAO层单元测试方法
- 拦截器与过滤器的区别
- Junit测试编程
- 在Activity之间使用Intent传值和Bundle传值的区别和方式
- 连京东都开始卖翻新机,教你识别手中的iPhone 隐藏id
- notepad++实现多处编辑