Skip to content

Building and Setup

Leonard Ramminger edited this page Aug 11, 2026 · 4 revisions

Building and Setup

Requirements

Tool Version Notes
CMake >= 3.24 Ninja generator is used
Clang >= 17 CI uses LLVM 22; project targets C++20
Conan 2.x Dependency management
Ninja any recent Pulled in by CMake preset
Git any recent Fetches Tempify at configure time (unless -DTEMPIFY_SOURCE_DIR= is set)
Python pipx optional Used in CI for Conan, gcovr, cmakelang

Optional but recommended:

  • ccache or sccache for faster rebuilds (BUILD_CACHE=ON by default)
  • clang-format, clang-tidy, cmake-format, cppcheck for local QA
  • ReqPack (rqp) when your build.lua uses reqpack { ... } — see ReqPack Declaration

First-time setup

git clone https://github.com/Coditary/Beez.git
cd Beez
make setup CONAN_PROFILE=conan/profiles/clang-release

Plain make setup uses CONAN_PROFILE=clang-release (profile name in your Conan home). Prefer the repo-local profile path above unless you already have a matching profile installed.

make setup runs:

  1. conan install into build/ with the Conan profile from CONAN_PROFILE
  2. CMake configure with preset conan-release or conan-debug (from BUILD_TYPE) and tests enabled

Default compiler environment variables:

export CC=clang
export CXX=clang++

Build targets

Make target Purpose
build Release configure + compile
debug Debug configure + compile
test Run CTest (BUILD_TYPE=Release by default)
run Run the beez binary (make run ARGS="--help")
clean Remove build/
all Full QA pipeline (build, test, format-check, lint, analyze, security, coverage, sanitize, fuzzer-smoke)
help List all Make targets

Binary path after release build:

build/build/Release/bin/beez

Debug and specialized builds

Target Configure preset Use case
setup-debug / debug conan-debug Debugging, breakpoints
setup-coverage Debug + BUILD_COVERAGE=ON Coverage reports
setup-sanitize Debug + ASan/UBSan Memory and UB checks
setup-fuzzer Debug + BUILD_FUZZER=ON Lua DSL fuzz target
make debug
make test BUILD_TYPE=Debug
make sanitize

Install locally

make build
make install-beez              # symlink to ~/.local/bin/beez
make install-beez-completion   # add shell completion to ~/.bashrc / ~/.zshrc
make uninstall-beez            # remove symlink

Override install location:

make install-beez BEEZ_INSTALL_DIR=/path/to/bin

Conan profiles

Shipped profiles live under conan/profiles/:

  • clang-release
  • clang-debug

CI generates a profile dynamically from the installed Clang version (scripts/ci-conan-profile.sh).

Override for local machines:

make setup CONAN_PROFILE=conan/profiles/clang-debug BUILD_TYPE=Debug

Dependencies (Conan)

Main runtime and test libraries:

Package Role
lua Lua 5.4 embedding for the DSL
cli11 CLI parsing
spdlog Logging backend
onetbb Parallel execution
zlib Cache compression
gtest Unit and integration tests

sol2 (Lua/C++ bindings) is fetched via CMake FetchContent, not Conan.

Dogfooding in this repository

The Beez repository includes its own root build.lua for maintainer workflows (beez build, beez quality, beez all, etc.). That pipeline is optional for contributors; the Makefile targets above are the canonical entry points documented in CI.

Related pages

Clone this wiki locally