Compile on Linux/de: Difference between revisions

From FreeCAD Documentation
(Created page with "==== Externes oder internes Pivy ====")
(Created page with "Bisher wurde eine Version von Pivy in den Quellcode von FreeCAD (intern) aufgenommen. Wenn Du die Kopie von Pivy (extern) Deines Systems verwenden möchtest, musst Du Folgende...")
Line 575: Line 575:
==== Externes oder internes Pivy ====
==== Externes oder internes Pivy ====


Previously, a version of Pivy was included in the source code of FreeCAD (internal). If you wanted to use your system's copy of Pivy (external), you needed to use <code>-DFREECAD_USE_EXTERNAL_PIVY=1</code>.
Bisher wurde eine Version von Pivy in den Quellcode von FreeCAD (intern) aufgenommen. Wenn Du die Kopie von Pivy (extern) Deines Systems verwenden möchtest, musst Du Folgendes verwenden <code>-DFREECAD_USE_EXTERNAL_PIVY=1</code>.


Using external Pivy became the default during development of FreeCAD 0.16, therefore this option does not need to be set manually anymore.
Using external Pivy became the default during development of FreeCAD 0.16, therefore this option does not need to be set manually anymore.

Revision as of 12:28, 7 December 2019

Auf neuesten Linux-Distributionen ist FreeCAD in der Regel einfach zu erstellen, da alle Abhängigkeiten in der Regel vom Paketmanager bereitgestellt werden. Es schliesst im Wesentlichen 3 Schritte ein:

  1. Besorgen des FreeCAD Quellcodes
  2. ERmittlung der Abhängigkeiten oder Pakete, von denen FreeCAD abhängt
  3. Konfigurieren mit cmake und kompilieren mit make.

Nachfolgend finden sich detaillierte Erklärungen des gesamten Prozesses, einige Bauskripte und Besonderheiten, denen man begegnen könnte. Wenn Du im folgenden Text etwas Falsches oder Veraltetes findest (Linux-Distributionen ändern sich oft), oder wenn Du eine Distribution verwendest, die nicht aufgeführt ist, diskutieren das Problem im Forum und hilf uns, es zu korrigieren.

Allgemeiner Arbeitsablauf zur Kompilierung von FreeCAD aus der Quelle. Die Abhängigkeiten von Drittanbietern müssen im System vorhanden sein, ebenso wie der FreeCAD-Quellcode selbst. CMake konfiguriert das System so, dass mit einer einzigen make Anweisung das gesamte Projekt kompiliert wird.

Abruf der Quelle

Git

Der beste Weg, den Code zu bekommen, ist, das schreibgeschützte Git repository zu klonen. Dazu benötigst du das Programm git, das in den meisten Linux-Distributionen einfach installiert werden kann und auch auf der offiziellen Website von [1] erhältlich ist.

Dies wird eine Kopie der neuesten Version des FreeCAD Quellcodes in ein neues Verzeichnis namens FreeCAD Quelltext kopiert.

sudo apt install git
git clone https://github.com/FreeCAD/FreeCAD.git freecad-source

Weitere Informationen zur Verwendung von Git und zur Bereitstellung von Code für das Projekt findet sich unter Source code management.

Quellarchiv

Alternativ kannst du den Quellcode als [2], eine .zip oder .tar.gz Datei herunterladen und in das gewünschte Verzeichnis entpacken.

Erhalten der Abhängigkeiten

Um FreeCAD zu kompilieren, musst du die unter Third Party Libraries genannten Abhängigkeiten installieren; die Pakete, die diese Abhängigkeiten enthalten, sind unten für verschiedene Linux-Distributionen aufgeführt. Bitte beachte, dass die Namen und die Verfügbarkeit der Bibliotheken von eurer jeweiligen Distribution abhängen; wenn eure Distribution alt ist, können einige Pakete nicht verfügbar sein oder einen anderen Namen haben. Schaue in diesem Fall im nachfolgenden Abschnitt older and non-conventional distributions

Sobald du alle Abhängigkeiten installiert hast, gehe weiter zu compile FreeCAD].

Bitte beachte, dass der Quellcode von FreeCAD ca. 500 MB groß ist; er kann dreimal so groß sein, wenn Du das Git-Repository mit seiner gesamten Änderungshistorie klonst. Das Erhalten aller Abhängigkeiten kann das Herunterladen von 500 MB oder mehr neuer Dateien erfordern; wenn diese Dateien entpackt werden, können sie 1500 MB oder mehr Speicherplatz benötigen. Beachten auch, dass der Kompilierungsprozess bis zu 1500 MB zusätzliche Dateien erzeugen kann, wenn das System den gesamten Quellcode kopiert und ändert. Stelle daher sicher, dass genügend freier Speicherplatz auf Deiner Festplatte vorhanden ist, mindestens 4 GB, wenn Du mit dem Kompilieren beginnst.

Debian und Ubuntu

Auf Debian-basierten Systemen (Debian, Ubuntu, Mint, etc.) ist es recht einfach, alle benötigten Abhängigkeiten zu installieren. Die meisten Bibliotheken sind über apt oder den Synaptic Package Manager verfügbar.

