makefile 之多目录,多目标编译

在makefile中,当需要编译分布在不同目录的子模块时,可以通过指定目标来进入子目录执行make。无需使用cd命令,利用`$(MAKE) -C 目录名`可以在不改变当前目录的情况下编译子目录中的makefile。为了将顶层变量传递给子makefile,可以使用`export 变量名`。例如,一个项目包含一个顶层程序和两个子模块(eXosip2与sdp),顶层makefile需要先编译子模块的静态库,然后链接自己的应用程序。通过这种方式,可以实现多目录、多目标的编译组织。
摘要由CSDN通过智能技术生成

makefile 编译程序,经常会遇到需要编译不同的子模块,需要先编译好子模块,再编译自己的应用的情况。

子模块分布在不同的目录(可能直接就是不同的组成员写的),这时候需要顶层makefile进入子模块目录执行makefile编译。

  • 进入不同的目录,不需要使用 cd 进入对应目录,可以使用
$(MAKE)  -C  XX(目录)

会自动进入相关的目录执行寻找makefile,执行make,进行编译,编译完之后,退出到当前目录。

  • 要希望从顶层 makefile 传递变量到下层的makefile,可以使用
variable = value

export  variable

参考网址,http://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Variables_002fRecursion.html#Variables_002fRecursion


举例说明,比如,现在有项目代码,顶层是自己的程序,包含下属两个子模块, eXosip2 目录,存放eXosip2库文件;sdp目录存放sdp分析文件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值