makefile 编译程序,经常会遇到需要编译不同的子模块,需要先编译好子模块,再编译自己的应用的情况。
子模块分布在不同的目录(可能直接就是不同的组成员写的),这时候需要顶层makefile进入子模块目录执行makefile编译。
- 进入不同的目录,不需要使用 cd 进入对应目录,可以使用
会自动进入相关的目录执行寻找makefile,执行make,进行编译,编译完之后,退出到当前目录。
- 要希望从顶层 makefile 传递变量到下层的makefile,可以使用
export variable
参考网址,http://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Variables_002fRecursion.html#Variables_002fRecursion
举例说明,比如,现在有项目代码,顶层是自己的程序,包含下属两个子模块, eXosip2 目录,存放eXosip2库文件;sdp目录存放sdp分析文件。
顶层的makefile编译时,需要先编译出 eXosip2 与 sdp 静态库,再进行链接编译 自己的应用
<

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

被折叠的 条评论
为什么被折叠?



