文章目录
-
- 说明
- 什么是 CMake
- CMake 下载与安装
- CMake 入门
- 写一个 Demo
- 将 Demo CMake 成 VS 工程
- 运行 VS 工程
- 为什么要这样组织文件
- Github 官网教程
- 总结
- 联系博主
说明
- 以下内容均是在 Windows 下进行操作
- 博主用的 VS 版本: 2013
- 博主用的 Cmake 版本:cmake-3.13.0-rc2-win64-x64
- 所有资源均已上传至百度云(提取码:utcm):CMake资源合集
什么是 CMake
我们经常见到的 Make 工具有:
- GNU Make
- QT 的 qmake
- 微软的 MS nmake
- BSD Make(pmake)
- Makepp
- 其他
那么这样会造成以下问题:
- 这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别
- 这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作
CMake 的提出就是为了解决上述问题:
CMake是这样一个工具工具:它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。显然,CMake 是一个比上述几种 make 更高级的编译配置工具。一些使用 CMake 作为项目架构系统的知名开源项目有 VTK、ITK、KDE、OpenCV、OSG 等。
CMake 下载与安装
- 官网:https://cmake.org/download/
- 安装:就是一个解压过程
- 安装完后记得在系统环境变量里添加 CMake.exe 的 Path
CMake 入门
作为入门,请读者自行阅读以下内容,然后再看下面的内容:
- 中文版教程
链接1:CMake 入门实战(重点推荐)
链接2:在 linux 下使用 CMake 构建应用程序(次要推荐)
链接3:cmake使用教程
- 英文版教程
官方教程:CMake Reference Documentation
写一个 Demo
注意:
本 Demo 对应百度云视频中的 Video-Introduction to CMake
如果有英文不好的同学,请用 Youtube 看,可以自动实时翻译
此部分代码已上传至 Github :CMake-Tutorial
- 目录树(红线代表同一层):
- 如果有点不好看,看这个:
--./Demo|---dlls| |---dll1| | |---dll1.h| | |---dll1.cpp| | |---CMakeLists.txt| |---CMakeLists.txt|---exes| |---exe1| | |---main.cpp| | |---CMakeLists.txt| |---CMakeLists.txt|---inc| |---head1.h|---libssrc| |---lib1| | |---lib1.h| | |---lib1.cpp| | |---CMakeLists.txt| |---CMakeLists.txt|---CMakeLists.txt
- 代码书写
此部分代码已上传至 Github ,见上文
- 代码全家福
inc 文件夹 |
dlls 文件夹 |
exes 文件夹 |
libssrc 文件夹 |
顶层 CMakeLists.txt |
将 Demo CMake 成 VS 工程
有以下两种方法:
- 直接 CMake
- 打开 Demo 文件夹,在此目录下打开 cmd,执行 cmake .(如果需要的话执行 make )
- 用 CMake GUI
- 在 Demo 下新建一个 build 文件夹
- 打开 CMake GUI,按图操作
运行 VS 工程
- 双击打开 Demo.sln
- 生成 - 批生成 - 勾选INSTALL Debug - 生成
- 最终在 bin 下生成 exe1.exe 文件,在 cmd 下运行该程序
为什么要这样组织文件
目前你只需要知道这样更容易打包发布程序即可
更多请查看我的另外两篇博文:
博客一:VS 下静态库与动态库的生成与使用
博客二:VS 多工程之间管理与调用(超详细)
知乎上的这两篇文章也不错:
VS Code + Cmake + CppUnit 搭建大型C++工程(一)
VS Code + Cmake + CppUnit 搭建大型C++工程(二)
Github 官网教程
Quick setup — if you’ve done this kind of thing before
HTTPS | SSH
Get started by creating a new file or uploading an existing file. We recommend every repository include a README, LICENSE, and .gitignore.…or create a new repository on the command line
echo "# ******" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/Neverland1026/******.git
git push -u origin master…or push an existing repository from the command line
git remote add origin https://github.com/Neverland1026/******.git
git push -u origin master…or import code from another repository
You can initialize this repository with code from a Subversion, Mercurial, or TFS project.
总结
- 通过 VS 和 CMake 的交叉理解,能够更加全面的、综合的理解一个大型工程的组织方式
联系博主
邮箱:Neverland_LY@163.com