Skip to content

brinkqiang/dmcpp-env

Repository files navigation

1. dmcpp-env

C++ CMake 模块化项目环境


1.1. 项目简介

dmcpp-env:铸造C++数字航母的基石与罗盘 🧭✨

C++ 性能卓越,控制强大 💪,但其开发环境的复杂、跨平台障碍及工具链整合难题,常让开发者头疼不已 🤯,难以专注核心业务。

主要痛点一览: 😩

  1. 环境配置繁琐:第三方库众多,版本管理与编译链接耗时易错 ⏳。
  2. 跨平台适配困难:操作系统、API及编译器差异导致代码维护成本高,行为难统一 🌍🚧。
  3. 工具链整合耗时:确保开发工具在团队和多设备间的一致性与流畅性,需专门投入 🛠️🧩。

dmcpp-env的初心与解决之道: 🎯 为应对这些痛点,dmcpp-env 旨在提供一个更纯粹、高效、易掌控的模块化C++开发基座,让开发者聚焦业务逻辑与技术创新 💡。

dmcpp-env 这样做:

  • 统一管理模块:预集成常用模块,简化依赖 📦✅。
  • 标准构建流程:CMake加持,提升构建效率与一致性 ⚙️🚀。
  • 优化跨平台体验:封装设计,减少平台差异困扰 💻🌍📱。
  • 降低上手门槛:快速搭建环境,专注编码 🧑‍💻💨。

dmcpp-env 的存在,就是希望通过一个高度整合的开发环境,切实减轻C++开发者负担,助力更轻松、高效地构建稳定强大的应用程序 ✨🚀。


1.2. 快速开始

1.2.1. 环境要求

  • CMake 3.21+
  • C++17 编译器
  • Git

1.2.2. 安装依赖

git submodule update --init --recursive

1.2.3. 构建项目

mkdir build
cd build
cmake ..
make

如何引用已经cmake模块化的项目

参考项目

  1. 将项目中 cmake 目录整个copy到你的项目中
  2. 在你的CMakeLists.txt中 project的下方加入以下代码
include(cmake/ModuleImport.cmake)
include(cmake/ModuleCompileOptions.cmake)
ModuleSetCompileOptions()

ModuleImportAll("thirdparty")
  1. 以dmstring 这个简单的项目为例, 在项目的根目录执行下面命令添加子模块, 如果有网络问题 拿到源码直接copy到thirdparty目录也是一样的.
git submodule add -f https://github.com/brinkqiang/dmstring ./thirdparty/dmstring
  1. 在你的项目中指定链接这个库, 如果你是非模块化的项目, 可以用target_link_libraries指定
cmake_minimum_required(VERSION 3.21)

PROJECT(dmstringtest)

LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
INCLUDE(cmake/ModuleImport.cmake)
INCLUDE(cmake/ModuleCompileOptions.cmake)
ModuleSetCompileOptions()

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
set(CMAKE_STATIC_LIBRARY_PREFIX "")
set(CMAKE_SHARED_LIBRARY_PREFIX "")

ModuleImportAll("thirdparty")

if(PROJECT_IS_TOP_LEVEL)
    ExeImport("test" "dmtest;dmstring")
endif()

1.3. 模块列表

  1. 日志和调试

  2. 数据存储

  3. 数据生成与处理

  4. 模板引擎

  5. 内存池与对象管理

  6. 网络与通信

    • dmdyad - 极简socket库 用于熟悉socket流程
    • dmicmp - icmp(ping)
    • dmcurl - curl and curlpp
    • dmcpr - 基于curl网络请求库, 类似 Python Requests
    • dmcinatra - http
    • dmzmqpp - zmq C++封装 中量级 功能较多
    • dmcppzmq - zmq C++封装 有zmq_ipc 轻量级 纯头文件
    • dmgrpc - grpc
    • dmtarscpp - tarscpp
  7. 任务与流程管理

  8. 时间与日期

  9. 系统与工具库

  10. 测试与模拟

  11. 数据格式

  12. 跨语言开发

  13. lua模块

  14. python模块

  15. 数据结构与算法

  16. 唯一标识符生成

  17. 进度与状态

  18. 设计模式与架构

  19. 开发环境搭建

  20. 工具与集成

  21. 代码生成与构建

  22. 底层与系统编程

  23. Windows平台补丁

  24. dmcpp-port 伟大航路

About

easy to import cpp module, like ModuleImport("dmtimer" "thirdparty/dmtimer")

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages