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
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-releaseconda-macos-debug/conda-macos-releaseconda-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.