Compile on Linux/Unix/de

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  und kompilieren mit.

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.



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

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

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, eine oder  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 } 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:

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:
 * , installiert die C- und C++-Compiler, die C-Entwicklungsbibliotheken und das Programm.
 * , ein unverzichtbares Werkzeug zur Konfiguration der Quelle von FreeCAD. Du kannst auch und  für eine grafische Option installieren.
 * , essentielle Werkzeuge zur Erstellung von gemeinsamen Bibliotheken.
 * , 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.
 * , das Werkzeug, das Schnittstellen zwischen C++ Code und Python schafft.
 * , 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:



Die Coin Bibliotheken müssen installiert sein:
 * , 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:


 * or
 * or
 * or
 * or
 * or
 * or
 * or
 * or

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.



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.


 * or
 * or
 * or
 * or
 * or

OpenCascade Kern
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.



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



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

Optionale Pakete
Optional kannst du diese zusätzlichen Pakete auch installieren:
 * }, damit Coin zusätzliche Bilddateiformate unterstützt.
 * } und } (oder } für ältere Systeme), wenn du beabsichtigst, Quellcode-Dokumentation zu generieren.
 * }, für 3D-Eingabegeräte] Unterstützung, wie die 3D-Verbindung "Space Navigator" oder "Space Pilot".
 * }, 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.

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.

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:


 * libspnav-devel (für 3Dconnexion-Geräte mit Unterstützung wie Space Navigator oder Space Pilot)
 * pivy ( https://bugzilla.redhat.com/show_bug.cgi?id=458975 Pivy ist nicht obligatorisch, wird aber für das Draft-Modul benötigt)

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

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

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

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

Ä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, aber auch , , 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 oder in der Datei  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 Workbench 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 und BIM verwendet wird, so dass Pivy installiert werden muss, um diese Arbeitsbereiche ebenfalls zu verwenden.

By November 2015 the obsolete version of Pivy included with the FreeCAD source code will no longer compile on many systems. This isn't a big problem as normally you should get Pivy from your distribution's package manager; if you cannot find Pivy, you may have to compile it yourself, see Pivy compilation instructions.

Debug symbols
In order to troubleshoot crashes in FreeCAD, it is useful to have the debug symbols of important dependency libraries such as Qt. For this, try installing the dependency packages that end with, , or similar, depending on your Linux distribution.

For Ubuntu, you may have to enable especial repositories to be able to see and install these debug packages with the package manager. See Debug Symbol Packages for more information.

Compile FreeCAD
FreeCAD uses CMake as its main build system, as it's available on all major operating systems. Compiling with CMake is usually very simple and happens in two steps.


 * 1) CMake checks that every needed program and library is present on your system, and generates a  that is configured for the second step. FreeCAD has several configuration options to choose from, but it comes with sensible defaults. Some alternatives are detailed below.
 * 2) The compilation itself, which is done with the program, which generates the FreeCAD executables.

Since FreeCAD is a large application, compiling the entire source code can take anywhere from 10 minutes to one hour, depending on your CPU and the number of CPU cores used for compilation.

You can build the code either in or out of the source directory. Out-of-source building is generally the best option.

Out-of-source build
Building in a separate folder is more convenient than building in the same directory where the source code is located as every time you update the source code CMake can intelligently determine which files have changed, and recompile only what is needed. This is very useful when testing different Git branches as you don't confuse the build system.

To build out-of-source, simply create a build directory,, distinct from your FreeCAD source folder, ; then from this build directory point to the right source folder. You can use or  instead of  in the instructions below as well. Once finishes configuring the environment, use  to start the actual compilation.

The option of  controls how many jobs (files) are compiled in parallel. The program prints the number of CPU cores in your system; by using it together with the  option you can choose to process as many files as you have cores, in order to speed up overall compilation of the program. In the example above, it will use all cores in your system except two; this will keep your computer responsive for other uses while compilation proceeds in the background. The FreeCAD executable will eventually appear in the directory. See also Compiling (speeding up) to improve compilation speed.

In-source building
In-source builds are fine if you want to compile a version of FreeCAD quickly, and don't intend to update the source code often. In this case, you can remove the compiled program and the source just by deleting a single folder.

