cmake (0)简介
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)简介相关推荐
- 《UG NX8.0中文版完全自学手册》一第1章 UG NX 8.0简介
本节书摘来自异步社区<UG NX8.0中文版完全自学手册>一书中的第1章,作者 刘昌丽 , 周进,更多章节内容可以访问云栖社区"异步社区"公众号查看 第1章 UG NX ...
- 第64节:Java中的Spring Boot 2.0简介笔记
Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,sp ...
- varnish4.0简介
Varnish 4.0 简介 Varnish 是一款开源的HTTP加速器和反向代理服务器,它的主要特点有: (1)是基于内存缓存,重启后数据将消失. (2)利用虚拟内存方式,io性能好. (3)支持设 ...
- 面包牛奶的挖洞记录(一)漏洞扫描方面的法律须知和等级保护2.0简介
面包牛奶的挖洞记录(一)漏洞扫描方面的法律须知和等级保护2.0简介 你好哇!我是你们的面包牛奶啊,在大二学习完信息安全基础后,我就忍不住想证明自己的实战能力,于是我开始了我痛苦并着快乐的漏洞前期准备工 ...
- 小白也能读懂的 ZigBee 3.0 简介
--作者简介 Michael 前绿米(小米)资深嵌入式软件工程师,7年以上开发经验,曾开发过小米米家网关系统.小米全屋智能家庭中枢M1S等物联网项目: 尤其擅长ZigBee.BLE Mesh.WiFi ...
- DirectX 8.0 简介 (转)
DirectX 8.0 简介 (转)[@more@] DirectX112000>作者:Philip Taylor DirectX 8.0 简介 欢迎关注 Driving DirectX.在本月 ...
- Norton 360 V5.0简介及90天Microsoft OEM版下载
Norton 360 V5.0简介及90天Microsoft OEM版下载 作者:shazi1896 2月17日,专业杀软厂商Symantec发布了Norton 360安全套装第五版.Symantec ...
- 【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中新 ...
- APACHE-ATLAS-2.1.0简介(三)
APACHE-ATLAS-2.1.0简介(一) APACHE-ATLAS-2.1.0简介(二) 写在前面 ATLAS为组织提供开放式的元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和 ...
- APACHE-ATLAS-2.1.0简介(二)
APACHE-ATLAS-2.1.0简介(一) 什么是元数据? 元数据(METADATA),用一句话定义就是:描述数据的数据.元数据打通了数据源.数据仓库.数据应用之间的壁垒,记录了数据从产生到消费的 ...
最新文章
- 经常使用的npm命令
- RabbitMQ之消息持久化
- 获取当前目录所有文件名 并且保存为1个00000.txt的文件文件bat
- SAP获利能力报表常用Tcode的区别
- 一种Android闪屏页实现方法(偏门别类)
- [php]Undefined offset: 0错误
- 主键索引 or 辅助索引?一文告诉你 Mysql limit 优化时的索引选择!
- python中为什么没有自增或者自减
- C# 基础知识复习(四)---数组
- vue-router路由详细笔记
- 好用的eclipse快捷键
- Python词频统计(去重)
- 分享几款好用的强力数据恢复软件
- vtigerCRM 是作为一种开源CRM软件
- 25 个超棒的 Python 脚本合集(迷你项目)
- S5PV210开发 -- TTL和CMOS电平
- android onkeydown()简介
- linux分屏命令,Linux中如何分屏显示的指令是什么
- I/O控制器 和 DMA控制方式
- Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 32>::plain_array() [with T = double;
热门文章
- SpringAOP静态代理和动态代理
- linux:su认证失败
- 线程同步:Condition
- Android——怎么引入okhttp3
- 软件测试-TC用户模板导入不成功
- python怎么封装方法然后调用_我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?...
- java emailbuilder 样式_Java8通用Builder了解一下
- masonry的约束应该写在哪里_规划奇思|“中心城区”到底在哪里?和城镇开发边界是什么关系?...
- html加上 extjs右键,extjs 处理HTML事件和自定义事件
- flask-mail异步发送邮件_spring Boot手把手教学(6):发送邮件