LNIUXC之Makefile

Makefile规则

书写规则:

目标文件 : 依赖文件
(一个tab键)命令
==注:==tab键不能用空格替代

目标文件最终要生成的文件
依赖文件为了生成目标文件所需要的文件
命令通过依赖文件生成目标文件的方法

运行:执行***make***命令,执行命令的时候可以加上‘-n’,代表命令不执行,只是预览要执行的命令

伪目标 (空的)
(一个tab键)命令

常用:
clean:清除相关文件,命令的前加‘-’,可以在文件删除不成功时继续执行后面的命令
all/ALL:最终要生成的最终目标,不要写命令

运行: 执行 ***make 伪目标***命令

执行规则:
1、如果目标文件的时间早于依赖文件则会重新生成目标文件
2、如果依赖文件不存在则会去找相应的规则去生成依赖文件

=注意= 伪目标最好写在.phony的后面,避免当前目录下有重名文件,导致不执行伪目标

函数

makefile中变量不需要类型,例如:src=abc
取变量的值用$(变量) ====> $(src) ====> abc
Wildcard $(wildcard *.c) 匹配当前目录下所有.c文件
patsubst ( p a t s u b s t (patsubst %c,%o, (patsubst(src))

Src = $(wildcard *.c)
Obj = ( p a t s u b s t (patsubst %c,%o, (patsubst(src))

自动变量

$(@) 代表规则中的目标文件
$(^) 代表规则中的所有依赖文件
$(<) 代表规则中的第一个依赖文件

模式匹配

%.o : %.c
$(obj) : %.o : %.c (表示只会对obj变量中的.o文件有效)

工程文件管理

bin存放可执行文件
src存放源文件
include存放头文件
obj存放汇编后的二进制文件(目标文件)
lib存放库文件

简单的一个makefile模板

src = $(wildcard ./src/*.c)        
obj = $(patsubst ./src/%.c, ./obj/%.o, $(src))

target=./bin/a.out
all:$(target)

$(target):$(obj)
	gcc $(^) -o $(@)   

$(obj):./obj/%.o:./src/%.c
	gcc -c $(^) -I ./include -o $(@) 
	
.PHONY:clean all
clean:
	-rm -rf $(target) $(obj)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值