Wenn du FreeCAD bereits aus den offiziellen Repositories installiert hast, kannst du seine Build Abhängigkeiten mit dieser einzigen Zeile Code in einem Terminal installieren:

sudo apt build-dep freecad

Wenn die Version von FreeCAD in den Repositorien jedoch alt ist, können die Abhängigkeiten die falschen sein, um eine aktuelle Version von FreeCAD zu erstellen. Bitte überprüfe daher, ob Du die folgenden Pakete installiert hast.

Diese Pakete sind unerlässlich für jede Art von Kompilierung, um erfolgreich zu sein:

  • build-essential, installiert die C- und C++-Compiler, die C-Entwicklungsbibliotheken und das Programm make.
  • cmake, ein unverzichtbares Werkzeug zur Konfiguration der Quelle von FreeCAD. Du kannst auch cmake-gui und cmake-curses-gui für eine grafische Option installieren.
  • libtool, essentielle Werkzeuge zur Erstellung von gemeinsamen Bibliotheken.
  • lsb-release, das Standard Basis Reporting Dienstprogramm ist normalerweise bereits in einem Debian System installiert und ermöglicht es Dir, programmgesteuert zwischen einer reinen Debian Installation und einer Variante wie Ubuntu oder Linux Mint zu unterscheiden. Entferne dieses Paket nicht, da viele andere Systempakete davon abhängen können.

Die Kompilierung von FreeCAD verwendet die Python Sprache, und sie wird auch zur Laufzeit als Skriptsprache verwendet. Wenn du eine Debian basierte Distribution verwendest, ist der Python Interpreter normalerweise bereits installiert.

  • python3
  • swig, das Werkzeug, das Schnittstellen zwischen C++ Code und Python schafft.

Bitte überprüfe, ob Du Python 3 installiert bist. Python 2 war 2019 veraltet, so dass die Neuentwicklung in FreeCAD mit dieser Sprachversion nicht getestet wird.

Die Verstärker Bibliotheken müssen installiert sein:

  • libboost-dev
  • libboost-date-time-dev
  • libboost-filesystem-dev
  • libboost-graph-dev
  • libboost-iostreams-dev
  • libboost-program-options-dev
  • libboost-python-dev
  • libboost-regex-dev
  • libboost-serialization-dev
  • libboost-signals-dev
  • libboost-thread-dev

Die Coin Bibliotheken müssen installiert sein:

  • libcoin80-dev, für Debian Jessie, Stretch, Ubuntu 16.04 bis 18.10, oder
  • für Debian Buster, Ubuntu 19.04 und neuer, sowie für Ubuntu 18.04/18.10 mit dem freecad-stable/freecad-daily PPAs zu Deinen Softwarequellen hinzugefügt.

Einige Bibliotheken, die sich mit Mathematik, dreieckigen Oberflächen, Sortieren, Netzen, Computer Vision, kartographischen Projektionen, 3D Visualisierung, dem X11-Window-System, XML-Parsing und dem Lesen von Zip-Dateien befassen:

  • libeigen3-dev
  • libgts-bin
  • libgts-dev
  • libkdtree++-dev
  • libmedc-dev
  • libopencv-dev or libcv-dev
  • libproj-dev
  • libvtk7-dev or libvtk6-dev
  • libx11-dev
  • libxerces-c-dev
  • libzipios++-dev

Python 2 und Qt4

Dies wird für neuere Installationen nicht empfohlen, da sowohl Python 2 als auch Qt4 veraltet sind.

Um FreeCAD für Debian Jessie, Stretch, Ubuntu 16.04 mit Python 2 und Qt4 zu kompilieren, installiere die folgenden Abhängigkeiten.

  • qt4-dev-tools
  • libqt4-dev
  • libqt4-opengl-dev
  • libqtwebkit-dev
  • libshiboken-dev
  • libpyside-dev
  • pyside-tools
  • python-dev
  • python-matplotlib
  • python-pivy
  • python-ply
  • python-pyside

Python 3 und Qt5

Um FreeCAD für Debian Buster, Ubuntu 19.04 und neueren, sowie Ubuntu 18.04/18.10 mit dem freecad-stable/freecad-daily PPAs zu deinen Softwarequellen hinzuzufügen, installiere die folgenden Abhängigkeiten.

  • qtbase5-dev
  • qttools5-dev
  • libqt5opengl5-dev
  • libqt5svg5-dev
  • libqt5webkit5-dev or qtwebengine5-dev
  • libqt5xmlpatterns5-dev
  • libqt5x11extras5-dev
  • libpyside2-dev
  • libshiboken2-dev
  • pyside2-tools
  • python3-dev
  • python3-matplotlib
  • python3-pivy
  • python3-ply
  • python3-pyside2.qtcore
  • python3-pyside2.qtgui
  • python3-pyside2.qtsvg
  • python3-pyside2.qtwidgets
  • python3-pyside2uic

OpenCascade Kernel

Der OpenCascade Kern ist die zentrale Grafikbibliothek zur Erstellung von 3D-Formen. Es existiert in einer offiziellen Version OCCT und einer Community-Version OCE. Die Community-Version wird nicht mehr empfohlen, da sie veraltet ist.

