zoukankan      html  css  js  c++  java
  • The Architecture of Open Source Applications CMake

    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

  • 相关阅读:
    Java基础--阻塞队列ArrayBlockingQueue
    Java基础--反射Reflection
    Java基础--对象克隆
    Java基础--HashCode
    Java基础--序列化Serializable
    OpenCV 绘制图像直方图
    PHP isset, array_key_exists配合使用, 并解决效率问题
    安装XDEBUG步骤及问题
    设计模式例子
    适配器模式例子
  • 原文地址:https://www.cnblogs.com/feisky/p/2709569.html
Copyright © 2011-2022 走看看