01_Makefile文件编写

Makefile文件

格式:
    #目标:依赖(即条件)
    #   命令

/*注意一:我们通常在make时候,直接就是执行第一条目标,但是可以指定执行的目标。例如:make clean , make app等*/

/*阶段一:
注释:这是最粗略的版本*/
#app:add.c sub.c dive.c mul.c main.c
#   gcc add.c sub.c dive.c mul.c main.c -o app

/*阶段二:
注释:改进,有时候我们在make时不想要更新已存在的文件,只想要更新改动过的文件,根据第一阶段的makefile文件,我们的所有依赖项都会重新编译,这很浪费时间。但是通过下面阶段二的写法,分别编译依赖项,可以只更新我们更改过的文件,提高效率。*/
#app:add.o sub.o dive.o mul.o main.o
#   gcc add.o sub.o dive.o mul.o main.o -o app

#add.o:add.c
#   gcc -c add.c
#sub.o:sub.c
#   gcc -c sub.c
#dive.o:dive.c
#   gcc -c dive.c
#mul.o:mul.c
#   gcc -c mul.c
#main.o:main.c
#   gcc -c main.c

/*阶段三:
注释:makefile也有很多的环境变量,使用这些环境变量,可以使我们更加专业化。*/
# $@表示目标,$^表示所有依赖,$<表示依赖中的第一个
#obj=add.o sub.o mul.o dive.o main.o
#src = $(wildcard *.c) //获取当前目录下所有.c文件名
#obj = $(patsubst %.c,%.o,$(src))//将.c文件名换成.o文件名
#target = app

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

#%.o:%.c
#   gcc -c $< -o $@

/*伪目标:避免和同名文件冲突,改善性能。*/
#阶段四
CPPFLAGS= -Iinclude
CFLAGS= -g -Wall
LDFLAGS= 
CC=gcc
#CC=arm-linux-gcc

src = $(wildcard *.c)
obj = $(patsubst %.c,%.o,$(src)) /*obj=$(src:.c=.o)等同*/
target = app

$(target):$(obj)
    $(CC) $^ $(LDFLAGS) -o $@

%.o:%.c /*.c.o:等同*/
    $(CC) -c $< $(CFLAGS) $(CPPFLAGS) -o $@

.PHONY:clean

#彻底清除生生过程文件
clean:
    -rm -f *.o
    -rm -f app

#彻底清除生生过程文件和生成配置文件
distclean:
    rm /usr/bin/app
install:
    cp app  /usr/bin


test:
    @echo $(src) /*取消回显*/
    @echo $(obj)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值