Some checks failed
Build and Test / build (pull_request) Has been cancelled
- 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.
2.3 KiB
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(viaKINDRED_CREATE_VERSION) - FreeCAD base version:
1.0.0(viaFREECAD_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