Makefile基础

1.Makefile要解决的问题

1、如果工程没有编译过,那么工程中的所有.c 文件都要被编译并且链接成可执行程序。
2、如果工程中只有个别 C 文件被修改了,那么只编译这些被修改的 C 文件即可。
3、如果工程的头文件被修改了,那么我们需要编译所有引用这个头文件的 C 文件,并且
链接成可执行文件。
总之就是解决几千个文件的编译问题, 提高编译效率。

2.Makefile注意事项

1.命令缩进一定要使用TAB键, 这是Makefile语法规则决定的;
2.Makefile文件名区分大小写, 文件名一定是Makefile。

3.Makefile基本规则

Makefile由一系列规则构成, 如下
终极目标:依赖的文件集合
命令1
命令2

比如如下规则:
main: main.o file1.o file2.o
gcc main.o file1.o file2.o -o main
main.o: main.c
gcc -c main.c
file1.o: file1.c
gcc -c file1.c
file2.o: file2.c
gcc -c file2.c
clean:
rm main
rm *.o
这条规则的目标是main, 依赖的文件是main.o, file1.o, file2.o。第一次编译的时候由于main不存在,因此会执行第一条规则, 第一条规则依赖main.o file1.o file2.o, 这三个.o文件还不存在, 因此先更新这三个.o文件, make会查找以这三个.o文件为目标的规则并执行。

4.自动变量

常用自动变量:

$@ --> 规则中的目标

$< --> 规则中的第一个依赖条件

$^ --> 规则中的所有依赖条件

模式规则:

模式规则是在目标及依赖条件中使用%来匹配对应的文件,比如在目录下有main.c, func1.c, func2.c三个文件,对这三个文件的编译可以由一条规则完成:

%.o:%.c

$(CC) –c $< -o $@

这条模式规则表示:
main.o由main.c生成,
func1.o由func1.c生成,
func2.o由func2.c生成
这就是模式规则的作用,可以一次匹配目录下的所有文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值