嵌套执行make,多目标编译,多目标清理,多目标安装

本文介绍如何在work目录下通过一个总Makefile协调a、b、c子目录中的独立Makefile,实现各目标的编译。同时提供了一个clean规则以清除所有目标,并探讨了多目标的安装和卸载方法。
摘要由CSDN通过智能技术生成

假设work文件夹下有三个文件夹a,b,c.各自可以独立编译成一个目标,且a,b,c文件夹下已经存在makefile。在work下面写一个总的makefile来调用a,b,c各自的makefile

在写一个clean,清理所有target

TARGET=a b c
LDIR=$(shell pwd)   #LDIR=/work
CTARGET=$(foreach n,$(TARGET),$(LDIR)/$n) #/work/a /work/b /work/c
all:$(TARGET)

#多目标编译
$(TARGET):
    $(MAKE) -C $(LDIR)/$@ -f $(LDIR)/$@/makefile

#多目标清理
clean:$(CTARGET)
$(CTARGET):
    $(MAKE) -C $@ -f $@/makefile clean



.PHONY:$(TARGET) all clean $(CTARGET)
#需要设置成伪目标,因为a,b,c并不是执行文件,只是文件夹的名字。
#$@指代$(TARGET).  这样执行make,等于是make all,all是默认的项目。
#自动推导的时候就会一次执行a,b,c。如果不写all的话,make,执行的只是make a, a是默认的项目。
#观察make命令,其中—C表示切换工作目录,切换以后,会在该目录下寻找源文件
#不能有相同的伪目标名字,否则会冲突,所以一个用CTARGET(全路径),一个用TARGET(相对路径)
#函数$(foreach),foreach是函数名,总共三个参数,不同的参数用逗号隔开,表示把TARGET里的元素一个个取出来,赋值给n,然后拼接成$(LDIR)/$n

多目标安装和卸载

TARGET=a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值