1. 问题场景

gcc(GNU Compiler Collection)即为GNU编译器套件,也可以简单认为是编译器,它可以编译很多种编程语言,包括C、C++、Objective-C、Fortran、Java等。当程序只有一个源文件时,直接就可以 用gcc命令编译它。但如果源文件太多,一个一个编译就会显得非常繁琐,于是研发人员想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具。

1.1 makefile

一个规则文件,make依据该规则文件来批处理执行编译。

问题:对于一个大工程,编写makefile是件极其复杂的事,手动编写不仅耗时且容易出错,于是研发人员又想到,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了CMake工具

2. 定义

CMake是一个跨平台的自动化 安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

  • 输出各种各样的makefile或者project文件 。
  • 编写cmakelists文件,它是CMake所依据的规则(值得注意的是,相对于编写makefile文件,编写makelists文件要简单的多)

2. 1原理

输入:组态档CMakeLists.txt文件(组态档是一种建构软件专用的特殊编程语言写的CMake脚本)
输出:各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。

2.2 CMake 功能

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

cmake (0)简介相关推荐

  1. 《UG NX8.0中文版完全自学手册》一第1章 UG NX 8.0简介

    本节书摘来自异步社区<UG NX8.0中文版完全自学手册>一书中的第1章,作者 刘昌丽 , 周进,更多章节内容可以访问云栖社区"异步社区"公众号查看 第1章 UG NX ...

  2. 第64节:Java中的Spring Boot 2.0简介笔记

    Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,sp ...

  3. varnish4.0简介

    Varnish 4.0 简介 Varnish 是一款开源的HTTP加速器和反向代理服务器,它的主要特点有: (1)是基于内存缓存,重启后数据将消失. (2)利用虚拟内存方式,io性能好. (3)支持设 ...

  4. 面包牛奶的挖洞记录(一)漏洞扫描方面的法律须知和等级保护2.0简介

    面包牛奶的挖洞记录(一)漏洞扫描方面的法律须知和等级保护2.0简介 你好哇!我是你们的面包牛奶啊,在大二学习完信息安全基础后,我就忍不住想证明自己的实战能力,于是我开始了我痛苦并着快乐的漏洞前期准备工 ...

  5. 小白也能读懂的 ZigBee 3.0 简介

    --作者简介 Michael 前绿米(小米)资深嵌入式软件工程师,7年以上开发经验,曾开发过小米米家网关系统.小米全屋智能家庭中枢M1S等物联网项目: 尤其擅长ZigBee.BLE Mesh.WiFi ...

  6. DirectX 8.0 简介 (转)

    DirectX 8.0 简介 (转)[@more@] DirectX112000>作者:Philip Taylor DirectX 8.0 简介 欢迎关注 Driving DirectX.在本月 ...

  7. Norton 360 V5.0简介及90天Microsoft OEM版下载

    Norton 360 V5.0简介及90天Microsoft OEM版下载 作者:shazi1896 2月17日,专业杀软厂商Symantec发布了Norton 360安全套装第五版.Symantec ...

  8. 【Vue3.0】Vue3.0简介-指令-过滤器-案例D2.0

    [Vue3.0]Vue3.0简介-指令-过滤器-案例 一.Vue3.0简介 1.1.vue3.0与vue2.0对比 vue2.0中绝大多数的API与特性,在vue3.0中同样支持.但是vue3.0中新 ...

  9. APACHE-ATLAS-2.1.0简介(三)

    APACHE-ATLAS-2.1.0简介(一) APACHE-ATLAS-2.1.0简介(二) 写在前面 ATLAS为组织提供开放式的元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和 ...

  10. APACHE-ATLAS-2.1.0简介(二)

    APACHE-ATLAS-2.1.0简介(一) 什么是元数据? 元数据(METADATA),用一句话定义就是:描述数据的数据.元数据打通了数据源.数据仓库.数据应用之间的壁垒,记录了数据从产生到消费的 ...

最新文章

  1. 经常使用的npm命令
  2. RabbitMQ之消息持久化
  3. 获取当前目录所有文件名 并且保存为1个00000.txt的文件文件bat
  4. SAP获利能力报表常用Tcode的区别
  5. 一种Android闪屏页实现方法(偏门别类)
  6. [php]Undefined offset: 0错误
  7. 主键索引 or 辅助索引?一文告诉你 Mysql limit 优化时的索引选择!
  8. python中为什么没有自增或者自减
  9. C# 基础知识复习(四)---数组
  10. vue-router路由详细笔记
  11. 好用的eclipse快捷键
  12. Python词频统计(去重)
  13. 分享几款好用的强力数据恢复软件
  14. vtigerCRM 是作为一种开源CRM软件
  15. 25 个超棒的 Python 脚本合集(迷你项目)
  16. S5PV210开发 -- TTL和CMOS电平
  17. android onkeydown()简介
  18. linux分屏命令,Linux中如何分屏显示的指令是什么
  19. I/O控制器 和 DMA控制方式
  20. Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 32>::plain_array() [with T = double;

热门文章

  1. SpringAOP静态代理和动态代理
  2. linux:su认证失败
  3. 线程同步:Condition
  4. Android——怎么引入okhttp3
  5. 软件测试-TC用户模板导入不成功
  6. python怎么封装方法然后调用_我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?...
  7. java emailbuilder 样式_Java8通用Builder了解一下
  8. masonry的约束应该写在哪里_规划奇思|“中心城区”到底在哪里?和城镇开发边界是什么关系?...
  9. html加上 extjs右键,extjs 处理HTML事件和自定义事件
  10. flask-mail异步发送邮件_spring Boot手把手教学(6):发送邮件