caxe 0.3.4

A modern C/C++ project manager that cuts through build system complexity. Zero config, smart dependencies, and parallel builds.
Documentation

caxe (cx) ๐Ÿช“

CI GitHub release (latest by date) GitHub all releases Crates.io

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.

โœจ Features

  • โšก Zero Config Start: Create a Hello World C/C++ project in seconds.
  • ๐Ÿ”ง Automatic Toolchain Discovery: Detects MSVC, Clang-CL, Clang++, and GCC without relying on PATH. Uses vswhere on Windows.
  • ๐Ÿ“ฆ Smart Dependency Management:
    • Git Libraries: Auto-download from GitHub. Supports Pinning (Tag/Branch/Commit) for stability.
    • System Packages: Native support for pkg-config (e.g., GTK, OpenSSL).
    • Vendor Mode: cx vendor to copy dependencies locally for offline builds.
  • ๐Ÿš€ High-Performance Builds:
    • Lock-free Parallel Compilation: Utilizes all CPU cores.
    • Caching: CCache integration, incremental builds, and PCH support.
    • LTO: Link Time Optimization for release builds.
  • ๐Ÿงช Smart Testing:
    • Auto-links project sources for unit testing internals.
    • Test filtering (--filter) and binary caching.
  • ๐Ÿ“Š Insights: cx stats for code metrics and cx tree for dependency graphs.
  • ๐ŸŒ WebAssembly: cx build --wasm (via Emscripten) support out of the box.
  • ๐Ÿ›ก๏ธ Safety: cx build --sanitize for Address/Undefined Behavior sanitizers.
  • ๐ŸŽจ Code Formatting: Built-in cx fmt command (via clang-format).
  • ๐Ÿค– Automation: Generators for Docker, GitHub Actions, and VSCode configs.

๐Ÿ“ฆ Installation

Automatic Script (Recommended)

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

Option 2: Install via Cargo

cargo install caxe

๐Ÿš€ Quick Start

Interactive Mode

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

CLI Arguments Mode

# 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


๐Ÿ“– CLI Reference

Project Management

  • 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).

Build & Run

  • cx run: Build and run the project.
  • cx build: Compile only.
    • --release: Optimize for speed (-O3 / /O2).
    • --wasm: Compile to WebAssembly (requires Emscripten).
    • --lto: Enable Link Time Optimization.
    • --sanitize=<check>: Enable runtime sanitizers (e.g., address, undefined).
    • --profile: Trace build times (generate chrome tracing .json).
  • cx watch: Rebuild on file save.
  • cx clean: Remove build artifacts.
  • cx package: Create a distribution archive (ZIP) containing the executable, DLLs, and assets.

Dependencies

  • 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.

Testing & Quality

  • cx test: Run unit tests in tests/.
    • --filter <name>: Run specific tests.
  • cx fmt: Format code with clang-format.
  • cx check: Static analysis (clang-tidy/cppcheck).

Ecosystem

  • cx toolchain: Manage C/C++ compilers.
    • list: Show detected compilers.
    • select: Choose active compiler interactively.
    • install <name>: Download portable toolchains (e.g., mingw).
  • cx docker: Generate a Dockerfile.
  • cx ci: Generate a GitHub Actions workflow.
  • cx setup-ide: Generate VSCode configuration (.vscode/).

โš™๏ธ Configuration (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++

cflags = ["-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" }

๐Ÿ“ License

MIT