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 变量 - 避免全局冲突。
🛠️ 多构建系统支持 原生支持 CMake 、Makefiles 、Meson 、B2 、QMake 、GYP - 无需编写复杂脚本。
📦 自动生成 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 上为我们点星 | 📖 文档 | 🐛 报告问题

相关推荐
懂点Tech1 天前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
云和数据.ChenGuang1 天前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
美狐美颜SDK开放平台1 天前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
dtq04241 天前
C++小案例 - 日志实战
开发语言·c++
星夜离尘561 天前
MATLAB ADC 码流触顶诊断:命中数、缺口分段与削顶不可辨识性
开发语言·matlab
码匠许师傅1 天前
【C++三方组件】Qt 概览:桌面 C++ 的事实标准与许可证三轨
开发语言·c++·qt
码匠许师傅1 天前
【C++三方组件】POCO:跨平台系统编程全家桶
开发语言·c++
bkspiderx1 天前
基于Socket的广播通信及C语言实现详解
c语言·开发语言·socket·广播·socket的广播通信
小王C语言1 天前
Qt常用控件:输入类控件,单行/多行输入框、下拉框、(日期)微调框、旋钮、滑动条
开发语言·qt
ESDWAN1 天前
SD-WAN 主备切换为什么仍然会断网?从检测机制到会话恢复分析
开发语言·php