利用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-11-10 12:59:30

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

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

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

mac book 搭建开发环境

mac book 搭建开发环境 (1)安装jdk mac jdk 下载地址:http://www.oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html 注意:要下载jdk,而不是jre (2)设置java环境变量 mac booke中安装jdk ,没有让用户选择安装目录,那么jdk安装到了哪里呢? 默认安装到了:   /Library/Java/JavaVirtualMachines/jdk1.8.0_7

《iOS 8开发指南(第2版)》——第1章,第1.3节工欲善其事,必先利其器——搭建开发环境

1.3 工欲善其事,必先利其器--搭建开发环境 iOS 8开发指南(第2版) 学习iOS开发也离不开好的开发工具的帮助,如果使用的是Lion或更高版本,下载iOS开发工具将很容易,只需通过简单地单击操作即可.为此,在Dock中打开Apple Store,搜索Xcode并免费下载它,坐下来等待Mac下载大型安装程序(约3GB).如果你使用的不是Lion,可以从iOS开发中心(http://developer.apple.com/ios)下载最新版本的iOS开发工具. 注意: 如果是免费成员,登录i

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 并获得了成功.而微软最新发

《iOS 9 开发指南》——第1章,第1.3节工欲善其事,必先利其器——搭建开发环境

1.3 工欲善其事,必先利其器--搭建开发环境 iOS 9 开发指南 图片 2 知识点讲解:光盘:视频\知识点\第1章\搭建开发环境.mp4 学习iOS 9开发也离不开好的开发工具的帮助,如果使用的是OS X El Capitan系统,下载iOS 9开发工具将很容易,只需通过简单地单击操作即可.为此,在Dock中打开Apple Store,搜索Xcode 7并免费下载它,坐下来等待Mac下载大型安装程序(约5GB).如果你使用的不是OS X El Capitan系统,可以从iOS开发中心(htt

二、Angular 2.0开发指南以及搭建开发环境

自第一章讲Angular2.0的简单开发入门,我们了解到ng2的开发实践是围绕着web-component来展开的,ng2中更加强化了Component的概念,弱化了指令的概念(实际上Component是复杂指令).同时我们学习到web-component中数据和视图是如何互相影响的,即Input和Output的概念,数据通过Input往view以及view里的子组件传递,view及其子组件通过Ouput来改变数据(VM通过数据绑定机制实现互通,View <- data-bindings ->

Django 博客开发教程 1 - 搭建开发环境

本教程使用的开发环境 本教程写作时开发环境的系统平台为 Windows 10 (64 位),Python 版本为 3.5.2 (64 位),Django 版本为 1.10.6. 建议尽可能地与教程的开发环境保持一致(尤其是 Python 与 Django 版本),避免不必要的麻烦.推荐的 Python 版本为 Python 3.4 或以上,Django 版本号必须为 Django 1.10.x. 注意:本教程将尽量保证兼容 Python 2,但不会在 Python 2 环境下做测试.如果你因为某

《Python爬虫开发与项目实战》——1.2 搭建开发环境

1.2 搭建开发环境 俗话说:"工欲善其事必先利其器",在做Python爬虫开发之前,一个好的IDE将会使编程效率得到大幅度提高.下面主要介绍两种IDE:Eclipse和PyCharm,并以在Windows 7上安装为例进行介绍.1.2.1 Eclipse+PyDev Eclipse是一个强大的编辑器,并通过插件的方式不断拓展功能.Eclipse比较常见的功能是编写Java程序,但是通过扩展PyDev插件,Eclipse就具有了编写Python程序的功能.所以本书搭建的开发环境是Ecl

《ASP.NET 开发从入门到精通》----第2章 搭建开发环境 2.1 配置ASP.NET环境

第2章 搭建开发环境 ASP.NET 开发从入门到精通 ASP.NET是一门功能强大的Web开发技术,它是建立在特定的开发平台之上的.所以在进行ASP.NET开发前,需要为其建立专门的开发平台,搭建开发环境.在本章中,将简要介绍搭建ASP.NET开发环境的方法,为读者学习本书后面的内容打好基础. 2.1 配置ASP.NET环境 知识点讲解:光盘:视频\PPT讲解(知识点)\第2章\配置ASP.NET环境.avi 因为ASP.NET应用程序的宿主是IIS,它包含在微软的Windows系统中.对于个