什么是Cmake?
大家都知道C系列的程序都需要进行编译才能运行,而在不同的系统它需要将源文件编译成不同的可执行文件;
你或许也听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp等等。
这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。
而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。
CMake 就是针对上面问题所设计的工具:它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。
可以说Cmake就是一个根据大家公认的与平台无关的编译规范而诞生的编译工具。
Cmake所做的工作
作为 C/C++ 生态构建系统事实标准的 CMake 其实是一个构建系统生成器。
CMake 的主要功能是描述项目结构,表达模块依赖,从而以人类友好的方式表达构建过程步骤编排的需求,最终从声明式的 CMake 代码中生成实际的构建系统,比如生成一系列 GNU Make 构建需要的文件。
我们要配置的工作
我们的任务就是按照Cmake的语法描述我们的项目。
在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:
- 写 CMake 配置文件 CMakeLists.txt 。
- 执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile(ccmake 和 cmake 的区别在于前者提供了一个交互式的界面)。其中, PATH 是 CMakeLists.txt 所在的目录。
- 使用 make 命令进行编译。
用IDE工具
Cmake有自己一套GUi工具,我们也可以通过GUI工具直接生成相应的CmakeLists文件。
我平时喜欢使用Clion的工具包,它的界面做的更加友好,当你使用Clion编写Cmake程序时编译器会自动帮你将文件存放到CmakeLists文件中,非常好用!~
GUI构建步骤
- 打开Cmake-gui
-
在“Where is source code”中加载源码所在目录
-
在“Where to build the binarys”中加载源码所在目录下的build目录,生成了项目文件就在这里
-
点击 Configure 选择项目启动方式
-
点击 Generate 生成解决方案
-
点击Open Project 调用Vs打开工程