Change to the source directory, and point to the present directory (denoted by a single point):

The FreeCAD executable will then reside in the directory.

How to repair your source code directory
If you accidentally performed a compilation inside the source code directory, or added strange files, and would like to restore the contents to only the original source code, you can perform the following steps.

The first line clears the file. This ensures that the following clean and reset commands will affect everything in the directory and will not ignore items matching the expressions in. The second line deletes all files and directories that are not tracked by the git repository; then the last command will reset any changes to tracked files, including the first command which cleared the file.

If you do not clear the source directory, subsequent runs of may not capture new options to the system if the code changes.

Configuration
By passing different options to, you can change how FreeCAD is compiled. The syntax is as follows.

Where is the directory that contains the source code. The may be omitted in most cases. The space after the option may also be omitted.

For example, to avoid building the FEM Workbench:

All possible variables are listed in the file, located in the toplevel  directory. In this file, search for the word to get to the variables that can be set, and see their default values.


 * 1) =================   All the options for the build process    =================
 * 1) =================   All the options for the build process    =================

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 to list the current configuration, and thus all variables that can be changed. You may also install and use 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.

For a Debug build
Create a build to troubleshoot crashes in FreeCAD. Beware that with this build the Sketcher becomes very slow with complex sketches.

For a Release build
Create a build to test code that doesn't crash. A build will run much faster than a  build.

Building against Python 3 and Qt5
By default, FreeCAD builds for Python 2 and Qt4. Since these two packages are obsolete, it is better to build for Python 3 and Qt5.

In a modern Linux distribution you only need to provide two variables specifying the use of Qt5, and the path to the Python interpreter.

Building for a specific Python version
If the default executable in your system is a symbolic link to Python 2,  will try to configure FreeCAD for this version. You can choose another version of Python by giving the path to a specific executable:

If that doesn't work, you may have to define additional variables pointing to the desired Python libraries and include directories:

It is possible to have several independent versions of Python in the same system, so the locations and version numbers of your Python files will depend on your particular Linux distribution. Use to display the version of Python that you are using currently; only the first two numbers are necessary; for example, if the result is, you need to specify the directories that relate to the 3.6 version. If you don't know the right directories, try searching for them with the command.

You may use in a terminal to determine the  directory, or  for Debian systems.

Building with Qt Creator against Python 3 and Qt5
To compile in Qt Creator add the appropriate variables to the bottom of. Again, specify the correct paths and Python version that you want to use.

Go to and choose  to compile the graphical version of FreeCAD, or  to compile only the command line version.

Qt designer plugin
If you want to develop Qt code for FreeCAD, you'll need the Qt Designer plugin that provides all custom widgets of FreeCAD.

Go into an auxiliary directory of the source code, the run with the indicated project file to create a ; then run  to compile the plugin.

If you are compiling for Qt5, make sure the binary is the one for this version, so that the resulting  contains the necessary information for Qt5.

where is the directory that stores Qt binary libraries, for example,.

The library created is, which needs to be copied to.

External or internal 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.

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.
 * CMake Reference Documentation by Kitware.
 * How to Build a CMake-Based Project (blog) by Preshing on programming.
 * Learn CMake's Scripting Language in 15 Minutes (blog) by Preshing on programming.

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

Go to the FreeCAD directory and call

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

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:

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

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 script and set additional :

For Debian based systems this option is not needed when using the pre-built OpenCASCADE packages because these ones set the proper 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, and finally builds the entire program with. Save the script to a file, make it executable, and run it, but don't use ; superuser privileges will be asked only for selected commands.

If you wish, you can uninstall the pre-compiled version of FreeCAD 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 from the command.

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

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

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

Fedora 27/28/29
Posted by user [PrzemoF] in the forum.

{ echo "~/$MAIN_DIR already exist. Quitting.."; exit; } cd $MAIN_DIR git clone https://github.com/FreeCAD/FreeCAD.git mkdir $BUILD_DIR

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. . Optionally change directory eg..
 * 2) Clone the AUR repository :
 * 3) Enter AUR repository folder :
 * 4) Compile using Arch makepkg : . The -s or --syncdeps flag will also install required dependencies.
 * 5) Install created package : 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 inside the folder.