makefile学习笔记
来源:互联网 发布:mark knopfler知乎 编辑:程序博客网 时间:2024/05/21 10:32
1.前言
通常一个项目生成可执行程序的过程是:对源文件编译生成.o结尾的目标文件,然后将.o的文件链接起来生成可执行文件。
编译:编译器编辑源文件,编译的时候只做程序语法上的检查等,生成相应的目标文件
链接:将相应的目标文件链接起来,寻找相应的函数实现等。
2.Makefile基础
目标(targets) : 生成目标需要的文件(prerequisites)
make需要执行的命令(command)
当执行make命令的时候,make会比较targets以及prerequisites文件,由于生成目标文件依赖冒号后面的文件,当这些文件更新或者target文件不存在的时候,会执行下面定义的make命令。
例子:假设有两个文件main.c head.h,其中main.c引用了head.h里面的定义
那么makefile为:
test : main.o
gcc -o test main.o
main.o : main.c head.h
gcc -c main.c
这样当main.c或者head.h有更新的时候,执行make的时候会重新编译生成心的可执行文件。
3.Makefile语法
(一) 可以使用变量,和shell使用变量一样
var = ‘main.c’
使用的时候就是${var}
(二) 依赖关系
上面的main.o可以写成
main.o : head.h
(三) include其他的makefile文件
同c++语言的include文件一样,makefile的include也是讲相应的文件内容复制进来。
语法: include *.mk a.make
这条语句将会把所有以mk结尾以及a.make的文件引入进来
(四) VPATH以及vpath
大写的VPATH指定makefile执行make命令的时候找到相应的依赖文件。
具体语法 VPATH =目录:目录
比如:
-src
-head.h
-main.cpp
-makefile
其中makefile制定路径VPATH = src
但是VPATH只是制定make所需要的路径,而g++编译的时候也需要寻找路径,则需要添加-I来将相应的路径名包含进去
g++ -c main.cpp -I src来指定
另外通过使用小写的vpath指定makefile搜索路径,如vpath %.h src
(五)@各种变量
Makefile有三个非常有用的变量。分别是$@,$^,$<代表的意义分别是:
$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。
- Makefile学习笔记
- makefile学习笔记
- makefile学习笔记(1)
- Makefile学习笔记
- MakeFile学习笔记一
- makefile学习笔记
- makefile学习笔记
- Makefile的学习笔记
- makefile学习笔记
- Makefile学习笔记
- Makefile学习笔记
- Makefile学习笔记
- makefile学习笔记
- Makefile学习笔记
- makefile学习笔记
- Makefile的学习笔记
- Makefile学习笔记
- makefile学习笔记
- 常用方法2 ---字符串处理类
- 关于ActionContext.getContext()的用法心得
- LeetCode::Remove Duplicates from Sorted List
- UVa 353 - Pesky Palindromes
- js字符串转换成数字,数字转换成字符串
- makefile学习笔记
- lambda表达式——.net3.5新特性
- 常用方法1 ---数学处理类
- Android学习之路
- AS3的Objec类t与关联数组
- Android LayoutInflater详解
- LeetCode::Remove Duplicates from Sorted List II
- 关于工控系统信息安全的一些思考
- UVA - 196 Spreadsheet