Files
create/docs/src/development/build-system.md
forbes-0023 64bde8d97a
Some checks failed
Build and Test / build (pull_request) Has been cancelled
docs: initialize mdBook structure with stub pages and deployment workflow
- Add docs/book.toml with coal theme, repo link, and custom CSS
- Add docs/src/SUMMARY.md with navigation structure
- Create 16 content pages across guide/, architecture/, development/, reference/
- Add docs/theme/kindred.css with minimal sidebar overrides
- Add .gitea/workflows/docs.yml for auto-deploy on push to main
- Add docs/book/ to .gitignore

Pages are populated with real content from the codebase where possible.
Remaining pages have TODO markers for future content.
2026-02-09 07:59:01 -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