Compile on MacOS/de

Es gibt einen experimentellen FreeCAD Docker Container, der für die FreeCAD Entwicklung getestet wird. Lies mehr darüber unter Kompilieren unter Docker

Übersicht

Diese Seite beschreibt, wie der neueste FreeCAD-Quellcode unter macOS kompiliert wird. Für andere Plattformen, siehe Kompilieren.

Die aktuellste und einfachste Möglichkeit, eine Entwicklungsumgebung aufzubauen, ist über Pixi.. Siehe hier für Schritte zur Verwendung dieses Tools. Nachfolgend findet man weitere Methoden mit unterschiedlichen Schwierigkeitsgraden.

Diese Anleitung wurde auf macOS Catalina mit Standard XCode 11.6 getestet. Es ist bekannt, dass sie auf macOS BigSur Beta mit XCode 12.0 Beta funktioniert. Wenn du planst, XCode Beta zu verwenden, stelle bitte sicher, dass du die Befehlszeilenwerkzeuge add on über ein dmg Paket herunterlädst, um einige libz Abhängigkeitsprobleme zu umgehen.

Diese Seite dient als Schnellstart und ist nicht als umfassende Beschreibung aller verfügbaren Build-Optionen gedacht.

Wenn du nur die neueste Vorabversion von FreeCAD evaluieren möchtest, kannst du vorgefertigte Binärdateien von hier herunterladen.

Installationsvoraussetzungen

Die folgende Software muss installiert sein, um den Bauprozess zu unterstützen.

Paketmanager Homebrew

Homebrew ist ein kommandozeilenbasierter Paketmanager für macOS. Die Homebrew Hauptseite bietet eine Installations Befehlszeile, die du einfach in ein Terminalfenster einfügst.

CMake

CMake ist ein Kompilierwerkzeug, das eine Kompilierkonfiguration auf der Grundlage von Variablen erzeugt, die du angibst. Du gibst dann den Befehl "make" aus, um diese Konfiguration tatsächlich zu erstellen. Die Kommandozeilenversion von CMake wird automatisch als Teil der Homebrew Installation (siehe oben) installiert. Wenn du es vorziehst, eine GUI Version von CMake zu verwenden, kannst du es von hier herunterladen.

Abhängigkeiten einrichten

FreeCAD unterhält eines Homebrew-"Fass" (Homebrew-Cask), das die erforderlichen Formeln und Abhängigkeiten installiert. Die neuesten Installationsanleitungen findet man unter hier.

brew install kann eine ganze Weile dauern, also genug Zeit, um sich ein Getränk zu holen :-).

Alternativ können die einzelnen Abhängigkeiten manuell hinzugefügt werden; dafür werden die folgenden Pakete mit brew install ... installiert:

Es gibt Pakete, die nur zur Verfügung stehen, wenn das FreeCAD-Fass angezapft wurde (you tapped the freecad cask): Dafür muss (brew tap freecad/freecad) ausgeführt werden. Einigen historischen Fehlerumgehungen zur Zeit des Schreibens (Nov. 2022) ist geschuldet, dass die von Homebrew installierten Versionen von PySide2 und Shiboken2 unbrauchbar sind, da sie die Verwendung von Py_Limited_API erzwingen, das FreeCAD nicht unterstützt. Es ist zu erwarten, das diese Umgehung in den nächsten Monaten entfernt wird, aber in der Zwischenzeit müssen die Versionen PySide und Shiboken aus dem FreeCAD-Fass verwendet werden. Mit brew install ... werden die folgenden Pakete installiert:

Außerdem müssen PySide und Shiboken noch "verknüpft" werden:

brew link freecad/freecad/pyside2@5.15.5 freecad/freecad/shiboken2@5.15.5

In manchen Fällen verwenden die von Homebrew installierten Pakete nicht dieselbe Python-Version: Zur Zeit des Schreibens verwendet z.B. PySide2 Python 3.10, aber boost-python3 verwendet Python 3.11. Während ein "roll back" der fortschrittlicheren Version möglich ist (so dass in diesem Falle boost-python3 Python 3.10 verwendet), bleibt es eine fortschrittlichere Version und in vielen Fällen ist es am besten, auf die nächste Aktualisierung des anderen Pakets zu warten. Wenn man trotzdem diesen Weg gehen möchte, sollte man sich den Befehl "brew extract" ansehen, den man zum Extrahieren einer Formel in ein neues Fass (typischerweise freecad/freecad) verwenden kann. Die Formel kann dann nach belieben bearbeitet werden.

