免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3777 | 回复: 4
打印 上一主题 下一主题

怎么用makefile管理多个模块的工程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-23 17:01 |只看该作者 |倒序浏览
多个模块的工程,如何用makefile管理,方便上线
比如目录结构如下
_____
| src |
-----
   |   _______
   |---|common|
   |   -------
   |   _____
   |---|app1|
   |   -----
   |   _____
   |---|app2|
   |   -----
   |   _____
   |---|app3|
       -----

其中common目录下是一些公共的.h 和 .cpp文件, app1,app2,app3目录是互不相干的三个应用模块,都include到common中的文件.
为了上线方便,需要能用一个指令就把app1,app2,app3三个应用程序都build好,初步想法是这样
1.在根目录创建mk.incl文件,写入一些环境变量定义等公共部分
2.在common app1 app2 app3四个目录下都建立一个makefile文件,common生成.o文件,其他的生成应用程序.他们都会用include指令包含mk.incl文件中的内容.
3.在根目录下创建makefile目录,可以先调用common目录下的makefike,然后调用app1 app2 app3中的makefile生成三个应用程序.
_____
| src |
-----
   |   _______
   |---|common|----makefile
   |   -------
   |   _____
   |---|app1|---makefile
   |   -----
   |   _____
   |---|app2|---makefile
   |   -----
   |   _____
   |---|app3|---makefile
   |   -----
   |
   |---mk.incl
   |---makefile

有什么其他好方法,以及一些需要注意的地方吗

论坛徽章:
0
2 [报告]
发表于 2006-11-23 22:04 |只看该作者

个人建议

1。可以考虑将comm目录下的程序生成一个静态库
2。环境变量的定义统一写入.profile文件中
3。在src目录下生成一个makefile文件包含需要关联的目录
4。app1,app2,app3目录中的makefile均调用comm静态库产生各自执行文件

论坛徽章:
0
3 [报告]
发表于 2006-11-23 22:24 |只看该作者
用 GNU build system 吧,也叫 Autotools,很容易解决你的这些问题。

论坛徽章:
0
4 [报告]
发表于 2006-11-24 09:02 |只看该作者

回复 1楼 zhongyj 的帖子

cmake 使用非常简单 www.cmake.org

手工维护makefile和源文件间的依赖关系还是比较困难的。

论坛徽章:
0
5 [报告]
发表于 2006-11-24 09:09 |只看该作者
以前本来想用Autotools来作的,因为很少在unix开发,makefile都是刚学的,autotools好像也没有中文文档,所以想先不用autotools.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP