MAKEFILE 学习笔记 —— 实用功能
2016-03-03 18:18
281 查看
MAKEFILE 学习笔记 —— 实用功能
一. 变量的使用
当我们的程序越来越复杂时,变量的使用可以大大提高我们的效率。makefile 中变量的使用有点类似于 c 语言中的宏,格式如下 name = file 使用变量时应该加上$(),代码如下所示
obj = main.o func.o aaa: $(obj) gcc -o aaa main.o func.o main.o: main.c ex2.h gcc -std=c99 -c main.c func.o: func.c ex2.h gcc -std=c99 -c func.c clean: rm -fr $(obj) aaa
name:变量的名字,如以上代码中的 obj
file :变量所代表的文件名 如以上代码中的 main.o func.o
二. make的自动推导
在我们使用make进行编译链接时,像以上示例的代码不免有些麻烦,而 make 有一个自动推导的功能可以大大提高工作效率。即,当 make 发现一个 .o 文件时,便会自动将其所依赖的 .c 文件加载进来,这被称为自动推导,这也被称为 make 的隐晦规则。如下示例便是上面那个例子的 make 自动推导版。
obj = main.o func.o aaa: $(obj) gcc -o aaa main.o func.o main.o: ex2.h func.o: ex2.h clean: rm -fr $(obj) aaa
三. 共用.h文件
当我们的许多 .c 文件共用一个 .h 文件时,每次都写入同一个 .h 文件未免太麻烦,这里有一个精简的方法,即共用 .h 文件,如下代码:
obj = main.o func.o aaa: $(obj) gcc -o aaa main.o func.o main.o func.o: ex2.h clean: rm -fr $(obj) aaa
如以上代码,将共用同一个 .h 文件的目标文件写在同一行内即可。
四. 打扫
当我们编译完程序之后,便要清理一下所生成的那些链接文件。如下代码
obj = main.o func.o aaa: $(obj) gcc -o aaa main.o func.o main.o func.o: ex2.h .PHONY: clean clean : -rm -fr $(obj) aaa
PHONY: clean 是声明 clean 是伪目标
rm 之前的 “-” 是告诉 make 若编译时遇到错误,不用管,继续向下编译。
参考文献
[1] 陈浩《跟我一起写Makefile》相关文章推荐
- Ruby中的变量学习总结
- 详解Lua中的变量相关知识点
- dos批处理文件中的变量小结
- 探索PowerShell(七) PowerShell变量
- VBScript教程 第四课VBScript变量
- 关于SQL 存储过程入门基础(基础知识)
- perl 变量 $/ 的用法解析 上下文为行模式时,$/ 定义以什么来区分行
- VBS教程:VBScript 基础-VBScript 变量
- Erlang语法学习笔记:变量、原子、元组、列表、字符串
- mssql存储过程表名和字段名为变量的实现方法
- Shell脚本定义变量和重新赋值
- 在C语言编程中使用变量的基础教程
- 深入理解C++编程中的局部变量和全局变量
- php中动态变量用法实例
- PHP中判断变量为空的几种方法分享
- PHP 第三节 变量介绍
- 浅析PHP原理之变量分离/引用(Variables Separation)
- php中变量及部分适用方法
- C#编程自学之数据类型和变量一
- PowerShell中的变量基础知识介绍