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

相关推荐
Chester_19994 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
EXI-小洲5 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员6 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导6 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan6 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
小灰灰搞电子6 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
QT界面美化性能优化6 小时前
QT+AI:使用AI技术为QT应用程序赋能
c++·人工智能·qt·opencv·qt教程·qt6.3
m0_695251496 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
大衛說7 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
学习星球8 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode