Celer:为大型C/C++项目打造的极简包管理器

✨ 为什么选择 Celer?

Celer 是 C/C++ 的加速器,解决实际依赖管理中的核心挑战:

  • 🎯 项目零侵入 - 只需一个 toolchain_file.cmake你的项目就可以进行开发
  • 🚀 简化的交叉编译 - 平台感知的依赖管理,自动配置工具链编译环境
  • 📦 智能缓存 - 基于哈希的二进制制品缓存,节省数小时构建时间
  • 🔧 多构建系统支持 - 原生支持 CMake、MakeFiles、Meson、B2、QMake、GYP等
  • 🏢 企业级就绪 - 项目级配置防止依赖版本冲突和环形依赖
  • 🔗 非侵入式设计 - 可移植的 toolchain_file.cmake 生成后可独立使用

🚀 快速开始

复制代码
# 1. 安装 Celer(或从 releases 下载预编译版本)
git clone https://github.com/celer-pkg/celer.git
cd celer && go build

# 2. 初始化配置仓库
celer init --url=https://github.com/celer-pkg/test-conf.git

# 3. 配置平台和项目
celer configure --platform=x86_64-linux-ubuntu-22.04-gcc-11.5.0
celer configure --project=my_project

# 4. 部署并生成工具链文件
celer deploy

# 5. 在 CMake 项目中使用
cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/workspace/toolchain_file.cmake ..
cmake --build .

📖 完整快速入门指南

💡 工作原理


Celer 生成平台特定的 toolchain_file.cmake,作为项目与预配置构建环境及依赖之间的桥梁。这使得 Celer 完全与项目解耦 - 一旦生成工具链文件,你可以将其分享给团队,他们甚至不需要安装 Celer!

🌟 核心功能

功能特性 你将获得
🔧 可配置化的交叉编译平台 通过友好的 TOML 配置预定义 ARM、x86、Windows、Linux 等平台的工具链。
📁 项目级依赖管理 每个项目维护独立的依赖版本、环境变量、宏定义和 CMake 变量 - 避免全局冲突。
🛠️ 多构建系统支持 原生支持 CMakeMakefilesMesonB2QMakeGYP - 无需编写复杂脚本。
📦 自动生成 CMake 配置 为预编译号的二进制库自动生成 CMake config 文件,确保无缝集成。
⚡ 智能二进制缓存 基于哈希的制品缓存,通过本地网络共享消除冗余构建,支持私有库的预编译二进制分发。
💻 开发者模式 通过 celer deploy 一次性生成 toolchain_file.cmake,然后使用任意 IDE 开发。
🔄 CI/CD 集成 conf/projects 中配置项目,无缝集成到持续集成流水线。
📸 Workspace快照 可复现的工作区快照,简化错误修复与功能开发

🆚 Celer vs 其他工具

Celer 解决了传统 C/C++ 包管理器难以应对的核心痛点:

挑战 Conan / Vcpkg / XMake ✅ Celer
📦 简化库集成流程 需要复杂的配方脚本 只需声明构建系统类型
🏢 项目级依赖隔离 全局配置导致冲突 项目级隔离配置
🔗 平台多子工程管理 手动逐项目设置 单一 TOML,自动同步子项目
⚡ 智能哈希缓存 有限或手动缓存 精确的基于哈希的制品缓存
🔍 自动冲突检测 运行时发现 构建时检查并报告
🤝 无缝跨公司/团队协作 手动环境搭建 可移植的工具链文件 - 开箱即用

📖 深入了解 & 详细对比说明: Celer 独特解决的问题

📚 文档

快速入门:

高级功能:

📋 命令列表

命令 描述
autoremove 清理安装目录,移除项目不依赖的库
clean 删除构建缓存和清理项目仓库
configure 修改workspace的全局配置
create 创建平台、项目或端口
deploy 以选择的平台项目部署项目
init 用一个conf仓库初始化Celer
install 安装一个库
integrate 集成以支持tab补全
remove 移除已安装的库
reverse 反向查询依赖指定的库
search 搜索库
tree 显示三方库或项目的依赖关系
update 更新配置仓库、端口配置仓库或项目仓库
version 显示Celer版本信息

🤝 贡献

Celer 是一个欢迎由社区贡献构建的开源项目,欢迎为以下部分做出贡献:

  • celer - 核心包管理器实现
  • ports - 包定义和构建配置

无论你想添加新功能、改进文档还是贡献新的包定义,我们都欢迎你的帮助!

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件。

ports 仓库中的第三方库依据其各自的原始许可条款进行授权。


用 ❤️ 为 C/C++ 社区打造

⭐ 在 GitHub 上为我们点星 | 📖 文档 | 🐛 报告问题

相关推荐
L Jiawen3 小时前
【Go · Gin】基础知识
开发语言·golang·gin
掘根4 小时前
【消息队列项目】客户端四大模块实现
开发语言·后端·ruby
-To be number.wan10 小时前
C++ 赋值运算符重载:深拷贝 vs 浅拷贝的生死线!
前端·c++
疯狂的挖掘机10 小时前
记一次基于QT的图片操作处理优化思路(包括在图上放大缩小,截图,画线,取值等)
开发语言·数据库·qt
cnxy18810 小时前
围棋对弈Python程序开发完整指南:步骤4 - 提子逻辑和劫争规则实现
开发语言·python·机器学习
意趣新10 小时前
C 语言源文件从编写完成到最终生成可执行文件的完整、详细过程
c语言·开发语言
李艺为11 小时前
根据apk包名动态修改Android品牌与型号
android·开发语言
XXYBMOOO12 小时前
内核驱动开发与用户级驱动开发:深度对比与应用场景解析
linux·c++·驱动开发·嵌入式硬件·fpga开发·硬件工程
黄河滴滴12 小时前
java系统变卡变慢的原因是什么?从oom的角度分析
java·开发语言