Für Debian Buster und Ubuntu 18.10 und neuerer, sowie Ubuntu 18.04 mit dem freecad-stable/freecad-daily PPAs zu deinen Softwarequellen hinzugefügt, installiere die offiziellen Pakete.

  • libocct*-dev
    • libocct-data-exchange-dev
    • libocct-draw-dev
    • libocct-foundation-dev
    • libocct-modeling-algorithms-dev
    • libocct-modeling-data-dev
    • libocct-ocaf-dev
    • libocct-visualization-dev
  • occt-draw

Für Debian Jessie, Stretch, Ubuntu 16.04 und neuer, installiere die Gemeinschafts Editionspakete.

  • liboce*-dev
    • liboce-foundation-dev
    • liboce-modeling-dev
    • liboce-ocaf-dev
    • liboce-ocaf-lite-dev
    • liboce-visualization-dev
  • oce-draw

Du kannst die Bibliotheken einzeln oder mit Hilfe der Sternchen-Erweiterung installieren. Ändere occ für oce, wenn Du die Gemeinschaftsbibliotheken installieren möchtest.

sudo apt install libocct*-dev

Optionale Pakete

Optional kannst du diese zusätzlichen Pakete auch installieren:

  • Template:Incode/de, damit Coin zusätzliche Bilddateiformate unterstützt.
  • Template:Incode/de und libcoin-doc (oder libcoin80-doc für ältere Systeme), wenn du beabsichtigst, Quellcode Dokumentation zu generieren.
  • Template:Incode/de, für 3D-Eingabegeräte Unterstützung, wie die 3D Verbindung "Space Navigator" oder "Space Pilot".
  • Template:Incode/de, wenn Du vorhast, Deine installierten Dateien im Paketmanager Deines Systems zu registrieren, damit Du sie später deinstallieren kannst.

Einziger Befehl für Python 3 und Qt5

Erfordert Pyside2, das in Debian Buster und dem freecad-stable/freecad-daily PPAs verfügbar ist.

sudo apt install cmake cmake-gui libboost-date-time-dev libboost-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-signals-dev libboost-thread-dev libcoin-dev libeigen3-dev libgts-bin libgts-dev libkdtree++-dev libmedc-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-visualization-dev libopencv-dev libproj-dev libpyside2-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libshiboken2-dev libspnav-dev libvtk7-dev libx11-dev libxerces-c-dev libzipios++-dev occt-draw pyside2-tools python3-dev python3-matplotlib python3-pivy python3-ply python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtsvg python3-pyside2.qtwidgets python3-pyside2uic qtbase5-dev qttools5-dev swig

Einziger Befehl für Python 2 und Qt4

Dies wird für neuere Installationen nicht empfohlen, da sowohl Python 2 als auch Qt4 veraltet sind.

sudo apt install cmake debhelper dh-exec dh-python libboost-date-time-dev libboost-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-signals-dev libboost-thread-dev libcoin80-dev libeigen3-dev libgts-bin libgts-dev libkdtree++-dev libmedc-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-visualization-dev libopencv-dev libproj-dev libpyside-dev libqt4-dev libqt4-opengl-dev libqtwebkit-dev libshiboken-dev libspnav-dev libvtk6-dev libx11-dev libxerces-c-dev libzipios++-dev lsb-release occt-draw pyside-tools python-dev python-matplotlib python-pivy python-ply swig

Ubuntu 16.04 Benutzer sehen bitte auch die Kompilierungsdiskussion im Forum: Compile on Linux (Kubuntu): CMake can't find VTK.

Fedora

Du benötigst die folgenden Pakete:

  • gcc-c++ (or possibly another C++ compiler?)
  • cmake
  • doxygen
  • swig
  • gettext
  • dos2unix
  • desktop-file-utils
  • libXmu-devel
  • freeimage-devel
  • mesa-libGLU-devel
  • OCE-devel
  • python
  • python-devel
  • python-pyside-devel
  • pyside-tools
  • boost-devel
  • tbb-devel
  • eigen3-devel
  • qt-devel
  • qt-webkit-devel
  • ode-devel
  • xerces-c
  • xerces-c-devel
  • opencv-devel
  • smesh-devel
  • coin3-devel

