那谁的技术博客

感兴趣领域:高性能服务器编程,存储,算法,Linux内核
随笔 - 210, 文章 - 0, 评论 - 1183, 引用 - 0
数据加载中……

我的项目Makefile文件模板

整理出来的一个Makefile模板,新增了一个内容,调用gcc生成依赖文件,这样如果某个c文件包含的头文件被更新了,该c文件以及依赖于该c文件的obj文件都会被重新编译.
这个模板是按照我习惯的项目文件组织形式进行定义的,我的习惯是头文件放在include文件夹,代码放在src文件夹,目标文件放在obj文件夹,生成的静态库放在lib文件夹,而可执行程序放在bin目录,现在新增的依赖关系文件则放在deps文件夹.

这里是使用该Makefile模板的一个项目实例.

其中main.c和hello.c都包含了头文件hello.h,而test,h只有hello.c才包含,因此在test.h被更新的时候只有hello.o会被重新编译.可以自行进行测试(如使用touch命令更新文件的时间).

这个模板的缺点也是明显的,比如不支持把源代码放在多个文件夹编译等等.不过定制makefile模板我就没有想过做个大而全的东西来,至少目前没有,只要能够满足我的需求就行了:)



posted on 2009-02-23 22:55 那谁 阅读(10152) 评论(7)  编辑 收藏 引用 所属分类: Linux/Unix

评论

# re: 我的项目Makefile文件模板  回复  更多评论   

为什么不尝试一下scons呢?
2009-02-24 20:31 | 牧云人

# re: 我的项目Makefile文件模板  回复  更多评论   

@牧云人
第一次听说这个东西,下次尝试一下.

2009-02-24 20:43 |

# re: 我的项目Makefile文件模板  回复  更多评论   

楼主,对于几个源代码的文件,可以考虑直接用Makefile写写。但是对于真正的项目,用Makefile就远远不足了。建议楼主了解一下三个工具,autotools、CMake、SCons。使用这些工具,对于你写的这50行左右的Makefile,甚至可能可以缩减为不超过5-10行。

autotools,包括automake, autoconf之类的工具。它能够自动生成Makefile。是比较早期的Makefile替代物(Makefile不叫早期,叫原始)。不难用,很多开源软件都用它。

CMake和SCons是比较现代点的工具。相比而言,我更推荐CMake。

CMake可以跨平台,它并不直接build,而是先生成平台上习惯的Build文件,然后再用平台自己的工具进行Build。比如在Linux上,它可以先生成Makefile,然后用户直接make就可以了。而在Windows上,它可以直接生成Visual Studio的项目文件,然后用户可以用VS打开其文件进行Build。这种方式我比较喜欢,而且使用起来也非常的简单。

SCons是基于Python的,甚至配置也是,强大之处在于如果你会Python,那么可以在里面做任何事,毕竟这比automake或者makefile的shell强大太多了。但是缺陷是许久没有发展了,主要在bugfix中。而且通过google trends比较可以看出CMake比SCons似乎更有活力,发展更好。
2009-02-25 00:23 | Dancefire

# re: 我的项目Makefile文件模板  回复  更多评论   

@Dancefire
感谢推荐,我会找来看看的.
2009-02-25 22:39 |

# re: 我的项目Makefile文件模板  回复  更多评论   

有个bakefile不知道大家用过没有?
2009-02-26 12:54 | 梦在天涯

# re: 我的项目Makefile文件模板[未登录]  回复  更多评论   

ACE带的那个MPC也挺好用的。。
2009-03-05 15:58 | bobo

# re: 我的项目Makefile文件模板  回复  更多评论   

请问makefile中这条语句干啥用的?谢谢
sed -e 1's,^,$(OBJ_DIR)/
2009-04-11 10:33 | c

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理