推荐一个示例仓库
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是一个开源、去中心化、多平台的包管理器