Der Pfad zu Qt muss angegeben werden: Qt5 wird derzeit unterstützt, während die Unterstützung von Qt6 noch in Arbeit ist. FREECAD_QT_VERSION auf "Auto" oder "5" setzen, um Qt5 (die Voreinstellung) auszuwählen. Auf der Komandozeile gibt man etwas ein, wie:

cmake \
  -DCMAKE_BUILD_TYPE="Release" \
  -DPYTHON_EXECUTABLE="/usr/local/bin/python3" \
  -DQt5_DIR="/usr/local/Cellar/qt@5/5.15.7/lib/cmake/Qt5" \
  -DPySide2_DIR="/usr/local/Cellar/pyside2@5.15.5/5.15.5/lib/cmake/PySide2-5.15.5" \
  -DShiboken2_DIR="/usr/local/Cellar/shiboken2@5.15.5/5.15.5_1/lib/cmake/Shiboken2-5.15.5" \
  ../freecad-source

Quellcode beziehen

In den folgenden Anweisungen werden die Quell- und Kompilier-Ordner nebeneinander erstellt unter

/Users/username/FreeCAD

aber du kannst beliebige Ordner verwenden.

mkdir ~/FreeCAD
cd ~/FreeCAD

Der folgende Befehl wird das FreeCAD git Repositorium in ein Verzeichnis namens FreeCAD-git klonen.

git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD FreeCAD-git

Erstelle den Kompilierordner.

mkdir ~/FreeCAD/build

CMake ausführen

Zunächst führen wir CMake aus, um die Kompilierkonfiguration zu erzeugen. Mehrere Optionen müssen an CMake übergeben werden. Die folgende Tabelle beschreibt die Optionen und gibt einige Hintergrundinformationen.

CMake Optionen

Name Wert Anmerkungen
CMAKE_BUILD_TYPE Release (STRING) Release oder Debug. Debug wird im Allgemeinen für Tests auf Entwicklerebene verwendet, kann aber auch für Tests auf Benutzerebene und zur Fehlersuche erforderlich sein.
CMAKE_PREFIX_PATH "/usr/local/opt/qt5152;" ... (PATH) Erforderlich für die Erstellung mit Qt5. Siehe Hinweis unten. Du musst auch den Pfad zu den VTK Bibliotheken und NGLIB Bibliotheken der cmake Konfigurationsdatei hinzufügen.
FREECAD_CREATE_MAC_APP 1 (BOOL) Erzeugt ein FreeCAD.app Bündel an dem in CMAKE_INSTALL_PREFIX angegebenen Ort, wenn der Befehl 'make install' ausgegeben wird.
CMAKE_INSTALL_PREFIX "./.." (PATH) Pfad, wo du das FreeCAD.app Bündel erzeugen möchtest.
FREECAD_USE_EXTERNAL_KDL 1 (BOOL) Erforderlich, falls die FEM-Werkzeuge kompiliert werden sollen.
BUILD_FEM_NETGEN 1 (BOOL) Erforderlich.

Hinweis: Kommandozeile zum Erzeugen von CMAKE_PREFIX_PATH:

