Skip to content
/ MyCpp Public template

My C/C++ project template for common application development.

License

Notifications You must be signed in to change notification settings

yhgu2000/MyCpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

我的 C++ 项目模板

特性:

  • 通用、良设计的项目结构;
  • 项目源码与构建环境解耦;
  • 编码规范以及相应的格式化器和检查器配置;
  • Boost 库集成;
  • 测试驱动开发,基于 Boost.Test;
  • 代码覆盖率支持,基于 lcov 或 llvm-cov;
  • 文档生成,基于 Doxygen;
  • 实用的内置库:
    • My - 常用异常体系、编程工具等;
    • MyHttp - 简易 HTTP 客户端/服务器框架;
  • 命令行程序模板和内置工具;
    • [my-statistics] - 对程序设计十分重要的一些统计数据(例如线程启动速度)的测量工具;
    • [my-http-client] - 简易的 HTTP 客户端;
    • [my-http-server] - 简易的 HTTP 服务器;

从模板新建项目

  1. 拷贝整个目录

  2. 修改项目名(CMakeLists.txt

  3. lib 下创建新的库。

    模板已经包含了一个 My 库,提供了一些常用功能,如异常类、性能计时器等。

  4. 应用

    app 中提供了一个命令行应用模板。

    应用源码应该尽可能地少到只有一个文件,其中只编写 main 函数和命令行解析等驱动代码。

  5. 测试

    本模板使用 Boost.Test 框架,test 中提供了一个测试模板。

  6. 文档

    本模板使用 Doxygen 生成库的 API 文档。

    doc 目录下创建其它 Markdown 文档,然后加到 doxygen 目标中。

构建与发布

  1. 复制 environ.cmakeenv.cmake ,然后按照你的本地环境修改其中的路径。

  2. 运行 CMake 配置过程:

    mkdir build
    cd build
    cmake ..

    默认构建的是 Debug 版本,如果想构建其他版本(如 Release),请设置 CMAKE_BUILD_TYPE 变量

  3. 构建所有目标:

    cmake --build .

    如果想构建项目的单元测试,需要安装 Boost.Test 库。

    如果想构建项目的文档,需要安装 DoxygenGraphviz

  4. 打包发布:

    项目使用 CPack,可以生成各种格式的包文件,详请参阅官方文档

    打包构建产物(可用于二次开发):

    cpack -G ZIP

    打包源码:

    cpack --config CPackSourceConfig.cmake

编码规范

doc/coding_standards.md

其它

  • 关于导出 SDK 给其它项目使用

    目前已知没有容易的方法能解决导出 SDK 时的命名空间冲突问题(比如 My 模块)。同时,考虑到大部分中小型项目并不会发展到产生这个需求的规模,因此本模板不提供 SDK 导出的完整支持。

    如果想导出 SDK 给其它项目使用,不可避免地,需要对项目结构作出一定调整,包括并不限于以下工作:

    • 重构项目的命名空间;
    • 重新编写 CMake 安装规则(install命令);
    • ...

第三方许可

  • cmake-scripts

    使用了其中的覆盖率测试 CMake 脚本。

About

My C/C++ project template for common application development.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published