eis/mix_cc/doc/main_page.md

2.4 KiB
Raw Blame History

mix_cc

version 3.2.2

mix_cc是什么

  • mix_cc 是由null开发的一个工具类库。
  • 它包含了算法、异常处理、json(c++14)、ihyperdb、数学表达式、序列化、共享内存、sql需要c++17支持 以及支持这些所需要的额外组成部分。
  • 这个工具库需要使用者具有基础的boost、eigen、c++14和json知识。
  • 目前异常处理、json、共享内存和ihyperdb的组成部分是比较稳定的其余部分出现问题可能性较大需要小心使用。
  • 如果需要使用该库,需要添加头文件的同时,添加链接信息,位置在 project/lib/libmix_cc_xxxx.a

mix_cc的思想是什么

  • mix_cc的核心思想是使用最简单的易读的代码写出最易用的接口完成最复杂的任务。
  • 任何人的精力都是有限的,代码越多,出错的可能性也就越大,后期维护的成本也越高

如何构建mix_cc?

前置需求

  1. 至少支持c++20的编译器GCC最低10
  2. boost 1.75及以上
  3. db2、sqlapt++ 和 ihyperDB
  4. cmake3以上
  5. Eigen (algorithm下的依赖)
  6. nlohmann_json
  7. vcpkg作为包管理器(非必须但是默认需要其提供的cmake)

建议使用的工具集为

  1. centos7(redhat7)
  2. devtoolset10(开启方法自行百度)
  3. cmake 3.20
  4. python3.7
  5. vcpkg进行包管理

mix_cc支持什么

  1. 数学算法
  2. DB2 链接和管理 (增删改查通过json返回结果)
  3. iHyperDB链接和管理 (通过numcpp中的ndarray进行处理)
  4. 全局异常事件抛出和打印 expection stacktrace
  5. json使用nlohmann_json)
  6. 使用STL的共享内存 shm (内置 vector string map)
  7. c++ sql 和数据库支持
  8. c++ 数学表达式支持

mix_cc的项目目录

仅头文件项目

  1. algorithm (常用算法)
  2. json (json库)
  3. math (数学式)
  4. serialize (boost提供的序列化/反序列化目前没有使用可以考虑使用dlib的序列化/反序列化方法代替)
  5. type (项目基本类型)
  6. type_traits (类型萃取机)

需要额外构建的子项目

  1. exception (异常处理,用于运行时异常)
  2. ihyper_db ihyperdb 类库)
  3. matheval (数学表达式)
  4. shm (共享内存)
  5. sql (sql和数据库查询)
  6. stacktrace (堆栈异常处理,用于堆栈异常)
  7. utility (工具)

具体可参考CMakeLists.txt和子项目的readme.md