makefile的简单应用纪录(将多个文件各生成一个.o文件)

# -C dir读入指定目录下的Makefile
# -f  file读入当前目录下的file文件作为Makefile
# -i忽略所有的命令执行错误
# -I dir指定被包含的Makefile所在目录
# -n只打印要执行的命令,但不执行这些命令
# -p显示make变量数据库和隐含规则    
# -s在执行命令时不显示命令
# -w如果make在执行过程中改变目录,打印当前目录名
CC = gcc #定义CC为gcc
OBJS = main.o p1.o p2.o p3.o p4.o p5.o
OBJ = test/test
CFLAGS = -Wall -O -g 
VPATH=p1:p2:p3:p4:p5
$(OBJ):$(OBJS)
    $(CC) $^ -o $@
#上面一段可以不用写,利用了makefile的隐含规则,不过使用隐含规则的时候要源文件名和依赖中任何一个文件的名字相关联才行
main.o:main.c
    $(CC) -c $< $(CFLAGS) -o $@
#上面一段可以不用写,利用了makefile的隐含规则
p1/p1.o:p1.c
    $(CC) -c $< $(CFLAGS) -o $@

p2/p2.o:p2.c
    $(CC) -c $< $(CFLAGS) -o $@

p3/p3.o:p3.c
    $(CC) -c $< $(CFLAGS) -o $@

p4/p4.o:p4.c
    $(CC) -c $< $(CFLAGS) -o $@

p5/p5.o:p5.c
    $(CC) -c $< $(CFLAGS) -o $@

.PHONY:clean
clean:
    @find ./ -name "*.o" -type f -print -exec rm {} \;;rm main
#加一个@表示不用打印这一段命令

注意:如果上面的p1/p1.o    p2/p2.o等写成p1.o   p2.o的话生成的.o文件是放在当前文件夹的,所以如何命令就决定了.o文件的输出路径

下面make之前的文件目录路:

下面是make之后文件的目录情况:

 

 当然,也可以通过makefile的隐含规则来做,代码如下:
OBJS = main.o p1.o p2.o p3.o p4.o p5.o
OBJ = test/test

VPATH=p1:p2:p3:p4:p5   //p1,p2,p3,p4,p5都为文件名,指明去这些文件夹找.o文件
$(OBJ):$(OBJS)
 
.PHONY:clean
clean:
    @find ./ -name "*.o" -type f -print -exec rm {} \;;rm main

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值