ls -d $(brew list -1 | grep qt | tail -1 | xargs brew --cellar)/*/lib/cmake

CMake GUI

Öffne die CMake-App und fülle die Felder für den Quell- und den Build-Ordner aus. In diesem Beispiel wäre dies /Users/username/FreeCAD/FreeCAD-git für den Quellordner und /Users/username/FreeCAD/build für den Build-Ordner.

Anschließend auf die Schaltfläche "Konfigurieren" klicken, um die Liste der Konfigurationsoptionen anzuzeigen. Daraufhin wird ein Dialogfeld angezeigt, in dem man aufgefordert wird, den zu verwendenden Generator anzugeben. Die Standardeinstellung "Unix Makefiles" beibehalten. Die Konfiguration schlägt beim ersten Mal fehl, da einige Optionen geändert werden müssen. Hinweis: Man muss das Kontrollkästchen "Erweitert" aktivieren, um alle Optionen anzuzeigen.

Setze die Option aus der obigen Tabelle, drücke dann erneut Configure und dann Generate.

CMake Befehlszeile

Gib das Folgende in das Terminal ein.

export PREFIX_PATH="/usr/local/opt/qt5152;\
/usr/local/Cellar/nglib/v6.2.2007/Contents/Resources;\
/usr/local/Cellar/vtk@8.2/8.2.0_1/lib/cmake;"
$cd ~/FreeCAD/build
$cmake \
  -DCMAKE_BUILD_TYPE="Release"   \
  -DBUILD_QT5=1                  \
  -DWITH_PYTHON3=1               \
  -DCMAKE_PREFIX_PATH="$PREFIX_PATH" \
  -DPYTHON_EXECUTABLE="/usr/local/bin/python3" \
  -DFREECAD_USE_EXTERNAL_KDL=1   \
  -DCMAKE_CXX_FLAGS='-std=c++14' \
  -DBUILD_FEM_NETGEN=1           \
  -DFREECAD_CREATE_MAC_APP=1     \
  -DCMAKE_INSTALL_PREFIX="./.."  \
  ../FreeCAD-git/

make ausführen

Schließlich in einem Terminal den Befehl "make" ausführen, um FreeCAD zu kompilieren und zu verknüpfen und das App-Bundle zu generieren.

cd ~/FreeCAD/build
make -j5 install

Die Option -j gibt an, wie viele make-Prozesse gleichzeitig ausgeführt werden sollen. Eine gute Einstellung ist in der Regel "Eins plus die Anzahl der CPU-Kerne". Wenn die Kompilierung jedoch aus irgendeinem Grund fehlschlägt, ist es sinnvoll, make ohne die Option -j erneut auszuführen, damit man genau sehen kann, wo der Fehler aufgetreten ist.

Siehe auch Kompilierung - Beschleunigen.

Wenn das Kompilieren ohne Fehler abgeschlossen ist, kannst du FreeCAD nun durch einen Doppelklick auf die ausführbare Datei im Finder starten.

Aktualisierung von Github

Die Entwicklung von FreeCAD schreitet schnell voran; fast täglich gibt es Fehlerbehebungen oder neue Funktionen. Um die neuesten Änderungen zu erhalten, aktualisiert man das Quellverzeichnis mit git (siehe Quellcodeverwaltung) und führt dann die oben beschriebenen Schritte mit CMake und make erneut aus. In diesem Fall ist es in der Regel nicht notwendig, mit einem leeren Build-Verzeichnis zu beginnen, und nachfolgende Kompilierungen laufen in der Regel viel schneller als die erste.

Kompilieren mit Qt4 und Python 2.7

FreeCAD hat von Qt 4 auf Qt 5 sowie Homebrew umgestellt. Qt 4 ist nach der Umstellung auf Qt 5 nicht mehr als Option für neue Builds unter macOS verfügbar. Python 2.7 ist für Homebrew und das kommenden macOS veraltet und wird von uns auch für macOS Bau nicht mehr unterstützt.

Fehlersuche

Segfault beim Start von Qt5

Wenn Qt4 zuvor über brew installiert wurde und man dann mit Qt5 kompiliert, kann beim Starten des neuen Qt5-Builds die Ausnahme EXC_BAD_ACCESS (SEGSEGV) auftreten. Um dieses Problem zu beheben, muss man Qt4 manuell deinstallieren.

brew uninstall --ignore-dependencies --force cartr/qt4/shiboken@1.2 cartr/qt4/pyside@1.2 cartr/qt4/pyside-tools@1.2 cartr/qt4/qt-legacy-formula

Fortran

"No CMAKE_Fortran_COMPILER could be found." während der Konfiguration – Ältere Versionen von FreeCAD erfordern die Installation eines Fortran-Compilers. Mit Homebrew führt man den folgenden Befehl aus: "brew install gcc" und versucht erneut, die Konfiguration durchzuführen, und gibt cmake den Pfad zu Fortran ie an -DCMAKE_Fortran_COMPILER=/opt/local/bin/gfortran-mp-4.9 . Oder, verwendt vorzugsweise eine aktuellere Version des FreeCAD-Quellcodes!

FreeType

Bei Verwendung von CMake-Versionen älter als 3.1.0 muss die CMake-Variable FREETYPE_INCLUDE_DIR_freetype2 manuell gesetzt werden, z. B. /usr/local/include/freetype2

Ergänzende Build-Hinweise

FreeCAD kann auf Basis des neuesten Git-Master-Zweigs auf GitHub erstellt und über eine CLI unter Verwendung der von Homebrew-Freecad Tap bereitgestellten Bibliotheken gestartet werden. Eine vollständige Liste der Build-Anweisungen findet man [hier unter https://github.com/ipatch/homebrew-us-05/tree/dev/freecad#building-freecad-for-macos-by-macos].