利用cmake来搭建开发环境

对于经常在终端下写程序的non-windows程序员,Makefile绝对是最常用的工具,小到一个文件的简单的测试程序,大到数百个文件的商业软件,只需要有shell,一个make命令就可得到可运行的程序,Makefile绝对功不可没;可惜世界中不是那么太平,不但各个Posix系统的API千差万别,硬件平台各异,就连Makefile本身也有多个不兼容的格式,譬如GNU Makefile 拿到Solaris平台上就没法make下去,除非你有gmake,但gmake对并行编译的支持就没有solaris自带的dmake要好了。

GNU autotools提供了一个不错的选择,可以做到组织工具链来生成所需的Makefile,但缺陷是学习起来比较麻烦,而且模版文件写起来比较费劲。老实说我跟Makefile打了近3年的交道,几乎没有自己写过automake脚本,相反的工作倒是干了不少,譬如分析生成的Makefile运行过程,然后模拟自己手写Makefile;得到一个轻爽的定制环境。

除了autotools,其实也有不少其他的工具,譬如apache的ant,基于Python的scons;ant在java界是鼎鼎大名了,可惜对c++的支持确实让我感觉很不习惯;scons号称可以嵌入Python代码,用起来也算简单,但是想实现复杂的功能就很头疼了,而且运行速度让人挠头。

cmake则弥补了上述几个工具的诸多缺陷:
1> 易于学习,文档易懂,只需牢记以下两个命令即可:

cmake --help
cmake --help-command-list
cmake --help-command xxx
cmake --help-variable-list
cmake --help-variable yyy

2> 以文本文件组织,利用cache的方式,所有的自定义cache变量可直接用vim查看。
3> 生成的Makefile文件简洁易懂
4> 编译器选项可自己在ccmake中编辑,利于交叉编译
5> 支持集成ctest/cpack,前者可以方便的做单元测试,后者则可以打包生成tgz/rpm
6> 支持多个生成器,可以生成eclipse/codeblocks/gmake/unix make文件,甚至可以生成VC各个版本的dsw/sln.
7> 内嵌语言,可以自己写函数、宏等

对于经常写小测试程序的人来说,在test目录下加上个CMakeLists.txt,里边加上几行简单的语句就可以方便的以后重复使用了。对于这种情况,手工写的Makefile碰到依赖检测这种麻烦的事情往往力不从心,automake又太小题大作,而cmake则恰到好处了。

对于大型程序,cmake可以自己定制生成的中间文件和目标文件路径,有效避免了automake带来的每个目录下生成一大堆文件的弊端,也不需要手工写Makefile。
最有用的是可以生成多个知名IDE的工程文件,包括Windows下的vc6-vc9.

时间: 2024-10-12 23:14:52

利用cmake来搭建开发环境的相关文章

深入浅出Docker(五):基于Fig搭建开发环境

概述 在搭建开发环境时,我们都希望搭建过程能够简单,并且一劳永逸,其他的同事可以复用已经搭建好的开发环境以节省开发时间.而在搭建开发环境时,我们经常会被复杂的配置以及重复的下载安装所困扰.在Docker技术未出现之前,我们可以使用Pupet.Chef.Ansible等配置管理工具把复杂的配置管理起来,这样的管理配置技术仍然是目前比较流行的方式之一.配置管理工具使用的都是自己的DSL语法定义,考虑到环境的复杂性,配置一套通用的开发环境需要针对各个系统定制,对于大部分开发环境这种维护成本仍然是很高的

linux系统中利用vagrant创建虚拟开发环境

Vagrant简介 作为程序员,可能需要同时开发多个项目,使用多种编程语言,需要使用各种操作系统,如果将很多东西放在同一个电脑上,肯定会被各种配置环境搞晕.一个比较好的办法就是每个项目都有一个干净的开发环境,虚拟机的一个主要用处就在于此,虚拟机可以给每一个项目配置一个虚拟机,从而让各个开发环境互相独立,干干净净.现在的项目不大可能由一个人单独完成,协同开发时候需要保障大家的开发环境都一样,为了避免每个开发人员一个个的单独配置参数,安装软件,我们想要的是环境只配置一遍,然后大家可以共享,Vagra

Linux程序设计(搭建开发环境--curses)

看官们,咱们今天要说的内容,是前面内容的一点小补充,具体的内容是:安装curses开发包,以搭建 开发环境.闲话休说,言归正转. 我们在前面说过搭建开发环境的内容,主要说了开发环境中的GCC和VIM,今天咱们会说如何搭建开发环境 中的另外一个工具:curses. curses是Linux上的一个图形库,不过我们使用的Mint只安装了库文件,没有安装与该库相关的头文件.没 有这些头文件,就不能进行相关的开发工作.因此,如果我们想使用Linux开发一些简单的图形软件的话,就 需要安装与该相关的头文件

Hadoop学习笔记(4) ——搭建开发环境及编写Hello World

Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclipse方便. 下载 进入官网:http://eclipse.org/downloads/. 找到相应的版本进行下载,我这里用的是eclipse-SDK-3.7.1-linux-gtk版本. 解压 下载下来一般是tar.gz文件,运行: $tar -zxvf eclipse-SDK-3.7.1-linu

3、Cocos2dx 3.0游戏开发找小三之搭建开发环境

尊重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27107295 搭建开发环境 使用 Cocos2d-x 的一个非常大便利之处在于,我们能够在 PC 或 Mac 环境下完毕编码和大部分的调试,然后再迁移到其它设备 上做实际环境測试.这意味着我们能够在 PC 上开发游戏.然后以极其低廉的成本把游戏迁移到 iOS 或其它平台上,从而节 省了开发阶段支付在设备方面的很多费用. 前面提到,Cocos2d-x

cocos2dx搭建开发环境

windows7 64位 搭建cocos2dx 版本开发环境 目前cocos2dx分为2.x版本和3.x版本,搭建环境稍有不同 先搭建3.1版本win32开发环境 相关准备: 注意:安装路径尽可能不要有中文 cocos2d-x-3.1 Visual Studio - vs 2012及以上, 低级的不支持 Python:安装的版本是:python-2.7.8.amd64.msi  cocos2dx需要python脚本支持 cocos2dx直接解压就行 vs2012安装过程很简单,几乎默认下一步就行

ExtJs学习-搭建开发环境

Extjs是一个非常棒的ajax框架,可以用来开发十分绚丽外观的客户端框架,能使B/S框架更加具有活力.它是一个用javascript编写的框架,与后台技术无关的ajax框架.因此,可以把ExtJs使用在asp.net.java.php等语言开发的应用程序中. 本人学习使用的是3.4版本,在3.4版本上进行学习和实验. 首先是获取Extjs框架,下载之后,解压文件到当前文件夹,目录如下所示: 编写第一个ExtJS程序 在eclipse工具中新建一个项目,引入ExtJs类库,代码在Eclipse中

Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境

原文:Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. The Raspberry Pi Foundation 是英国一个致力于科技推广的慈善组织,为广发爱好者和DIY科技迷开发了搭载ARM架构处理器的 mini 电脑 Raspberry Pi 并获得了成功.而微软最新发

python Day 1 - 搭建开发环境

搭建开发环境 首先,确认系统安装的Python版本是2.7.x: $ python --version Python 2.7.5 然后,安装开发Web App需要的第三方库: 前端模板引擎jinja2: $ easy_install jinja2 MySQL 5.x数据库,从官方网站下载并安装,安装完毕后,请务必牢记root口令.为避免遗忘口令,建议直接把root口令设置为password: MySQL的Python驱动程序mysql-connector-python: easy_install