| Crates.io | caxe |
| lib.rs | caxe |
| version | 0.3.8 |
| created_at | 2025-12-07 01:41:28.897613+00 |
| updated_at | 2025-12-26 10:59:15.837525+00 |
| description | A modern C/C++ project manager that cuts through build system complexity. Zero config, smart dependencies, and parallel builds. |
| homepage | |
| repository | https://github.com/dhimasardinata/caxe |
| max_upload_size | |
| id | 1971008 |
| size | 531,145 |
caxe (pronounced "c-axe") is a modern project manager for C and C++ designed to cut through the complexity of legacy build systems.
It provides a unified workflow for scaffolding, building, testing, formatting, and managing dependenciesβgiving C/C++ developers the modern experience they deserve.
Zero Configuration. Lightning Fast. Batteries Included.
vswhere on Windows.pkg-config (e.g., GTK, OpenSSL).cx vendor to copy dependencies locally for offline builds.--filter) and binary caching.cx stats for code metrics and cx tree for dependency graphs.cx build --wasm (via Emscripten) support out of the box..ino files, build and upload via arduino-cli.cx build --sanitize for Address/Undefined Behavior sanitizers.cx fmt command (via clang-format) with --check for CI.--profile esp32).Windows (PowerShell):
iwr https://raw.githubusercontent.com/dhimasardinata/caxe/main/install.ps1 -useb | iex
Unix (Linux/macOS):
curl -fsSL https://raw.githubusercontent.com/dhimasardinata/caxe/main/install.sh | sh
cargo install caxe
Simply run cx or cx new without given name to start the wizard.
cx new
# ? What is your project name? βΊ my-app
# ? Select a template: βΊ console
# ? Select language: βΊ cpp
# Default (Hello World)
cx new my-game --lang cpp
# Web Server (cpp-httplib)
cx new my-server --template web
# Raylib Game Config
cx new my-game --template raylib
# SDL3 Game (Modern API)
cx new my-game --template sdl3
cx new <name>: Create a new project.cx init: Initialize cx.toml in an existing directory (imports CMake/Makefile projects!).cx info: Show system, cache, and toolchain info.cx doctor: Diagnose system issues (missing tools, compilers).cx stats: Show project code metrics (LOC, files).cx run: Build and run the project.cx build: Compile only.
--release: Optimize for speed (-O3 / /O2).--profile <name>: Use a named profile (e.g., --profile esp32).--wasm: Compile to WebAssembly (requires Emscripten).--lto: Enable Link Time Optimization.--sanitize=<check>: Enable runtime sanitizers (e.g., address, undefined).--trace: Generate build trace (.cx/build/build_trace.json for Chrome Tracing).cx watch: Rebuild on file save.cx clean: Remove build artifacts.cx package: Create a distribution archive (ZIP) containing the executable, DLLs, and assets.cx build --arduino: Build Arduino sketch (auto-detected if .ino files present).cx upload -p COM3: Upload sketch to Arduino board.cx new myproject --template arduino: Create Arduino project.cx target list: Show available cross-compilation targets.cx target add <name>: Add a target to your project.cx target remove <name>: Remove a target.cx generate cmake: Generate CMakeLists.txt from cx.toml.cx generate ninja: Generate build.ninja from cx.toml.cx add <lib>: Add a library from registry or Git URL.cx remove <lib>: Remove a dependency.cx update: Update dependencies to latest versions.cx vendor: Copy all dependencies into vendor/ for commit/offline use.cx lock: Manage cx.lock file (--check, --update).cx sync: Synchronize dependencies with cx.lock to ensure reproducible builds.cx tree: Visualize the dependency graph.cx test: Run unit tests in tests/.
--filter <name>: Run specific tests.cx fmt: Format code with clang-format.
--check: Verify formatting without modifying (for CI).cx check: Static analysis (clang-tidy/cppcheck).cx toolchain: Manage C/C++ compilers.
list: Show detected compilers.select: Choose active compiler interactively.install: Interactive wizard to install toolchains and dev tools.update: Check for and install toolchain updates.cx docker: Generate a Dockerfile.cx ci: Generate a GitHub Actions workflow.cx setup-ide: Generate VSCode configuration (.vscode/).cx.toml)[package]
name = "my-awesome-app"
version = "0.1.0"
edition = "c++20"
[build]
bin = "app" # Output: app.exe
compiler = "clang" # Options: msvc, clang, clang-cl, g++
flags = ["-O2", "-Wall", "-Wextra"]
libs = ["pthread", "m"]
pch = "src/pch.hpp" # Precompiled Header (Optional)
[dependencies]
# 1. Simple Git (HEAD)
fmt = "https://github.com/fmtlib/fmt.git"
# 2. Pinned Version (Recommended for production)
json = { git = "https://github.com/nlohmann/json.git", tag = "v3.11.2" }
# 3. System Dependency (pkg-config)
gtk4 = { pkg = "gtk4" }
# Build Profiles (for cross-compilation)
[profile:esp32]
base = "release" # Inherit from release
compiler = "xtensa-esp32-elf-g++"
flags = ["-mcpu=esp32", "-ffunction-sections"]
[arduino]
board = "arduino:avr:uno" # or "esp32:esp32:esp32"
port = "COM3" # optional, for upload
caxe is organized into modular components for maintainability:
src/
βββ main.rs # CLI entry point & routing (~980 lines)
βββ commands/ # CLI command handlers
β βββ toolchain.rs # cx toolchain commands
β βββ target.rs # cx target commands
β βββ generate.rs # cx generate cmake/ninja
β βββ doctor.rs # cx doctor, lock, sync
βββ build/ # Core build system
β βββ core.rs # Parallel compilation engine
β βββ utils.rs # Toolchain detection, std flags
β βββ test.rs # Test runner
β βββ arduino.rs # Arduino/IoT support
β βββ feedback.rs # Error message analysis
βββ deps/ # Dependency management
β βββ fetch.rs # Git clone, prebuilt downloads
β βββ manage.rs # Add/remove dependencies
β βββ vendor.rs # Vendor command
βββ toolchain/ # Compiler detection
β βββ windows.rs # MSVC/vswhere discovery
β βββ install.rs # Toolchain installation wizard
βββ config.rs # cx.toml parsing
βββ lock.rs # cx.lock file handling
βββ registry.rs # Library registry lookups
βββ [utilities] # cache, ci, docker, ide, doc, etc.
Key Design Principles:
# Run all tests (unit + integration)
cargo test
# Run only unit tests
cargo test --lib
# Run only integration tests
cargo test --test integration_test
Test categories:
config.rs - Config parsing, BuildConfig, Dependenciesbuild/utils.rs - MSVC/GCC standard flag generationbuild/feedback.rs - Compiler error message parsingintegration_test.rs - End-to-end build scenariosContributions are welcome! Here's how to get started:
Fork & Clone
git clone https://github.com/dhimasardinata/caxe.git
cd caxe
Build & Test
cargo build
cargo test
cargo clippy # Should have 0 warnings
Code Style
cargo fmt before committinganyhow::Result for error handlingPull Request
If you find caxe useful, consider supporting its development:
| Network | Address |
|---|---|
| Ethereum/Polygon/BSC | 0x7e1a1a8c46817f297be14c14b587a0fa4b9e484b |
| Solana | Bek24ZEPWHUJeTHQmDHtC7uHaHiH7TX8FmfYqtQu3Tt |
| Bitcoin | bc1q4rm4e007u0f44vje694f422dy423dfc2caqz9z |
Your sponsorship helps with:
π§ Continued development and new features
π Better documentation and examples
π Faster bug fixes and support
π Community growth
Licensed under either of:
at your option.
Made with β€οΈ for the C/C++ community