libmcpp:基于现代C++的基础库项目

Modern C++ framework library for BMC application development

Branch6Tags332
FilesLast commitLast update
2 months ago
1 month ago
5 months ago
3 days ago
2 months ago
24 days ago
1 day ago
1 day ago
24 days ago
14 days ago
24 days ago
24 days ago
15 days ago
24 days ago
4 months ago
3 months ago
2 months ago
1 month ago
4 months ago
2 months ago
1 day ago
3 months ago
4 months ago
13 days ago
4 days ago
4 months ago
1 month ago
1 month ago
3 months ago

libmcpp

验证说明:本文档是 libmcpp 组件构建与测试的唯一指导文档,验证流程请严格按本文档执行。docs/ 目录主要包含特性说明文档,其中 docs/6.meson构建说明.md 为历史构建参考,当前构建请以本 README 为准。本组件支持 Ubuntu 24.04 LTS(x86-64) 和 openEuler 24.03 LTS(aarch64/Kunpeng) 构建,推荐使用 Ubuntu 24.04 LTS;CentOS、Debian 等其他系统均不支持,不要尝试使用其他镜像替代。

libmcpp(MC++)是 openUBMC 的现代 C++17 基础框架,提供反射系统、异常处理、日志系统、应用框架、变体类型、信号槽和 Future/Promise 等核心功能组件,帮助开发者构建健壮、高效的 C++ 应用。


目录


仓库地址

https://gitcode.com/openUBMC/libmcpp


系统要求

项目 要求
操作系统 Ubuntu 24.04 LTS(x86-64,推荐)
openEuler 24.03 LTS(aarch64/Kunpeng,验证基线 LTS-SP4)
芯片架构 x86-64(amd64)、aarch64(arm64)
Python >= 3.10(init.py 运行依赖)

bingo、Conan 等构建工具由 init.py 自动安装,无需手动准备。

容器构建镜像

推荐使用 Docker 容器进行构建,可使用以下镜像快速启动开发环境。

x86-64(Ubuntu,推荐)

docker pull swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2_26.06

aarch64(openEuler,ARM 构建)

docker pull --platform linux/arm64 swr.cn-north-4.myhuaweicloud.com/openubmc/openeuler:20261024_1

环境依赖

构建 libmcpp 前需完成 openUBMC 开发环境初始化(安装 bingo、Conan、Node.js、配置 Conan 远程仓库等)。完整初始化步骤和常见问题排查请参阅 openUBMC 构建指导书,该文档包含容器环境搭建、init.py 执行、Conan 登录验证等全部操作说明。

禁止手动安装 bingo 和 Conan:手动安装(如 pip install conan)会导致 Conan 远程仓库认证失败,bingo build 无法拉取依赖包。所有构建工具必须通过 manifest 仓库的 init.py 流程一键安装。


构建

获取组件代码

前提:已完成 环境依赖 中的 init.py 初始化流程,bingo 和 conan 命令可用。

cd /home/workspace
git clone https://gitcode.com/openUBMC/libmcpp.git

组件级构建

进入 libmcpp 组件目录后,使用 bingo 执行构建:

cd /home/workspace/libmcpp

# 默认 dev 阶段构建
bingo build --stage=dev

# 构建并发布到 stable 阶段
bingo build --stage=stable

# Release 类型构建
bingo build --stage=dev -bt release

构建参数说明

bingo build [-h] [-bt BUILD_TYPE] [--stage STAGE] [-u] [-r REMOTE] [--conan2] [-nc] [-o OPTIONS] [--user USER] [-wb] [--ccache]
参数 说明 默认值
-bt / --build_type 构建类型,可选 debug、release debug
--stage 包发布阶段,可选 dev、pre、rc、stable dev
-u / --upload 上传组件包到 Conan 仓库 —
-r / --remote Conan 仓库别名 —
--conan2 强制使用 Conan2 构建组件 —
-nc / --no_cache 强制更新 Conan 缓存依赖 —
-o / --options 定义组件选项值 —
--user 指定 Conan 包的 user 字段 openubmc
-wb / --without_build 不强制源码构建组件自身 —
--ccache 使用 ccache 加速 C/C++ 编译 —

libmcpp 支持的组件选项(-o 参数):

选项 说明 默认值
asan 启用 AddressSanitizer False
gcov 启用代码覆盖率 False
test 启用测试构建 False
test_utilities 启用测试工具库 False
examples 启用示例构建 False
enable_luajit 启用 LuaJIT True
use_shm 使用新 SHM 架构 False
use_old_shm 使用旧 dbus/shm 兼容架构 True
chip 指定芯片型号 —

架构选项互斥:use_shm 和 use_old_shm 禁止同时为 True。默认走旧架构(use_old_shm=True),试新架构需 -o use_shm=True -o use_old_shm=False。


测试

使用 bingo test 运行各类测试,需加 -jit 参数,否则测试会失败:

# 运行单元测试
bingo test -ut -jit

# 运行集成测试
bingo test -it -jit

# 运行单元测试并指定过滤
bingo test -ut -jit -f <filter>

# 运行单元测试并启用 ASAN
bingo test -ut -jit -as

# 运行 clang-tidy 静态检查
bingo test -ct -jit

常用测试参数:

参数 说明
-ut 启用单元测试
-it 启用集成测试
-mt 启用 mock 测试
-ft 启用 fuzz 测试
-f 测试过滤
-jit 需加此参数,否则测试会失败
-as 启用 AddressSanitizer
-ct 启用 clang-tidy 静态检查(详见 CONTRIBUTING.md)

项目结构

libmcpp/
├ include/              # 公共头文件(mc/*.h)
├ libraries/            # 7 个子项目源码
│   ├ mcbase/           # 基础库(246 头文件,21 子模块)
│   ├ mcengine/         # 对象引擎(56 头文件)
│   ├ mcapp/            # 应用框架(40 头文件)
│   ├ mcexpr/           # 表达式引擎(17 头文件)
│   ├ mcdbus/           # D-Bus 封装(16 头文件)
│   ├ mcdatabase/       # 数据库层(11 头文件)
│   └ log_appenders/    # 日志扩展(3 头文件)
├ mds/                  # MDS 模型定义
├ test/                 # 测试相关
├ tests/                # 测试数据与用例
├ examples/             # 示例代码
├ scripts/              # 构建/测试/CI 脚本
├ docs/                 # 特性说明文档(6.meson构建说明.md 为历史构建参考)
│   ├ api/              # API 文档
│   ├ design/           # 设计文档
│   └ lua_api/          # Lua API 文档
├ stub/                 # Stub 文件
├ patches/              # 补丁文件
├ conanfile.py          # Conan 构建定义
├ meson.build           # Meson 构建定义
├ meson_options.txt     # Meson 构建选项
├ LICENSE               # Mulan PSL v2 许可证
├ CHANGELOG             # 变更日志
└ README.md             # 本文件

功能模块

模块 特性
reflect 类/枚举反射、对象序列化、嵌套类型支持、STL 容器支持
log 异步日志、多后端(Appender)、日志格式定制、上下文追踪
exception 异常链、错误码映射、堆栈符号解析
application 事件循环、插件系统、配置管理
variant 动态类型系统、JSON 互操作
filesystem 路径操作、文件 IO、目录遍历
future 异步任务、链式操作、异常传播

文档导航


许可证

本项目基于 Mulan PSL v2 许可证开源。详情请参阅:https://license.coscl.org.cn/MulanPSL2

Introduction

Modern C++ framework library for BMC application development

Customize your domain