caxe (cx) 🪓
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, and managing dependencies—giving C++ developers the modern experience they deserve.
Zero Configuration. Lightning Fast. Batteries Included.
✨ Features
- ⚡ Zero Config Start: Create a Hello World C++ project in seconds.
- 📑 Project Templates: Start quickly with presets for Raylib or Web Servers.
- 📦 Smart Dependency Management: Define dependencies in
cx.tomlor usecx add.cxautomatically downloads libraries from Git and handles linking. - 💾 Global Caching: Libraries are downloaded once and shared across all projects.
- 🚀 Parallel & Incremental Builds: Uses multi-threading to compile files simultaneously and only recompiles what changed.
- 👁️ Watch Mode: Automatically recompiles and runs your project when you save a file.
- 🧪 Built-in Testing: Run unit tests easily without configuring external frameworks.
- 🛠️ Custom Configuration: Support for C++17/20, custom compiler flags, and system linking.
📦 Installation
Prerequisites:
- Rust (Cargo)
- Clang or GCC installed
🚀 Usage
1. Create a new project
Start with a default console app, or use a template.
# Default (Hello World)
# Web Server (cpp-httplib)
# Raylib Game Config
2. Manage Dependencies
Add or remove libraries directly from the CLI.
# Add a library (supports 'user/repo' or full git URL)
# Remove a library
3. Build & Run
# Compile only (useful for checking errors)
# Compile and Run
# Run with optimizations (Release mode)
4. Watch mode (Auto-reload)
Coding without manually recompiling every time.
5. Unit Testing 🧪
No need for complex test runners like GoogleTest or Catch2 for simple projects.
- Create a
tests/directory in your project root. - Add
.cppfiles (e.g.,tests/test_math.cpp). - Use standard
assertor return0for success.
int
Run the tests:
⚙️ Configuration (cx.toml)
No more confusing Makefiles or CMakeLists.
[]
= "my-game"
= "0.1.0"
= "c++20"
[]
= "g++" # Optional: Change default compiler (clang++)
= ["-O2", "-Wall"]
= ["pthread", "m"] # Link system libraries
[]
# Dependencies are automatically fetched & linked!
= "https://github.com/nlohmann/json.git"
= "https://github.com/fmtlib/fmt.git"
🖼️ Showcase
Experience a modern development workflow. Here is an example of running a C++ Web Server (cpp-httplib) with zero manual configuration.
1. The Build Process
cx handles dependency fetching, caching, and compiling automatically.

2. The Result
The C++ server is up and running instantly.

3. Advanced Libraries (Raylib)
cx can even compile complex libraries like Raylib from source using custom build scripts!

📝 License
MIT