哪些功能可以放进cmake构建工程,cmake环境配置
用cmake搭建开发环境-风无边际-C blog
使用cmake构建开发环境。对于经常在终端写程序的非windows程序员来说,Makefile绝对是最常用的工具,从一个简单的只有一个文件的测试程序,到上百个文件的商业软件。你只需要一个shell和一个make命令就可以得到一个可运行的程序。Makefile是绝对不可或缺的。可惜,世界并不那么太平。不仅Posix系统的API差别很大,硬件平台也不同。甚至Makefile本身也有很多不兼容的格式。比如GNU Makefile,除非你有gmake,否则无法在solaris平台上制作,但gmake对并行编译的支持不如Solaris。
GNU autotools提供了一个很好的选择,可以组织工具链生成需要的Makefile,但缺点是学习起来比较麻烦,模板文件也很难写。说实话,我和Makefile打了近3年的交道,几乎没有自己写过automake脚本。相反,我做了很多工作,比如分析生成的Makefile的运行过程,然后模拟自己手写的Makefile;获得轻盈舒适的定制环境。
除了autotools,还有很多其他的工具,比如apache的ant,scons基于Python。Ant在java界是有口皆碑的,可惜对C的支持真的让我觉得不习惯;Scons号称可以嵌入Python代码,简单易用,但是实现复杂的功能很头疼,运行速度让人挠头。
Cmake弥补了上述工具的许多缺陷:
1易学易懂,只要记住下面两条命令就行了:
cmake -帮助
cmake-help-命令列表
cmake - help-commandxxx
cmake-help-变量列表
Cmake-help-variable yyy2组织成一个文本文件,vim使用cache可以直接查看所有用户自定义的缓存变量。
生成的Makefile文件简洁易懂。
4编译器选项可以在ccmake中编辑,有利于交叉编译。
5支持ctest/cpack的集成,前者可以方便的做单元测试,后者可以打包生成tgz/rpm。
支持多个生成器,可以生成Eclipse/code blocks/GMAKE/UNIX make文件,甚至可以生成各种版本VC的dsw/sln。
7嵌入式语言,可以自己写函数,宏等。
对于经常写小测试程序的人来说,在测试目录中添加一个CMakeLists.txt,在里面添加几个简单的语句,以后就可以很方便的重用了。在这种情况下,手工编写的Makefile往往会因为依赖检测的麻烦而不堪重负。automake太繁琐,cmake刚刚好。
对于大型程序,cmake可以自行定制生成的中间文件和目标文件的路径,有效避免了automake带来的每个目录下生成大量文件的弊端,不需要手动编写Makefile。
最有用的是可以生成很多知名的IDE工程文件,包括Windows下的vc6-vc9。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。