Files
create/docs/src/development/build-system.md
forbes 05428f8a1c
Some checks failed
Deploy Docs / build-and-deploy (push) Successful in 40s
Build and Test / build (push) Has been cancelled
chore: bump version to 0.1.5
2026-02-21 12:05:09 -06:00

2.3 KiB

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.5 (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.5")
    → 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