Files
create/docs/src/development/build-system.md
forbes 87a0af0b0f phase 1: copy Kindred-only files onto upstream/main (FreeCAD 1.2.0-dev)
Wholesale copy of all Kindred Create additions that don't conflict with
upstream FreeCAD code:

- kindred-icons/ (1444 Catppuccin Mocha SVG icon overrides)
- src/Mod/Create/ (Kindred Create workbench)
- src/Gui/ Kindred source files (FileOrigin, OriginManager,
  OriginSelectorWidget, CommandOrigin, BreadcrumbToolBar, EditingContext)
- src/Gui/Icons/ (Kindred branding and silo icons)
- src/Gui/PreferencePacks/KindredCreate/
- src/Gui/Stylesheets/ (KindredCreate.qss, images_dark-light/)
- package/ (rattler-build recipe)
- docs/ (architecture, guides, specifications)
- .gitea/ (CI workflows, issue templates)
- mods/silo, mods/ztools submodules
- .gitmodules (Kindred submodule URLs)
- resources/ (kindred-create.desktop, kindred-create.xml)
- banner-logo-light.png, CONTRIBUTING.md
2026-02-13 14:03:58 -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.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