现在的位置: 首页 > 综合 > 正文

The Architecture of Open Source Applications – CMake

2012年07月30日 ⁄ 综合 ⁄ 共 674字 ⁄ 字号 评论关闭

CMake的历史

最早接触CMake还是在使用OpenCV处理视频和图像的时候,CMake解决了在Windows和Linux等多平台的编译问题。

CMake源自VTK构建系统:在Unix平台生成Makefile,在Windows平台生成NMake文件,这样就可以利用各个平台现有的编译器来编译。但是VTK的架构不支持诸如libtiff/libjpeg等库,这样在Windows上无法为其创建一个简单已用的IDE,只能在命令行操作不符合Windows平台程序员的习惯。

CMake的产生解决了VTK存在的问题,其特性包括:
* Cmake本身仅依赖于C++编译器
* 在Windows上生成Visual Studio编译所需的配置文件
* 简单易用的GUI
* 自动进行系统的检测、依赖关系的检测

 

CMake

CMake的执行分为两个过程:配置和生成

配置过程:系统检测、环境变量的配置、依赖关系的检测

生成过程:生成平台相关的编译所需文件(作为Visual Studio或者gcc的输入)

 

Lessons Learned

* 向后兼容

* 语言选择问题:应该尽量选择已有的语言来解决复杂的诸如词法分析的问题,而不是自己从头开发一个(现在是基于lex/yacc)

* CMake本身可以支持插件,但由于平台问题,这些插件很有可能在有些平台上失效,故而导致整个编译失败。因此,现在的CMake并不容易扩展,这就避免了由于插件导致的种种的问题。

* 减少对外开放的接口,而对于内部接口不需要维护其向后兼容性。

 

Reference

http://www.aosabook.org/en/cmake.html

 

抱歉!评论已关闭.