Files
create/docs/src/guide/building.md
forbes 7f02fd182e
All checks were successful
Build and Test / build (pull_request) Successful in 24m46s
docs: comprehensive documentation refresh — remove stale references, add missing content
Root documentation:
- README.md: add Datums description, update addon load order and SDK references,
  fix project structure tree, update issue reporting guidance
- CONTRIBUTING.md: update submodule table (remove ztools, add gears/datums/solver),
  fix QSS guidance (single canonical source, not three copies)
- docs/ARCHITECTURE.md: update bootstrap flow (5 addons, split deferred timers
  between Create core and Silo addon), update load order and source layout
- docs/COMPONENTS.md: add Datums and Solver sections, update Gears description,
  fix Silo origin registration reference
- docs/KNOWN_ISSUES.md: create missing file referenced by CLAUDE.md and CONTRIBUTING.md
- docs/INTEGRATION_PLAN.md: update layer 5 diagram, fix load order references,
  update Phase 6 install rules, fix Layer 2/3/5 descriptions
- docs/OVERVIEW.md: add datums submodule entry
- docs/UPSTREAM.md: update Phase 1 directory table and Phase 4 submodule list

mdBook documentation (docs/src/):
- SUMMARY.md: replace dead architecture/ links with existing reference pages,
  remove deleted silo-server files, add new silo-server pages
- introduction.md: rewrite — replace ztools with current addons (Silo, Gears,
  Datums, KCSDK), update version to v0.1.5/FreeCAD 1.2.0
- guide/getting-started.md: update first-run addon list
- guide/installation.md: update verification console output
- guide/workbenches.md: rewrite — replace ztools with Gears, Datums, Solver
- guide/building.md: update submodule table, fix error message guidance
- development/contributing.md: fix scope example and issue reporting
- development/repo-structure.md: rewrite — add SDK, datums, gears, solver,
  reference/ folder; update submodule and key files tables
- development/writing-an-addon.md: fix priority range table
- reference/create-module-bootstrap.md: rewrite — reflect addon_loader system,
  split deferred timers between Create core and Silo addon
- reference/datum-creator.md: update from ZTools to datums addon paths and naming
- reference/glossary.md: add KCSDK entry, update FreeCAD version, remove ztools
  entry, update repository URLs table
2026-03-03 13:52:53 -06:00

3.7 KiB

Building from Source

Prerequisites

  • git with submodule support
  • pixi — conda-based dependency manager and task runner

Pixi handles all other dependencies (CMake, compilers, Qt6, OpenCASCADE, etc.).

Clone

git clone --recursive ssh://git@git.kindred-systems.com:2222/kindred/create.git
cd create

If cloned without --recursive:

git submodule update --init --recursive

The repository includes several submodules:

Submodule Path Source
silo-mod mods/silo git.kindred-systems.com/kindred/silo-mod
gears mods/gears git.kindred-systems.com/kindred/gears
datums mods/datums git.kindred-systems.com/kindred/datums
solver mods/solver git.kindred-systems.com/kindred/solver
OndselSolver src/3rdParty/OndselSolver git.kindred-systems.com/kindred/solver
GSL src/3rdParty/GSL github.com/microsoft/GSL
AddonManager src/Mod/AddonManager github.com/FreeCAD/AddonManager
googletest tests/lib github.com/google/googletest

Build

pixi run configure
pixi run build
pixi run install
pixi run freecad

By default these target the debug configuration. For release builds:

pixi run configure-release
pixi run build-release
pixi run install-release
pixi run freecad-release

All pixi tasks

Task Description
initialize git submodule update --init --recursive
configure CMake configure (debug)
configure-debug CMake configure with debug preset
configure-release CMake configure with release preset
build Build (debug)
build-debug cmake --build build/debug
build-release cmake --build build/release
install Install (debug)
install-debug cmake --install build/debug
install-release cmake --install build/release
test Run tests (debug)
test-debug ctest --test-dir build/debug
test-release ctest --test-dir build/release
freecad Launch FreeCAD (debug)
freecad-debug build/debug/bin/FreeCAD
freecad-release build/release/bin/FreeCAD

CMake presets

The project provides presets in CMakePresets.json for each platform and build type:

  • conda-linux-debug / conda-linux-release
  • conda-macos-debug / conda-macos-release
  • conda-windows-debug / conda-windows-release

All presets inherit from a common base that enables CMAKE_EXPORT_COMPILE_COMMANDS and configures job pools. The conda presets use the Ninja generator and pick up compiler paths from the pixi environment.

Platform notes

Linux: Uses clang from conda-forge. Requires kernel-headers, mesa, X11, and libspnav (all provided by pixi). Uses the mold linker for faster link times.

macOS: Minimal extra dependencies — pixi provides nearly everything. Tested on both Intel and Apple Silicon.

Windows: Requires pthreads-win32 and MSVC. The conda preset configures the MSVC toolchain automatically when run inside a pixi shell.

Caching

The build uses ccache for compilation caching:

  • Maximum cache size: 4 GB
  • Compression: zlib level 6
  • Sloppiness mode enabled for faster cache hits

ccache is auto-detected by CMake at configure time.

Common problems

Submodules not initialized: If you see missing file errors for addon modules, run pixi run initialize or git submodule update --init --recursive.

Pixi not found: Install pixi from https://pixi.sh.

ccache full: Clear with ccache -C or increase the limit in your ccache config.

Preset not found: Ensure you are running CMake from within a pixi shell (pixi shell) so that conda environment variables are set.