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 .

📖 完整快速入门指南

💡 工作原理

workflow

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 上为我们点星 | 📖 文档 | 🐛 报告问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容