A lightweight, non-intrusive, delivery-oriented C/C++ package management tool for projects centered on CMake
Celer is designed to lower the barrier to hosting, handoff, and reuse in C/C++ projects by handling the complexity of build, compile, and install steps. At the same time, it separates dependency management and build environments from business code. This separation of concerns makes project boundaries clearer and engineering workflows easier to manage.
In real C/C++ projects, the common pain points usually look like these:
# 1. Install Celer (or download a prebuilt package from releases)
git clone https://github.com/celer-pkg/celer.git
cd celer && go build
# 2. Initialize with a configuration repository
celer init --url=https://github.com/celer-pkg/test-conf.git
# 3. Configure your platform and project
celer configure --platform=x86_64-linux-ubuntu-22.04-gcc-11.5.0
celer configure --project=project_test_01
# 4. Test clone, build and install a library.
celer install glog@0.6.0
Celer generates a toolchain_file.cmake based on your platform and project configuration. That file connects your project to predefined toolchains, dependencies, environment variables, and build settings.
That means:
| Capability | Value |
|---|---|
| Cross Compilation | Use TOML to describe toolchains and build environments for ARM, x86, QNX, Windows, Linux, and more in one place. |
| Project Isolation | Each project owns its own dependency versions, environment variables, macros, and CMake variables, reducing conflict risk in parallel development. |
| Build Systems | Works natively with CMake, Makefiles, Meson, B2, QMake, and GYP, reducing the cost of hosting third-party libraries. |
| CMake Config | Automatically fills in CMake configuration for prebuilt binaries, lowering the integration barrier. |
| Artifact Cache | Uses hash-based caching of build artifacts, suitable for private libraries, binary distribution, and large-scale repeated builds. |
| Repo Cache | Reuses source code by caching source repositories, reducing integration cost when external networks or GitHub/GitLab access are unavailable. |
| Embedded | Supports MCU and bare-metal environments through embedded_system, without depending on a traditional OS runtime. |
| Development Mode | After celer deploy, continue development directly in any IDE using the generated toolchain file. |
| CI/CD Integration | Platform and project configuration can flow directly into pipelines, reducing drift between developer and CI environments. |
| Snapshots | Export reproducible workspace snapshots for debugging, traceability, and handoff. |
If your only need is “how do I fetch an open-source library”, Conan, vcpkg, and XMake already provide mature solutions.
Celer is stronger where delivery efficiency and consistency in complex engineering environments matter more:
| Dimension | Conan / vcpkg / XMake common approach | ✅ Where Celer is stronger |
|---|---|---|
| Intrusion | Often requires adapting recipes, ports, or ecosystem-specific integration | Integrates existing CMake projects through toolchain_file.cmake without intrusion |
| Cross-compile | Toolchains, profiles, and triplets are often assembled separately | Platforms, toolchains, environment variables, and dependencies are described in one unified configuration |
| Project isolation | Shared configuration often causes version conflicts | Dependencies, variables, and build settings are maintained at project scope, with clearer boundaries |
| Multi project coordination | Frequently wired manually one project at a time | One configuration can coordinate multiple subprojects |
| Private binaries | Usually needs extra packaging conventions and workflow glue | Better suited for internal artifact repositories, prebuilt packages, and custom delivery flows |
| Caching and rebuilds | Less focused on team-wide artifact reuse | Hash-based artifact caching emphasizes team-wide reuse and build stability |
| Sharing and reproduction | Users often need to understand the full local toolchain stack | Generated toolchain files and workspace snapshots are easier to share, reproduce, and hand off |
In one sentence:
Celer focuses on delivery efficiency, cross-compilation, and team collaboration—not on generic ecosystem size.
📖 Learn more about the problems Celer is built to solve
Getting Started: - Quick Start Guide - Get started in 5 minutes - Create a New Platform - Define custom cross-compilation environments - Create a New Project - Configure project-level settings - Add a New Port - Host and manage your own libraries
Advanced Topics: - Generate CMake Configs - Auto-generate configuration for prebuilt binaries - PkgCache Shared Cache and NFS Permissions - Share package caches across teams with NFS and append-only directory protection - Cache Build Artifacts - Reuse built artifacts to reduce repeated integration cost - Cache Source Repositories - Reuse source trees through repo cache when upstream access is unstable - Cache Build Tools - Speed up and stabilize the compilation environment by caching compilation tools - Support CCache - Speed up repeated compilation by reusing compiler outputs - Expression Variables - Review the dynamic variables available in TOML configuration - Detect Version Conflicts and Circular Dependencies - Catch invalid dependency relationships before builds start - CUDA Auto Detection - Integrate CUDA toolchains for GPU-oriented projects - Export Snapshots - Export a reproducible workspace snapshot after deployment
| Command | Description |
|---|---|
| autoremove | Clean the install directory and remove libraries no longer required by the current project |
| clean | Clean build cache for selected targets, or use --all to clean everything |
| configure | Update global configuration for the current workspace |
| create | Create a platform, project, or port |
| deploy | Deploy using the selected platform and project |
| init | Initialize Celer with a configuration repository |
| install | Install a library |
| integrate | Enable shell tab completion integration |
| remove | Remove installed libraries |
| reverse | Query which projects or libraries depend on a given library |
| search | Search available ports |
| tree | Show the dependency tree of a library or project |
| update | Repo mode takes no port arguments; port mode requires at least one name@version |
| version | Show Celer version information |
Celer is an open-source project built for community collaboration. Contributions are welcome in:
If you want to add features, improve documentation, or contribute new port definitions, we would be glad to have your help.
This project is released under the MIT License. See LICENSE for details.
Third-party libraries in the ports repository remain under their original licenses.
Built for complex C/C++ engineering delivery
$ claude mcp add celer \
-- python -m otcore.mcp_server <graph>