简介

CMake 可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。

“CMake”这个名字是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。

历史

CMake是为了解决美国国家医学图书馆出资的Visible Human Project专案下的Insight Segmentation and Registration Toolkit (ITK) 软件的跨平台建构的需求而创造出来的,其设计受到了Ken Martin开发的pcmaker所影响。pcmaker当初则是为了支持Visualization Toolkit这个开放源代码的三维图形和视觉系统才出现的,VTK也采用了CMake。在设计CMake之时,Kitware公司的Bill Hoffman采用了pcmaker的一些重要想法,加上更多他自己的点子,想把GNU建构系统的一些功能整合进来。CMake最初的实作是在2000年中作的,在2001年初有了急速的进展,许多改良是来自其他把CMake整合到自己的系统中的开发者,比方说,采用CMake作为建构环境的VXL社群就贡献了很多重要的功能,Brad King为了支持CABLE和GCC-XML这套自动包装工具也加了几项功能,奇异公司的研发部门则用在内部的测试系统DART,还有一些功能是为了让VTK可以过渡到CMake和支持(“美国

cmake与ninja构建编译(二)相关推荐

  1. 学习C++:C++进阶(三)CMake基础篇---用一个小型项目了解CMake及环境构建

    V1.1 于2022年7月15日第二次修改:添加了比较多的解释图,解读了各类库的CMakelist.txt文件 目录 第一部分 基础篇(Basics) 1.0 本部分主要学什么(Intro) 1.1 ...

  2. 【tgowt】cmake转ninja vs构建

    手动cmake-gui配置: G:\CDN\P2P-DEV\Libraries\tg_owt\out32_vs bat文件:G:\CDN\P2P-DEV\Libraries\tg_owt\out-32 ...

  3. WebRTC编译篇之Ninja 编译系统 二

    且让我们从WebRTC的实例来继续分析Ninja. 下载编译WebRTC, 首先要下载Chromium depot_tool,  Ninja就在deopt tool 之中. WebRTC的代码可以支持 ...

  4. CMake教程之构建Qt平台

    一:构建环境 二:目录结构 三:CMakeLists文件说明 四:测试 一:构建环境   关于Qt环境下的项目,这里也使用了cmake进行构建,这样可以减少对工程文件的依赖,同时可以做到跨平台的使用. ...

  5. Ninja 构建系统

    Ninja 构建系统 概述 Ninja([ˈnɪndʒə]忍者)是一个构建系统,与 Make 类似.作为输入,你需要描述将源文件处理为目标文件这一过程所需的命令. Ninja 使用这些命令保持目标处于 ...

  6. CMake 与Ninja 组合的关键点

    Ninja(忍者)一词让人联想到潜行和速度.在开发"另一个构建系统"时--正如 Ninja 的创造者 Evan Martin 在其手册中提到的那样--速度是最重要的.将构建系统命名 ...

  7. Android系统编译优化:使用Ninja加快编译

    背景 环境 关键编译阶段和耗时分析 阶段一:Soong bootstrap 阶段二:Kati遍历.mk搜集与ninja生成 阶段三:Ninja编译 编译优化 对比汇总 背景 Android系统模块代码 ...

  8. Ninja构建系统初探

    Ninja构建系统概述 Ninja是一个专注于速度的小型构建系统.它与其他构建系统在两个主要方面有所不同:一是它被设计为由更高级别的构建系统生成.ninja文件作为其输入:二是它被设计为尽可能快地执行 ...

  9. CMake I 指定构建类型Debug/Release

    目录 一.单配置生成器CMAKE_BUILD_TYPE 1.CMakeLists.txt 2.构建 (1)Release (2)Debug 二.复合配置生成器CMAKE_CONFIGURATION_T ...

最新文章

  1. Jmeter性能测试之请求MXL格式报文
  2. java arraylist 对象 删除_ArrayList实现删除重复元素(元素不是对象类型的情况)...
  3. STL源代码分析(ch 1)组态1
  4. ubuntu 编辑器中文乱码
  5. JAVA——json序列化错误[hibernateLazyInitializer,handler,fieldHandler]解决方案
  6. 如何使用网络库实现应用级消息收发
  7. mysql备份命令和还原命令_mysql数据备份和还原命令
  8. 独家首发 | 900页阿里文娱技术实战,8大技术栈解析技术全景
  9. Zookeeper的来源
  10. ORM SQLAlchemy 简介
  11. LeetCode 1802. 有界数组中指定下标处的最大值(思维题)
  12. 喜报!DT最新通用管理平台开源了
  13. 蓝宝石会升级bios吗_别再听别人忽悠!升级BIOS的三大误区
  14. 三星Galaxy S21系列通过认证:终究还是要学苹果“保护环境”?
  15. wdatepicker不显示秒_为什么别人电脑开机只要3秒,你有固态硬盘却要等上18秒?...
  16. cdt规约报文用程序解析_程序员必备的学习笔记《TCP/IP详解(二)》
  17. Eigen学习笔记1
  18. 23_多易教育之《yiee数据运营系统》OLAP平台-整体概述篇
  19. python电脑版微信-微信PC版的API接口 | 可通过Python调用微信功能
  20. 网站PHP框架之Laravel5.5(十一)数据库版本控制数据迁移工具migration详解

热门文章

  1. SQL常用用法相关笔记
  2. 0112 - 借用纸币发行门票
  3. myeclipse中svn图标状态(同步标记)不显示问题的解决方法
  4. Windows server 2003网络服务之搭建服务器群集
  5. 10月25日-10月29日一周宣讲会安排
  6. .NET 6 Preview 5
  7. WebNN 人物检测、人脸识别、超分辨率、图像字幕、情感分析、噪声抑制
  8. PyTorch 和 TensorFlow 引领未来
  9. Excel Spreadsheet 转换web HTML 5 展示
  10. Android 5.0 十大新特性