(wenn coin2 das neueste verfügbare für deine Version von Fedora ist, benutze Pakete von http://www.zultron.com/rpm-repo/)

  • soqt-devel
  • freetype
  • freetype-devel

Und optional:


Gentoo

Der einfachste Weg, um zu überprüfen, welche Pakete für die Kompilierung von FreeCAD benötigt werden, ist die Überprüfung über Portage:

emerge -pv freecad

Dies sollte eine schöne Liste von zusätzlichen Paketen liefern, die Du auf Deinem System installieren musst.

Wenn FreeCAD auf Portage nicht verfügbar ist, ist es auf dem waebbl overlay verfügbar. Der Issue Tracker auf dem Waebbl Overlay Github kann Dir helfen, einige Probleme zu lösen, auf die Du stoßen könntest. Das Overlay bietet freecad-9999, das Du kompilieren oder einfach verwenden kannst, um die Abhängigkeiten zu erhalten.

layman -a waebbl

openSUSE

Tumbleweed

Die folgenden Befehle installieren die Pakete, die für die Erstellung von FreeCAD mit Qt5 und Python 3 erforderlich sind.

zypper in --no-recommends -t pattern devel_C_C++ devel_qt5

zypper in libqt5-qtbase-devel libqt5-qtsvg-devel libqt5-qttools-devel boost-devel swig libboost_program_options-devel libboost_mpi_python3-devel libboost_system-devel libboost_program_options-devel libboost_regex-devel libboost_python3-devel libboost_thread-devel libboost_system-devel libboost_headers-devel libboost_graph-devel python3 python3-devel python3-matplotlib python3-matplotlib-qt5 python3-pyside2 python3-pyside2-devel python3-pivy gcc gcc-fortran cmake occt-devel libXi-devel opencv-devel libxerces-c-devel Coin-devel SoQt-devel freetype2-devel eigen3-devel libode6 vtk-devel libmed-devel hdf5-openmpi-devel openmpi2-devel netgen-devel freeglut-devel libspnav-devel f2c doxygen dos2unix glew-devel

Der folgende Befehl installiert den Qt Creator und den GNU Project Debugger.

zypper in libqt5-creator gdb

Wenn Pakete fehlen, dann kannst du die Datei Tumbleweed "FreeCAD.spec" auf dem Open Build Service überprüfen.

Überprüfe auch, ob es Patches gibt, die Du installieren musst (z.B.0001-find-openmpi2-include-files.patch).

Leap

Wenn es einen Unterschied zwischen den verfügbaren Paketen auf Tumbleweed und Leap gibt, dann kannst du die Datei Leap "FreeCAD.spec" auf dem Open Build Service lesen, um die benötigten Pakete zu ermitteln.

Arch Linux

Du benötigst die folgenden Bibliotheken aus den offiziellen Repositorien:

  • boost-libs
  • curl
  • desktop-file-utils
  • glew
  • hicolor-icon-theme
  • jsoncpp
  • libspnav
  • med
  • opencascade
  • shiboken2
  • xerces-c
  • pyside2
  • python-matplotlib
  • python-netcdf4
  • qt5-svg
  • qt5-webkit
  • qt5-webengine
  • boost
  • cmake
  • eigen
  • git
  • gcc-fortran
  • pyside2-tools
  • swig
  • qt5-tools
  • shared-mime-info

Stelle außerdem sicher, die AUR auf fehlende Pakete zu überprüfen, die sich derzeit nicht in den Repositorien befinden:

  • coin
  • python-pivy
  • med
sudo pacman -S boost-libs curl desktop-file-utils glew hicolor-icon-theme jsoncpp libspnav med opencascade shiboken2 xerces-c pyside2 python-matplotlib python-netcdf4 qt5-svg qt5-webkit qt5-webengine cmake eigen git gcc-fortran pyside2-tools swig qt5-tools shared-mime-info coin python-pivy med

Ältere und unkonventionelle Distributionen

Bei anderen Distributionen haben wir nur sehr wenig Feedback von Benutzern, so dass es schwieriger sein könnte, die benötigten Pakete zu finden.

Versuche zuerst, die erforderlichen Bibliotheken zu finden, die in third party libraries in deinem Paketmanager erwähnt werden. Beachte, dass einige von ihnen einen etwas anderen Paketnamen haben könnten; suche nach name, aber auch libname, name-dev, name-devel und ähnlichem. Wenn das nicht möglich ist, versuche, diese Bibliotheken selbst zu kompilieren.

FreeCAD benötigt die GNU g++ Kompiliererversion gleich oder über 3.0.0, da FreeCAD meist in C++ geschrieben ist. Während der Kompilierung werden einige Python Skripte ausgeführt, so dass der Python Interpreter ordnungsgemäß funktionieren muss. Um Probleme mit dem Linker zu vermeiden, ist es auch eine gute Idee, die Bibliothekspfade in der Variablen LD_LIBRARY_PATH oder in der Datei ld.so.conf zu haben. Dies geschieht bereits in modernen Linux-Distributionen, muss aber möglicherweise in älteren eingestellt werden.

Pivy

Pivy (Python Wrapper zu Coin3d) wird nicht benötigt, um FreeCAD zu bauen oder zu starten, aber es wird als Laufzeitabhängigkeit von der Draft Arbeitsbereich benötigt. Wenn Du diesen Arbeitsbereich nicht benutzt, benötigst Du Pivy nicht. Beachte jedoch, dass der Entwurfs-Arbeitsbereich intern von anderen Arbeitsbereich wie Arch Arbeitsbereich und BIM Arbeitsbereich verwendet wird, so dass Pivy installiert werden muss, um diese Arbeitsbereiche ebenfalls zu verwenden.

Bis November 2015 wird die im FreeCAD-Quellcode enthaltene veraltete Version von Pivy auf vielen Systemen nicht mehr kompiliert. Dies ist kein großes Problem, da Du normalerweise Pivy über den Paketmanager Deiner Distribution beziehen solltest; wenn Du Pivy nicht finden kannst, musst Du es möglicherweise selbst kompilieren, siehe Pivy compilation instructions

Fehlersuch Symbole

Um Abstürze in FreeCAD zu beheben, ist es sinnvoll, die Fehlersuche Symbole wichtiger Abhängigkeitsbibliotheken wie Qt zu haben. Versuche dazu, die Abhängigkeitspakete zu installieren, die mit -dbg, -dbgsym, -debuginfo oder ähnlichem enden, abhängig von Deiner Linux-Distribution.

Für Ubuntu musst Du möglicherweise spezielle Repositorien aktivieren, um diese Debug-Pakete mit dem Paketmanager anzeigen und installieren zu können. Weitere Informationen findest du unter Debug Symbolpakete.

Kompiliere FreeCAD

FreeCAD verwendet CMake als Hauptbuild-System, da es auf allen gängigen Betriebssystemen verfügbar ist. Die Kompilierung mit CMake ist in der Regel sehr einfach und erfolgt in zwei Schritten.

  1. CMake überprüft, ob alle benötigten Programme und Bibliotheken auf Ihrem System vorhanden sind und erzeugt eine Makefile, die für den zweiten Schritt konfiguriert ist. FreeCAD hat mehrere Konfigurationsoptionen zur Auswahl, aber es wird mit sinnvollen Standardeinstellungen ausgeliefert. Einige Alternativen werden im Folgenden beschrieben.
  2. Die Kompilierung selbst, die mit dem Programm make durchgeführt wird, das die FreeCAD-Ausführungsdateien erzeugt.

Da FreeCAD eine große Anwendung ist, kann die Kompilierung des gesamten Quellcodes je nach CPU und Anzahl der für die Kompilierung verwendeten CPU-Kerne zwischen 10 Minuten und einer Stunde dauern.

Du kannst den Code entweder in oder aus dem Quellverzeichnis erstellen. Aus dem Quelltext heraus Erstellung ist in der Regel die beste Option.

Erstellung aus dem Quelltext

Das Erstellen in einem separaten Ordner ist bequemer als das Erstellen in demselben Verzeichnis, in dem sich der Quellcode befindet, da CMake bei jeder Aktualisierung des Quellcodes intelligent feststellen kann, welche Dateien sich geändert haben, und nur das neu kompilieren kann, was benötigt wird. Dies ist sehr nützlich, wenn Sie verschiedene Git-Zweige testen, da Sie das Build-System nicht verwirren.

Um Out-of-Source zu erstellen, erstelle einfach ein Build-Verzeichnis, freecad-build, das sich von Deinem FreeCAD-Quellordner unterscheidet, freecad-source; dann von diesem Build-Verzeichnis-Punkt cmake zum richtigen Quellordner. Du kannst cmake-gui oder ccmake anstelle von cmake auch in den folgenden Anweisungen verwenden. Sobald cmake die Konfiguration der Umgebung abgeschlossen hat, verwende make, um die eigentliche Kompilierung zu starten.

mkdir freecad-build
cd freecad-build
cmake ../freecad-source
make -j$(nproc --ignore=2)

Die Option -j von make steuert, wie viele Aufträge (Dateien) parallel kompiliert werden. Das Programm nproc druckt die Anzahl der CPU-Kerne in Deinem System; indem Du es zusammen mit der Option -j verwendest, kannst Du wählen, ob Du so viele Dateien wie möglich verarbeiten möchtest, um die Gesamtübersetzung des Programms zu beschleunigen. Im obigen Beispiel verwendet es alle Kerne in Deinem System mit Ausnahme von zwei; dies hält Deinen Computer für andere Anwendungen reaktionsschnell, während die Kompilierung im Hintergrund abläuft. Die FreeCAD-Ausführdatei wird schließlich im Verzeichnis freecad-build/bin erscheinen. Siehe auch Kompilieren (Beschleunigen), um die Kompilierungsgeschwindigkeit zu verbessern.

In-source building

In-source builds sind in Ordnung, wenn du eine Version von FreeCAD schnell kompilieren möchtest und nicht vorhast, den Quellcode häufig zu aktualisieren. In diesem Fall kannst Du das kompilierte Programm und die Quelle einfach durch Löschen eines einzelnen Ordners entfernen.

Wechsle in das Quellverzeichnis und zeige cmake auf das aktuelle Verzeichnis (gekennzeichnet durch einen einzelnen Punkt):

cd freecad-source
cmake .
make -j$(nproc --ignore=2)

Die FreeCAD Ausführdatei befindet sich dann im freecad-source/bin Verzeichnis.

Wie Du dein Quellcode Verzeichnis reparieren kannst

Wenn du versehentlich eine Kompilierung im Quellcode Verzeichnis durchgeführt oder seltsame Dateien hinzugefügt hast und den Inhalt nur im ursprünglichen Quellcode wiederherstellen möchtest, kannst du die folgenden Schritte durchführen.

> .gitignore
git clean -df
git reset --hard HEAD

Die erste Zeile löscht die Datei .gitignore. Dadurch wird sichergestellt, dass die folgenden Clean und Reset Befehle sich auf alles im Verzeichnis auswirken und keine Elemente ignorieren, die den Ausdrücken in .gitignore entsprechen. Die zweite Zeile löscht alle Dateien und Verzeichnisse, die nicht vom git Repository verfolgt werden; dann setzt der letzte Befehl alle Änderungen an den überwachten Dateien zurück, einschließlich des ersten Befehls, der die Datei .gitignore gelöscht hat.

Wenn du das Quellverzeichnis nicht löschst, können nachfolgende Durchläufe von cmake keine neuen Optionen für das System erfassen, wenn sich der Code ändert.

Konfiguration

Durch die Übergabe verschiedener Optionen an cmake kannst Du ändern, wie FreeCAD kompiliert wird. Die Syntax ist wie folgt.

cmake -D <var>:<type>=<value> $SOURCE_DIR

Wobei $SOURCE_DIR das Verzeichnis ist, das den Quellcode enthält. Der <type> kann in den meisten Fällen weggelassen werden. Das Leerzeichen nach der Option -D kann ebenfalls weggelassen werden.

Zum Beispiel, um den Bau der FEM Arbeitsbereich zu vermeiden:

cmake -D BUILD_FEM:BOOL=OFF ../freecad-source
cmake -DBUILD_FEM=OFF ../freecad-source

Alle möglichen Variablen sind in der Datei CMakeLists.txt aufgelistet, die sich im Verzeichnis toplevel freecad-source befindet. Suche in dieser Datei nach dem Wort option, um zu den einstellbaren Variablen zu gelangen und deren Standardwerte zu sehen.


# ==============================================================================
# =================   Alle Optionen für den Bau Prozess    =================
# ==============================================================================

option(BUILD_FORCE_DIRECTORY "The build directory must be different to the source directory." OFF)
option(BUILD_GUI "Build FreeCAD Gui. Otherwise you have only the command line and the Python import module." ON)
option(FREECAD_USE_EXTERNAL_ZIPIOS "Use system installed zipios++ instead of the bundled." OFF)
option(FREECAD_USE_EXTERNAL_SMESH "Use system installed smesh instead of the bundled." OFF)
...

Alternatively, use the command cmake -LH to list the current configuration, and thus all variables that can be changed. You may also install and use cmake-gui to launch a graphical interface showing all the variables that can be modified. In the next sections we list some of the more relevant options that you may want to use.

Für einen Fehlersuch Bau

Erstelle einen Debug Build, um Abstürze in FreeCAD zu beheben. Beachte, dass mit diesem Build die Skizzierer Arbeitsbereich bei komplexen Skizzen sehr langsam wird.

cmake -DCMAKE_BUILD_TYPE=Debug ../freecad-source

Für ein Veröffentlichungs Bau

Erstelle einen Release Build, um Code zu testen, der nicht abstürzt. Ein Release Build wird viel schneller ausgeführt als ein Debug Build.

cmake -DCMAKE_BUILD_TYPE=Release ../freecad-source

Bauen gegen Python 3 und Qt5

FreeCAD erstellt standardmäßig für Python 2 und Qt4. Da diese beiden Pakete veraltet sind, ist es besser, für Python 3 und Qt5 zu bauen.

In einer modernen Linux Distribution müsse nur zwei Variablen angegeben werden, die die Verwendung von Qt5 und den Pfad zum Python Interpreter angeben.

cmake -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 ../freecad-source

Bauen für eine bestimmte Python Version

Wenn die standardmäßige python ausführbare Datei in Deinem System ein symbolischer Link zu Python 2 ist, wird cmake versuchen, FreeCAD für diese Version zu konfigurieren. Du kannst eine andere Version von Python wählen, indem du den Pfad zu einer bestimmten ausführbaren Datei angibst:

cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 ../freecad-source

Wenn das nicht funktioniert, musst Du möglicherweise zusätzliche Variablen definieren, die auf die gewünschten Python Bibliotheken und Include Verzeichnisse verweisen:

cmake -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
    -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m \
    -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so \
    -DPYTHON_PACKAGES_PATH=/usr/lib/python3.6/site-packages/ \
    ../freecad-source

Es ist möglich, mehrere unabhängige Versionen von Python im selben System zu haben, so dass die Speicherorte und Versionsnummern deiner Python Dateien von deiner jeweiligen Linux Distribution abhängen. Verwende python3 -V, um die Version von Python anzuzeigen, die Du gerade verwendest; nur die ersten beiden Zahlen sind notwendig; wenn das Ergebnis beispielsweise Python 3.6.8 ist, musst Du die Verzeichnisse angeben, die sich auf die Version 3.6 beziehen. Wenn Du die richtigen Verzeichnisse nicht kennst, versuche mit dem Befehl locate nach ihnen zu suchen.

locate python3.6

Du kannst python3 -m site in einem Terminal verwenden, um das Verzeichnis site-packages zu bestimmen, oder dist-packages für Debian Systeme.

Bauen mit Qt Creator gegen Python 3 und Qt5

Um im Qt Creator zu kompilieren, füge die entsprechenden Variablen unten in Template:MenuCommand/de hinzu. Gib erneut die korrekten Pfade und die Python Version an, die Du verwenden möchtest.

PYTHON_EXECUTABLE=/usr/bin/python3.7
PYTHON_INCLUDE_DIR=/usr/include/python3.7m
PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.7m.so
PYTHON_PACKAGES_PATH=/usr/lib/python3.7/site-packages
BUILD_QT5=ON

Gehe zu Template:MenuCommand/de und wähle FreeCADMain, um die grafische Version von FreeCAD zu kompilieren, oder FreeCADMainCMD, um nur die Befehlszeilenversion zu kompilieren.

Qt Designer Zusatzprogramm

Wenn du Qt Code für FreeCAD entwickeln möchtest, benötigst du die Qt Designer Zusatzprogramm, das alle benutzerdefinierten Widgets von FreeCAD bereitstellt.

Gehe in ein Hilfsverzeichnis des Quellcodes, den Run qmake mit der angegebenen Projektdatei, um eine Makefile zu erstellen; führe dann make aus, um das Zusatzprogramm zu kompilieren.

cd freecad-source/src/Tools/plugins/widget
qmake plugin.pro
make

Wenn du für Qt5 kompilierst, stelle sicher, dass die Binärdatei qmake diejenige für diese Version ist, so dass die resultierende Makefile die notwendigen Informationen für Qt5 enthält.

cd freecad-source/src/Tools/plugins/widget
$QT_DIR/bin/qmake plugin.pro
make

wobei $QT_DIR das Verzeichnis ist, das Qt Binärbibliotheken speichert, z.B. /usr/lib/x86_64-linux-gnu/qt5.

Die erstellte Bibliothek ist libFreeCAD_widgets.so, die nach $QT_DIR/plugins/designer kopiert werden muss.

sudo cp libFreeCAD_widgets.so $QT_DIR/plugins/designer

Externes oder internes Pivy

Bisher wurde eine Version von Pivy in den Quellcode von FreeCAD (intern) aufgenommen. Wenn Du die Kopie von Pivy (extern) Deines Systems verwenden möchtest, musst Du Folgendes verwenden -DFREECAD_USE_EXTERNAL_PIVY=1.

Using external Pivy became the default during development of FreeCAD 0.16, therefore this option does not need to be set manually anymore.

Doxygen documentation

If you have Doxygen installed you can build the source code documentation. See source documentation for instructions.

Additional documentation

The source code of FreeCAD is very extensive, and with CMake it's possible to configure many options. Learning to use CMake fully may be useful to choose the right options for your particular needs.

Making a debian package

If you plan to build a Debian package out of the sources you need to install certain packages first:

sudo apt install dh-make devscripts lintian

Go to the FreeCAD directory and call

debuild

Once the package is built, you can use lintian to check if the package contains errors

lintian freecad-package.deb

Updating the source code

The CMake system allows you to intelligently update the source code, and only recompile what has changed, making subsequent compilations faster.

Move to the location where the FreeCAD source code was first downloaded, and pull the new code:

cd freecad-source
git pull

Then move into the build directory where the code was compiled initially, and run cmake specifying the present directory (denoted by a dot); then trigger the re-compilation with make.

cd ../freecad-build
cmake .
make -j$(nproc --ignore=2)

Troubleshooting

For 64 bit systems

When building FreeCAD for 64-bit there is a known issue with the OpenCASCADE (OCCT) 64-bit package. To get FreeCAD running properly you might need to run the configure script and set additional CXXFLAGS:

./configure CXXFLAGS="-D_OCC64"

For Debian based systems this option is not needed when using the pre-built OpenCASCADE packages because these ones set the proper CXXFLAGS internally.

Automatic build scripts

Here is all what you need for a complete build of FreeCAD. It's a one-script-approach and works on a freshly installed Linux distribution. The commands will ask for the root password for installation of packages and new online repositories. These scripts should run on 32 and 64 bit versions. They are written for different versions, but are also likely to run on a later version with or without major changes.

If you have such a script for your preferred distribution, please discuss it on the FreeCAD forum so we can incorporate it.

Ubuntu

These scripts provide a reliable way to install the correct set of dependencies required to build and run FreeCAD on Ubuntu. They make use of the Ubuntu personal package archives (PPA), and should work on any version of Ubuntu targeted by the PPA. The freecad-daily PPA targets recent versions of Ubuntu, while the freecad-stable PPA targets officially supported versions of Ubuntu.

This script installs the daily compiled snapshot of FreeCAD and its dependencies. It adds the daily repository, gets the dependencies to build this version, and installs the required packages. Afterwards it proceeds to pull the source code into a particular directory, creates a build directory and changes into it, configures the compilation environment with cmake, and finally builds the entire program with make. Save the script to a file, make it executable, and run it, but don't use sudo; superuser privileges will be asked only for selected commands.

#!/bin/sh
sudo add-apt-repository --enable-source ppa:freecad-maintainers/freecad-daily && sudo apt-get update
sudo apt-get build-dep freecad-daily
sudo apt-get install freecad-daily

git clone https://github.com/FreeCAD/FreeCAD.git freecad-source
mkdir freecad-build
cd freecad-build
cmake -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 ../freecad-source
make -j$(nproc --ignore=2)

If you wish, you can uninstall the pre-compiled version of FreeCAD (freecad-daily) while leaving the dependencies in place, however, leaving this package installed will allow the package manager to keep its dependencies up to date as well; this is mostly useful if you intend to follow the development of FreeCAD, and constantly update and compile the sources from the Git repository.

The previous script assumes that you want to compile the latest version of FreeCAD, so you are using the "daily" repository to get the dependencies. However, you can instead get the build dependencies of the "stable" version for your current Ubuntu release. If this is the case, replace the top part of the previous script with the following instructions. For Ubuntu 12.04, omit --enable-source from the command.

#!/bin/sh
sudo add-apt-repository --enable-source ppa:freecad-maintainers/freecad-stable && sudo apt-get update
sudo apt-get build-dep freecad
sudo apt-get install freecad

Once you install the freecad package from the freecad-stable repository, it will supersede the FreeCAD executable that is available from the Universe Ubuntu repository. The executable will be named simply freecad, and not freecad-stable.

OpenSUSE 12.2

No external Repositories are needed to compile FreeCAD 0.13 with this release. However, there is an imcompatability with python3-devel which needs to be removed. FreeCAD can be compiled from GIT similar to in OpenSUSE 12.2

# install needed packages for development
sudo zypper install gcc cmake OpenCASCADE-devel libXerces-c-devel \
python-devel libqt4-devel python-qt4 Coin-devel SoQt-devel boost-devel \
libode-devel libQtWebKit-devel libeigen3-devel gcc-fortran git swig
 
# create new dir, and go into it
mkdir FreeCAD-Compiled 
cd FreeCAD-Compiled
 
# get the source
git clone https://github.com/FreeCAD/FreeCAD.git free-cad
 
# Now you will have subfolder in this location called free-cad. It contains the source
 
# make another dir for compilation, and go into it
mkdir FreeCAD-Build1
cd FreeCAD-Build1 
 
# build configuration 
cmake ../free-cad
 
# build FreeCAD
make
 
# test FreeCAD
cd bin
./FreeCAD -t 0

Since you are using git, next time you wish to compile you do not have to clone everything, just pull from git and compile once more

# go into free-cad dir created earlier
cd free-cad
 
# pull
git pull
 
# get back to previous dir
cd ..
 
# Now repeat last few steps from before.
 
# make another dir for compilation, and go into it
mkdir FreeCAD-Build2
cd FreeCAD-Build2
 
# build configuration 
cmake ../free-cad
 
# build FreeCAD
# Note: to speed up build use all CPU cores: make -j$(nproc)
make
 
# test FreeCAD
cd bin
./FreeCAD -t 0

Debian Squeeze

# get the needed tools and libs
sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \
libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev \
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \
libboost-serialization-dev libboost-signals-dev libboost-regex-dev \
libqt4-dev qt4-dev-tools python2.5-dev \
libsimage-dev libopencascade-dev \
libsoqt4-dev libode-dev subversion cmake libeigen2-dev python-pivy \
libtool autotools-dev automake gfortran
 
# checkout the latest source
git clone https://github.com/FreeCAD/FreeCAD.git freecad
 
# go to source dir
cd freecad
 
# build configuration 
cmake .
 
# build FreeCAD
# Note: to speed up build use all CPU cores: make -j$(nproc)
make
 
# test FreeCAD
cd bin
./FreeCAD -t 0

Fedora 27/28/29

Posted by user [PrzemoF] in the forum.

#!/bin/bash

ARCH=$(arch)

MAIN_DIR=FreeCAD
BUILD_DIR=build

#FEDORA_VERSION=27
#FEDORA_VERSION=28
FEDORA_VERSION=29

PACKAGES="gcc cmake gcc-c++ boost-devel zlib-devel swig eigen3 qt-devel \
shiboken shiboken-devel pyside-tools python-pyside python-pyside-devel xerces-c \
xerces-c-devel OCE-devel smesh graphviz python-pivy python-matplotlib tbb-devel \
 freeimage-devel Coin3 Coin3-devel med-devel vtk-devel"

FEDORA_29_PACKAGES="boost-python2 boost-python3 boost-python2-devel boost-python3-devel"

if [ "$FEDORA_VERSION" = "29" ]; then
    PACKAGES="$PACKAGES $FEDORA_29_PACKAGES"
fi

echo "Installing packages required to build FreeCAD"
sudo dnf -y install $PACKAGES
cd ~
mkdir $MAIN_DIR || { echo "~/$MAIN_DIR already exist. Quitting.."; exit; }
cd $MAIN_DIR
git clone https://github.com/FreeCAD/FreeCAD.git
mkdir $BUILD_DIR || { echo "~/$BUILD_DIR already exist. Quitting.."; exit; }
cd $BUILD_DIR
cmake ../FreeCAD 
make -j$(nproc)

Arch using AUR

Arch User Repository (AUR) is a collection user made recipes to build packages which are not officially supported by distribution maintainers / community. They are usually safe. You can see who maintain the package and for how long he did. It is recommended to check construction files. Also non open source software are available in this area even if maintained by the official owning company.

Prerequisite : git

Steps :

  1. Open a terminal. Optionally create a directory eg. mkdir git. Optionally change directory eg. cd git.
  2. Clone the AUR repository : git clone http://aur.archlinux.org/packages/freecad-git
  3. Enter AUR repository folder : cd freecad-git
  4. Compile using Arch makepkg : makepkg -s. The -s or --syncdeps flag will also install required dependencies.
  5. Install created package : makepkg --install or double click on the pkgname-pkgver.pkg.tar.xz inside your file browser.

To update FreeCAD to latest build just repeat from step 3. Update AUR repo when there is some breaking change in the recipe or new features using git checkout -f inside the folder.