一步一步学CMake 之 CMake详细介绍

一步一步学 CMake 系列文章

CMake是可跨平台的构建和编译大型项目的工具,CMake不是一套编译工具,它里面并不包含编译器,它能做的只是减轻我们输入繁琐命令的负担。另外,如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用 Make 工具,就得为每一种标准写一次 Makefile,那这就太痛苦了。。。

CMake并不直接构建出最终的软件,而是产生标准的构建文档(比如Unix下的makefile,Mac下的xcode,windows下的MSVS工程文件)。CMake首先允许开发者编写一种与平台无关的CMakeLists.txt文件来制定整个编译流程,然后根据目标用户的平台来生成所需要的本地化Makefile、工程文件。

在Linux下,CMake就是用来生成Makefile的,而Makefile包含了一些列的编译和链接规则,它告诉make命令需要怎么样的去编译和链接程序。

在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:

  1. 编写 CMake 配置文件 CMakeLists.txt (CMakeLists.txt 规定了整个编译的流程,我们学习的CMake 也就是要学习CMakeLists.txt的编写规则)。
  2. 执行命令 cmake PATH 生成 Makefile,其中, PATH 是 CMakeLists.txt 所在的目录。
  3. 使用 make 命令进行编译。

CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档(详见:一步一步学Cmake之 构建 单目录或多目录 C++工程)。CMake 也支持静态与动态库的建构(详见:一步一步学CMake 之 构建和链接库文件)。

CMake构建工程中所涉及的几个概念:

配置阶段(Configure time or CMake time)是指CMake正在处理CMakeLists.txt的阶段;

生成阶段(Generation time)是指 原生构建工具(native build tool),比如:Makefiles,生成过的阶段;

构建阶段(Build time)是指 基于生成的原生构建工具,比如:Makefiles,编译器开始编译,并生成目标文件(可执行文件或库文件)的过程。

猜你喜欢

转载自blog.csdn.net/wanzew/article/details/104115553