Files
create/docs/src/guide/building.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

3.6 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 six submodules:

Submodule Path Source
ztools mods/ztools git.kindred-systems.com/forbes/ztools
silo-mod mods/silo git.kindred-systems.com/kindred/silo-mod
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 ztools or Silo, 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.