makefile文件编写

makefile命名规则:
makefile/Makefile

makefile三要素:
目标 依赖 规则命令

第一版

app:main.c add.c sub.c
    gcc -o app-I./include main.c add.c sub.c

更改其中一个文件,所有源码都要重新编译
依赖文件如果比目标文件新,则重新生成目标

第二版:

#objFiles 定义目标文件
objFiles=main.o add.o sub.o
#目标文件用法 $(Var)
app:$(objFiles)
    gcc -o app -I./include main.o add.o sub.o

main.o:main.c
    gcc -c main.c -I ./include
add.o:add.c
    gcc -c add.c -I ./include
sub.o:sub.c
    gcc -c sub.c -I ./include

makefile的隐含规则:默认处理第一个目标
函数:
wildcard可以进行文件匹配
patsubst内容的替换
makefile的变量:
$@代表目标
$^代表全部依赖
$<第一个依赖
$?第一个变化的依赖
第三版:

#get all .c files
Srcfile=$(wildcard *.c)
#all .c files --> .o files
objFiles=$(patsubst %.c,%.o,$(SrcFiles))
#目标文件用法 $(Var)
app:$(objFiles)
    gcc -o app -I./include $(ObjFiles)

%.o:%.c
    gcc -c $< -I./include  -o $@

test:
    echo $(SrcFiles)
    echo $(objFiles1)

clean:
    rm *.o
    rm app

@在规则前代表不输出该条规则的命令
规则前的"-"代表该条规则报错仍然执行
第四版:

#get all .c files
Srcfile=$(wildcard *.c)
#all .c files --> .o files
objFiles=$(patsubst %.c,%.o,$(SrcFiles))

all:app app1

#目标文件用法 $(Var)
app:$(objFiles)
    gcc -o $@ -I./include $(ObjFiles)

app1:$(objFiles)
    gcc -o $@ -I./include $(ObjFiles)
#模式匹配规则,$@,$<这样的变量,只能在规则中出现  
%.o:%.c
    gcc -c $< -I./include  -o $@

test:
    @echo $(SrcFiles)
    @echo $(objFiles1)

#定义伪目标,防止有歧义
.PHONY:clean all

clean:
    -@rm -f *.o
    -@rm -f app app1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

给算法爸爸上香

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值