特性:
- 通用、良设计的项目结构;
- 项目源码与构建环境解耦;
- 编码规范以及相应的格式化器和检查器配置;
- Boost 库集成;
- 测试驱动开发,基于 Boost.Test;
- 代码覆盖率支持,基于 lcov 或 llvm-cov;
- 文档生成,基于 Doxygen;
- 实用的内置库:
- 命令行程序模板和内置工具;
- [my-statistics] - 对程序设计十分重要的一些统计数据(例如线程启动速度)的测量工具;
- [my-http-client] - 简易的 HTTP 客户端;
- [my-http-server] - 简易的 HTTP 服务器;
-
拷贝整个目录
-
修改项目名(CMakeLists.txt)
-
库
在 lib 下创建新的库。
模板已经包含了一个
My
库,提供了一些常用功能,如异常类、性能计时器等。 -
应用
app 中提供了一个命令行应用模板。
应用源码应该尽可能地少到只有一个文件,其中只编写
main
函数和命令行解析等驱动代码。 -
测试
本模板使用 Boost.Test 框架,test 中提供了一个测试模板。
-
文档
本模板使用 Doxygen 生成库的 API 文档。
在 doc 目录下创建其它 Markdown 文档,然后加到 doxygen 目标中。
-
复制
environ.cmake
为env.cmake
,然后按照你的本地环境修改其中的路径。 -
运行 CMake 配置过程:
mkdir build cd build cmake ..
默认构建的是 Debug 版本,如果想构建其他版本(如 Release),请设置
CMAKE_BUILD_TYPE
变量。 -
构建所有目标:
cmake --build .
如果想构建项目的单元测试,需要安装 Boost.Test 库。
-
打包发布:
项目使用 CPack,可以生成各种格式的包文件,详请参阅官方文档。
打包构建产物(可用于二次开发):
cpack -G ZIP
打包源码:
cpack --config CPackSourceConfig.cmake
-
关于导出 SDK 给其它项目使用
目前已知没有容易的方法能解决导出 SDK 时的命名空间冲突问题(比如
My
模块)。同时,考虑到大部分中小型项目并不会发展到产生这个需求的规模,因此本模板不提供 SDK 导出的完整支持。如果想导出 SDK 给其它项目使用,不可避免地,需要对项目结构作出一定调整,包括并不限于以下工作:
- 重构项目的命名空间;
- 重新编写 CMake 安装规则(
install
命令); - ...
-
使用了其中的覆盖率测试 CMake 脚本。