一 简介:

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

二 特点:

1. 开放源代码,使用类 BSD 许可发布。http://cmake.org/HTML/Copyright.html

2. 跨平台,并可生成 native 编译配置文件,在 Linux/Unix 平台,生成 makefile,在苹果平台,可以生成 xcode,在 Windows 平台,可以生成 MSVC 的工程文件。

3. 能够管理大型项目,KDE4 就是最好的证明。

4. 简化编译构建过程和编译过程。Cmake 的工具链非常简单:cmake+make。

5. 高效虑,按照 KDE 官方说法,CMake 构建 KDE4 的 kdelibs 要比使用 autotools 来构建 KDE3.5.6 的 kdelibs 快 40%,主要是因为 Cmake 在工具链中没有 libtool

6. 可扩展,可以为 cmake 编写特定功能的模块,扩充 cmake 功能。

三 编译:

1. 编写 CMake 配置文件 CMakeLists.txt 。

2. 执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile。其中, PATH 是 CMakeLists.txt 所在的目录。

3. 使用 make 命令进行编译。

四 建议:

1,如果你没有实际的项目需求,那么看到这里就可以停下来了,因为 cmake 的学习过程就

是实践过程,没有实践,读的再多几天后也会忘记。

2,如果你的工程只有几个文件,直接编写 Makefile 是最好的选择。

3,如果使用的是 C/C++/Java 之外的语言,请不要使用 cmake(至少目前是这样)
4,如果你使用的语言有非常完备的构建体系,比如 java 的 ant,也不需要学习 cmake,

虽然有成功的例子,比如 QT4.3 的 csharp 绑定 qyoto。

4,如果仅仅使用 qt 编程,没有必要使用 cmake,因为 qmake 管理 Qt 工程的专业性和自 动化程度比 cmake 要高很多。

5,如果项目已经采用了非常完备的工程管理工具,并且不存在维护问题,没有必要迁移到cmake

五 参考:

1 博客:

https://blog.csdn.net/xierhacker/article/details/79445339?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=867b55e2-befc-4e0b-85ac-8c27ef3c2e31&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

2 书籍:cmake实践

CMake的作用和价值--概念简介的更多相关文章

  1. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  2. java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一)

    目前对于同步,仅仅介绍了一个关键字synchronized,可以用于保证线程同步的原子性.可见性.有序性 对于synchronized关键字,对于静态方法默认是以该类的class对象作为锁,对于实例方 ...

  3. Java多线程概念简介 多线程中篇(一)

    Java的线程与操作系统的线程   在线程的相关介绍中,有讲到“线程的实现”分为三种:内核支持,用户级以及两者混合.(这只是一种简要的分类) Java线程在JDK1.2之前,是用户线程实现的 而在JD ...

  4. 转:WebGL、Asm.js和WebAssembly概念简介

    WebGL.Asm.js和WebAssembly概念简介 转:http://www.techbrood.com/zh/news/webgl/webgl%E3%80%81asm_js%E5%92%8Cw ...

  5. C# 关于委托和事件的妙文:通过一个例子详细介绍委托和事件的作用;Observer模式简介

    委托和事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见 ...

  6. NSIS打包(一)常用概念简介

    1.NSIS简介 官网:http://sourceforge.net/projects/nsis/ 维基百科: http://zh.wikipedia.org/wiki/Nullsoft%E8%85% ...

  7. Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置

    由浅入深,主要介绍maven的用途.核心概念(Pom.Repositories.Artifact.Build Lifecycle.Goal).用法(Archetype意义及创建各种项目).maven常 ...

  8. Java 泛型的作用及其基本概念

    一.泛型的基本概念 java与c#一样,都存在泛型的概念,及类型的参数化.java中的泛型是在jdk5.0后出现的,但是java中的泛型与C#中的泛型是有本质区别的,首先从集合类型上来说,java 中 ...

  9. [转]Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置

    转自:http://www.trinea.cn/android/maven/ 两年半前写的关于Maven的介绍,现在看来都还是不错的,自己转下.写博客的一大好处就是方便自己以后查阅,自己总结的总是最靠 ...

  10. 01_Docker概念简介、组件介绍、使用场景和命名空间

    一.简介 Docker是一个能够把开发的应用程序自动部署到容器的开源引擎.Docker在虚拟化的容器执行环境中增加了一个应用程序部署引擎.该引擎的目标就是提供一个轻量.快速的环境,能够运行开发者的程序 ...

随机推荐

  1. 7、后端学习规划:PHP学习 - 学习规划系列文章

    PHP在其阵营中被称为世界上最好的编程语言.笔者在学习了其一些框架后也有一定的经验,当时主要根据其框架进行的开发.对于PHP来说,在编程排行榜上也是有名的存在,现在还有一些网站应用也是用的PHP进行的 ...

  2. 试用Proxmox VE 8.0搭建云桌面系统

    6月22日发布了其服务器虚拟化管理平台 Proxmox 虚拟环境的稳定版 0.12.这个主要版本基于最新的Debian 7("书虫"),并为Proxmox VE 4.8或旧版本的用 ...

  3. Python numpy数组操作(分割数组)

    分割数组 函数 数组及操作 split 将一个数组分割为多个子数组 hsplit 将一个数组水平分割为多个子数组(按列) vsplit 将一个数组垂直分割为多个子数组(按行) numpy.split ...

  4. NC19832 1408

    题目链接 题目 题目描述 小m曾经给小t和小s讲过一个奇怪的故事.这个故事叫做1408.故事的大体内容如下. 主人公迈克·安瑟林(约翰·库萨克饰)是一个恐怖小说家.将装神弄鬼作为本职工作的迈克,平日里 ...

  5. NC51100 A Simple Problem with Integers

    题目链接 题目 题目描述 You have N integers, \(A_1, A_2, ... , A_N\) .You need to deal with two kinds of operat ...

  6. OCR 03: PaddleOCR

    Catalog OCR 01: EasyOCR OCR 02: Tesseract-OCR OCR 03: PaddleOCR About Git repository https://github. ...

  7. 【Unity3D】立方体纹理(Cubemap)和天空盒子(Skybox)

    1 立方体纹理(Cubemap) ​ 本文完整资源见 → 立方体纹理(Cubemap)和天空盒子(Skybox) . ​ 1)立方体纹理简介 ​ 立方体纹理是指由上.下.左.右.前.后 6 张纹理组成 ...

  8. JetBrains全系列软件激活教程激活码以及JetBrains系列软件汉化包

    最新激活方式 如果安装过无限试用.修改过 hosts 请先卸载干净旧版本再安装,否需无法激活! 以 WebStorm 为例 JetBrains官网 https://www.jetbrains.com/ ...

  9. win32 - 在cmd中禁用进程权限

    C:\Users\path>whoami /priv 在cmd中输入whoami /priv后将获得当前令牌(标准用户)的权限. C:\Users\path>tasklist /v /fo ...

  10. Aop @AfterReturning因返回类型不一致导致无法执行切面代码

    要做返回异常之后,所有操作回滚的操作,本来想着泛型用 Object 就表示所有返回类型是 CommonResult 并且加指定注解的都走这个通知的代码,但是如下配置,无论如何也不生效 进入源码里发现, ...