# Build System Kindred Create uses **CMake** for build configuration, **pixi** (conda-based) for dependency management and task running, and **ccache** for compilation caching. ## Overview - **CMake** >= 3.22.0 - **Ninja** generator (via conda presets) - **pixi** manages all dependencies — compilers, Qt6, OpenCASCADE, Python, etc. - **ccache** with 4 GB max, zlib compression level 6, sloppy mode - **mold** linker on Linux for faster link times ## CMake configuration The root `CMakeLists.txt` defines: - **Kindred Create version:** `0.1.0` (via `KINDRED_CREATE_VERSION`) - **FreeCAD base version:** `1.0.0` (via `FREECAD_VERSION`) - CMake policy settings for compatibility - ccache auto-detection - Submodule dependency checks - Library setup: yaml-cpp, fmt, ICU ### Version injection The version flows from CMake to Python via `configure_file()`: ``` CMakeLists.txt (KINDRED_CREATE_VERSION = "0.1.0") → src/Mod/Create/version.py.in (template) → build/*/Mod/Create/version.py (generated) → update_checker.py (imports VERSION) ``` ## CMake presets Defined in `CMakePresets.json`: | Preset | Platform | Build type | |--------|----------|------------| | `conda-linux-debug` | Linux | Debug | | `conda-linux-release` | Linux | Release | | `conda-macos-debug` | macOS | Debug | | `conda-macos-release` | macOS | Release | | `conda-windows-debug` | Windows | Debug | | `conda-windows-release` | Windows | Release | All presets inherit from a hidden `common` base and a hidden `conda` base (Ninja generator, conda toolchain). ## cMake/ helper modules The `cMake/` directory contains CMake helper macros inherited from FreeCAD: - **FreeCAD_Helpers** — macros for building FreeCAD modules - Platform detection modules - Dependency finding modules (Find*.cmake) ## Dependencies Core dependencies managed by pixi (from `pixi.toml`): | Category | Packages | |----------|----------| | Build | cmake, ninja, swig, compilers (clang/gcc) | | CAD kernel | occt 7.8, coin3d, opencamlib, pythonocc-core | | UI | Qt6 6.8, PySide6, pyside6 | | Math | eigen, numpy, scipy, sympy | | Data | hdf5, vtk, smesh, ifcopenshell | | Python | 3.11 (< 3.12), pip, freecad-stubs | Platform-specific extras: - **Linux:** clang, kernel-headers, mesa, X11, libspnav - **macOS:** sed - **Windows:** pthreads-win32