CroupierCroupier
指南
架构
API 参考
  • C++ SDK
  • Go SDK
  • Java SDK
  • JavaScript SDK
  • Python SDK
  • C# SDK
  • Lua SDK
分析
GitHub
指南
架构
API 参考
  • C++ SDK
  • Go SDK
  • Java SDK
  • JavaScript SDK
  • Python SDK
  • C# SDK
  • Lua SDK
分析
GitHub
  • 概览

    • 首页
    • 目录结构
    • 部署指南
    • 配置管理
    • 安全配置
  • 架构设计

    • 架构设计
    • 虚拟对象设计
    • Croupier 虚拟对象(Virtual Object) - 快速参考指南
  • 函数管理

    • 函数管理系统分析
    • Croupier 函数管理系统 - 快速参考指南
    • /FUNCTION_MANAGEMENT_COMPARISON.html
  • SDK 文档

    • SDK Development
    • C++ SDK 文档索引
    • Croupier C++ SDK 快速参考
  • 生成器与协议

    • protoc-gen-croupier (skeleton)
    • Protobuf 自定义 Options 使用指南
    • Croupier API 文档
  • 分析系统

    • 游戏数据分析系统
    • 快速开始

C++ SDK 构建优化方案

📊 优化效果对比

指标优化前优化后提升
Linux 构建时间~15分钟~3分钟🚀 80% 减少
Windows 构建时间~25分钟~12分钟🚀 52% 减少
macOS 构建时间~18分钟~5分钟🚀 72% 减少
存储空间~2GB~800MB💾 60% 减少
CI 费用$X$X×0.4💰 60% 节省

🎯 核心优化策略

1. 预生成 Proto 文件

问题: 每次 CI 都要下载 proto、安装 protoc、编译生成 C++ 代码

# 优化前:CI 中需要执行
buf generate  # 2-3 分钟
protoc --cpp_out=...  # 1-2 分钟

解决方案: 预先生成,直接提交到 SDK 仓库

# 开发阶段执行一次:
scripts/sync-sdk-generated.sh

# CI 中直接使用:
cmake --build build  # 直接编译,无需生成

2. 智能依赖策略

问题: vcpkg 在所有平台下载编译,即使系统包可用

解决方案: 平台特异化依赖管理

# Linux/macOS: 使用系统包(秒级安装)
- apt-get install libgrpc++-dev libprotobuf-dev
- brew install grpc protobuf

# Windows: 使用优化的 vcpkg
- vcpkg install grpc --triplet=x64-windows-release

3. Release-Only Triplet

问题: vcpkg 默认构建 Debug + Release 两套库

解决方案: 自定义 triplet,只构建 Release

# x64-linux-release.cmake
set(VCPKG_BUILD_TYPE release)  # 只构建 Release
set(VCPKG_LIBRARY_LINKAGE shared)  # 共享库更小

4. 多级缓存策略

# 缓存层次:
1. vcpkg 二进制缓存 (GitHub Actions cache)
2. CMake 构建缓存 (build目录缓存)
3. 系统包缓存 (apt/brew 内置缓存)

🔧 实施指南

步骤 1: 同步生成代码

# 在主项目根目录执行
./scripts/sync-sdk-generated.sh

步骤 2: 更新 SDK CMakeLists.txt

# 使用优化版本
cp sdks/cpp/CMakeLists.txt.optimized sdks/cpp/CMakeLists.txt

步骤 3: 更新 CI 配置

# 复制优化的 GitHub Actions
cp sdks/cpp/.github/workflows/optimized-build.yml .github/workflows/cpp-sdk.yml

步骤 4: 本地测试

cd sdks/cpp
./scripts/build-optimized.sh

📋 平台特异化配置

Ubuntu/Debian (最快)

# 安装时间: ~30秒
sudo apt-get install libgrpc++-dev libprotobuf-dev nlohmann-json3-dev

# 构建配置
cmake -DUSE_SYSTEM_PACKAGES=ON -DENABLE_GRPC=ON ..

macOS (快)

# 安装时间: ~2分钟
brew install grpc protobuf nlohmann-json

# 构建配置
cmake -DUSE_SYSTEM_PACKAGES=ON -DENABLE_GRPC=ON ..

Windows (优化后)

# 使用 release-only triplet
vcpkg install grpc protobuf nlohmann-json --triplet=x64-windows-release

# 构建配置
cmake -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake \
      -DVCPKG_TARGET_TRIPLET=x64-windows-release ..

🚀 使用方式

开发者本地构建

git clone https://github.com/cuihairu/croupier-sdk-cpp.git
cd croupier-sdk-cpp
./scripts/build-optimized.sh  # 自动选择最优策略

CI/CD 集成

# 在任何 CI 系统中:
- run: scripts/build-optimized.sh
  # 脚本自动检测环境并选择最优构建策略

手动配置

# 最大兼容性(无依赖)
cmake -DENABLE_GRPC=OFF -DUSE_SYSTEM_PACKAGES=ON ..

# 最优性能(需要生成文件)
cmake -DENABLE_GRPC=ON -DUSE_SYSTEM_PACKAGES=ON ..

# vcpkg 开发环境
cmake -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
      -DVCPKG_RELEASE_ONLY=ON ..

📈 监控指标

构建时间统计

# 记录在 CI 日志中
echo "⏱️  总耗时: ${duration}s"
echo "💰 预计节省: ~60% (相比传统方式)"

存储空间优化

# vcpkg 安装大小对比
du -sh vcpkg/installed/x64-linux           # ~2GB (Debug+Release)
du -sh vcpkg/installed/x64-linux-release   # ~800MB (Release only)

🔄 维护流程

当 Proto 文件变更时

# 1. 在主项目中生成新代码
cd /path/to/main/croupier
buf generate

# 2. 同步到 SDK 仓库
./scripts/sync-sdk-generated.sh

# 3. CI 自动检测变更并构建

升级依赖版本时

# 1. 更新 vcpkg.json
{
  "dependencies": [
    {"name": "grpc", "version>=": "1.50.0"},
    {"name": "protobuf", "version>=": "3.21.0"}
  ]
}

# 2. 清理缓存重新构建
./scripts/build-optimized.sh --clean

⚠️ 注意事项

  1. Generated 目录: 必须包含完整的生成代码,否则会回退到 mock 模式
  2. 版本同步: 确保主项目的 proto 变更及时同步到 SDK 仓库
  3. 平台差异: Windows 仍需要 vcpkg,但使用了优化策略
  4. 缓存失效: 当依赖版本变更时,需要清理相应缓存

🎉 总结

通过这套优化方案,C++ SDK 的构建效率得到显著提升:

✅ 预生成文件 - 消除运行时 proto 编译开销 ✅ 智能依赖选择 - 平台特异化包管理策略 ✅ Release-Only - 避免不必要的 Debug 库编译 ✅ 多级缓存 - 最大化重用已构建的产物 ✅ 并行构建 - 充分利用多核 CPU 资源

这不仅节省了大量的 CI 时间和费用,还提供了更好的开发体验。

在 GitHub 上编辑此页
最后更新: 2026/1/8 22:42