推荐一个示例仓库
https://github.com/ttroy50/cmake-examples.git 入门CMake,看这个仓库就可以了
2021/10/25
.
├── 01-basic
| ├── A-hello-cmake
│ ├── B-hello-headers .h;.cpp分开管理
│ ├── C-static-library 静态库
│ ├── D-shared-library 动态库
│ ├── E-installing 分模块管理;安装
│ ├── F-build-type 编译类型
│ ├── G-compile-flags 编译标记
│ ├── H-third-party-library 使用第三方库
│ ├── I-compiling-with-clang 使用clang编译器
│ ├── J-building-with-ninja 使用Ninja构建工程
│ ├── J-building-with-ninja 使用Ninja构建工程
│ ├── K-imported-targets 引用第三方库指定模块
│ └── L-cpp-standard 指定C++的版本
|
├── 02-sub-projects 划分子模块
| ├── subbinary exe工程
│ ├── sublibrary1 有cpp文件的子工程
│ └── sublibrary2 纯接口的子工程
|
├── 03-code-generation 代码生成
| ├── configure-files 使用CMake的configure_file功能,将CMake的变量注入到C++中
| └── protobuf 使用protobuf生成C++的源代码文件
|
├── 04-static-analysis 静态分析(不执行代码的分析,用于发现常见的编程错误、执行编码准则)
| ├── clang-analyzer clang分析与scan-build工具
| ├── clang-format 使用Clang格式来检查代码风格
| ├── cppcheck 使用CppCheck工具做静态分析
| └── cppcheck-compile-commands 如何使用项目和编译数据库
|
├── 05-unit-testing 单元测试
| ├── google-test-download Google测试(自动下载GoolgeTest)
| ├── catch2-vendored
| └── boost
|
├── 06-installer 用CPack创建安装程序
| ├── deb 生成linux安装包
│ │ ├── i-basic
| │ └── ii-basic-targets
|
└── 07-package-management 包管理
├── A-using-system-provide-packages 使用系统所安装的包
├── B-vendoring-code Vendoring code方法(将第三方库放在工程中)。如果第三方库不支持CMake,可以使用shim层
├── C-external-project-add 用CMake自动下载和构建一个外部工程
└── D-conan Conan是一个开源、去中心化、多平台的包管理器