Compile on Linux/pl

Informacje ogólne
W ostatnich dystrybucjach Linuksa FreeCAD jest ogólnie łatwy do zbudowania, ponieważ wszystkie zależności są zwykle dostarczane przez menedżera pakietów. Zasadniczo obejmuje 3 kroki:
 * 1) Pobierz kod źródłowy FreeCAD.
 * 2) Pobierz zależności lub pakiety, od których zależy FreeCAD.
 * 3) Skonfiguruj za pomocą  i skompiluj za pomocą.

Poniżej znajdziesz szczegółowe wyjaśnienia całego procesu, niektóre skrypty do kompilacji oraz szczegóły, które możesz napotkać. Jeśli znajdziesz w poniższym tekście coś błędnego lub nieaktualnego (dystrybucje Linuksa często się zmieniają), lub jeśli używasz dystrybucji, której nie ma na liście, przedyskutuj ten problem na forum i pomóż nam go poprawić.



Git
Najlepszym sposobem uzyskania kodu jest sklonowanie repozytorium tylko do odczytu Git. Do tego celu potrzebny jest program, który można łatwo zainstalować w większości dystrybucji Linuksa. Można go również uzyskać z oficjalnej strony.

Program Git można zainstalować za pomocą następującego polecenia:

Poniższe polecenie umieści kopię najnowszej wersji kodu źródłowego programu FreeCAD w nowym katalogu o nazwie.

Więcej informacji na temat używania środowiska Git i wnoszenia kodu do projektu można znaleźć na stronie Zarządzanie kodem źródłowym.

Archiwum źródeł
Alternatywnie można pobrać źródło w postaci archiwów, pliku lub, a następnie rozpakować je w wybranym katalogu.

Pobranie zależności
Aby skompilować FreeCAD musisz zainstalować wymagane zależności wymienione w dokumencie biblioteki zewnętrzne. Pakiety, które zawierają te zależności są wymienione poniżej dla różnych dystrybucji Linuksa. Proszę zauważyć, że nazwy i dostępność bibliotek zależą od konkretnej dystrybucji; jeśli dystrybucja jest stara, niektóre pakiety mogą być niedostępne lub mieć inną nazwę. W takim przypadku należy zajrzeć do sekcji starsze i niekonwencjonalne dystrybucje poniżej.

Gdy masz już zainstalowane wszystkie zależności, przejdź do sekcji kompilacja programu.

Należy pamiętać, że kod źródłowy programu FreeCAD ma rozmiar około 500 MB; może on być trzykrotnie większy, jeśli sklonujesz repozytorium Git z całą historią modyfikacji. Pobranie wszystkich zależności może wymagać pobrania 500 MB lub więcej nowych plików. Kiedy te pliki zostaną rozpakowane, mogą wymagać 1500 MB lub więcej miejsca. Należy również pamiętać, że proces kompilacji może wygenerować do 1500 MB dodatkowych plików, ponieważ system kopiuje i modyfikuje cały kod źródłowy. Dlatego przed przystąpieniem do kompilacji należy upewnić się, że na dysku twardym jest wystarczająco dużo wolnego miejsca, co najmniej 4 GB.

Debian oraz Ubuntu
W systemach opartych na Debianie (Ubuntu, Mint itd.) dość łatwo jest zainstalować wszystkie potrzebne zależności. Większość bibliotek jest dostępna za pośrednictwem lub menedżera pakietów Synaptic.

Jeśli zainstalowałeś już FreeCAD z oficjalnych repozytoriów, możesz zainstalować jego zależności za pomocą tej jednej linijki kodu w terminalu:

Jednakże, jeśli wersja FreeCAD w repozytoriach jest stara, zależności mogą być niewłaściwe do skompilowania najnowszej wersji programu FreeCAD. Dlatego należy sprawdzić, czy zostały zainstalowane następujące pakiety.

Pakiety te są niezbędne do pomyślnego przeprowadzenia jakiejkolwiek kompilacji:
 * , instaluje kompilatory C i C++, biblioteki programistyczne C oraz program.
 * , niezbędne narzędzie do konfiguracji źródeł programu FreeCAD. Możesz również zainstalować i, aby uzyskać opcję graficzną.
 * , podstawowe narzędzia do tworzenia bibliotek współdzielonych.
 * , standardowe narzędzie do raportowania bazy danych jest zwykle już zainstalowane w systemie Debian i pozwala na programowe rozróżnienie między czystą instalacją Debiana a jego odmianą, taką jak Ubuntu czy Linux Mint. Nie należy usuwać tego pakietu, ponieważ wiele innych pakietów systemowych może od niego zależeć.

Kompilacja programu FreeCAD wykorzystuje język Python, jest on także używany w czasie pracy jako język skryptowy. Jeśli używasz dystrybucji opartej na Debianie, interpreter Python jest zazwyczaj już zainstalowany.
 * , narzędzie, które tworzy interfejsy między kodem C++ a Python.
 * , narzędzie, które tworzy interfejsy między kodem C++ a Python.

Sprawdź, czy masz zainstalowany Python 3. Python 2 został wycofany z użycia w 2019 r, więc nowe środowiska w programie FreeCAD nie są testowane z tą wersją języka.

Konieczne jest zainstalowanie bibliotek Boost:



Konieczne jest zainstalowanie bibliotek Coin:
 * , dla Debian Jessie, Stretch, Ubuntu 16.04 do 18.10, lub
 * , dla Debiana Buster, Ubuntu 19.04 i nowszych, a także dla Ubuntu 18.04/18.10 z freecad-stable/freecad-daily PPAs dodane do źródeł oprogramowania.

Kilka bibliotek zajmujących się matematyką, powierzchniami triangulowanymi, sortowaniem, siatkami, obrazowaniem komputerowym, projekcjami kartograficznymi, wizualizacją 3D, systemem okien X11, parsowaniem XML i odczytywaniem plików Zip:


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

Python 2 oraz Qt4
Nie jest to zalecane w przypadku nowszych instalacji, ponieważ zarówno Python 2, jak i Qt4 są przestarzałe. Od wersji 0.20 FreeCAD nie obsługuje ich już.

Aby skompilować FreeCAD dla Debiana Jessie, Stretch, Ubuntu 16.04, używając Pythona 2 i Qt4, należy zainstalować następujące zależności.



Python 3 oraz Qt5
Aby skompilować FreeCAD dla Debiana Buster, Ubuntu 19.04 i nowszych oraz Ubuntu 18.04/18.10 z freecad-stable/freecad-daily PPAs dodanymi do źródeł oprogramowania, zainstaluj następujące zależności.


 * (if compiling 0.20 on a machine that still has Qt4)
 * or
 * (if compiling 0.20 on a machine that still has Qt4)
 * or
 * or
 * or

kernel OpenCascade
The OpenCascade kernel is the core graphics library to create 3D shapes. It exists in an official version OCCT, and a community version OCE. The community version is no longer recommended, as it's outdated.

For Debian Buster and Ubuntu 18.10 and newer, as well as Ubuntu 18.04 with the freecad-stable/freecad-daily PPAs added to your software sources, install the official packages.



For Debian Jessie, Stretch, Ubuntu 16.04 and newer, install the community edition packages.



You may install the libraries individually, or using asterisk expansion. Change for  if you want to install the community libraries.

Pakiety opcjonalne
Opcjonalnie można również zainstalować te dodatkowe pakiety:
 * , aby Coin obsługiwał dodatkowe formaty plików graficznych.
 * i (lub  dla starszych systemów), jeśli chcesz generować dokumentację kodu źródłowego.
 * , dla obsługi maniopulatorów przestrzennych, takich jak "Space Navigator" lub "Space Pilot" firmy 3Dconnexion.
 * , jeśli chcesz zarejestrować zainstalowane pliki w systemowym menedżerze pakietów, aby móc je później odinstalować.
 * , aby Menadżer dodatków wyświetlał natywnie pliki README.md w formacie Markdown.
 * , aby Menadżer dodatków używał repozytorium Git do pobierania i aktualizowania środowisk pracy i makrodefinicji.

Single command for Python 3 and Qt5
Requires Pyside2 available in Debian buster and the freecad-stable/freecad-daily PPAs.

NOTE: On some versions of Ubuntu and some versions of Qt, you will get an error that python3-pyside2uic cannot be found -- on those systems you can safely omit it. On Ubuntu 20.04 you will need to add. More information can be found in this forum discussion.

Single command for Python 2 and Qt4
This is not recommended for newer installations as both Python 2 and Qt4 are obsolete.

Ubuntu 16.04 users please see also the compilation discussion in the forum: Compile on Linux (Kubuntu): CMake can't find VTK.

Raspberry Pi
Wykonaj te same kroki, co w przypadku dystrybucji Debian i Ubuntu.

Zgłaszane są problemy podczas próby kompilacji w systemie Raspbian przy użyciu Pythona 3 i Qt5, ale kombinacja Pythona 3 i Qt4 wydaje się działać ze starszymi wersjami programu FreeCAD.

W przypadku nowszych wersji programu FreeCAD kompilacja z Py3/Qt5 powiedzie się, jeśli zainstalowanym systemem operacyjnym jest Ubuntu 20.04.

Z powodu różnych problemów z Qt, w tej wersji nie będzie można znaleźć normalnych narzędzi PySide.

W tym przypadku możemy zainstalować pakiety z PyQt i utworzyć dowiązania symboliczne do potrzebnych narzędzi.

Teraz można przystąpić do kompilacji.

Opcja w poleceniu  nie powinna mieć parametru powyżej 3, ponieważ Raspberry Pi ma ograniczoną pamięć. Kompilacja zajmie kilka godzin, więc lepiej zrobić to w nocy.

Więcej informacji, FreeCAD i Raspberry Pi 4.

Fedora
Potrzebne są następujące pakiety:


 * 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
 * qt5-qtxmlpatterns
 * qt5-qttools-static
 * ode-devel
 * xerces-c
 * xerces-c-devel
 * opencv-devel
 * smesh-devel
 * Coin3
 * Coin3-devel

(kwiecień 2021, Coin4 i Coin4-devel są dostępne) (jeśli coin2 jest najnowszą dostępną wersją dla twojej wersji Fedory, użyj pakietów z http://www.zultron.com/rpm-repo/)


 * SoQt-devel
 * freetype
 * freetype-devel
 * vtk
 * med
 * med-devel

I opcjonalnie:


 * libspnav-devel (do obsługi urządzeń 3Dconnexion, takich jak Space Navigator czy Space Pilot),
 * python3-pivy (https://bugzilla.redhat.com/show_bug.cgi?id=458975 Pivy nie jest obowiązkowy, ale jest wymagany dla środowiska Rysunek Roboczy),
 * python3-markdown (aby Menadżer dodatków natywny markdown),
 * python3-git (aby Menadżer dodatków używał repozytorium Git do sprawdzania i aktualizowania środowisk pracy i makrodefinicji).

Gentoo
Najprostszym sposobem sprawdzenia, które pakiety są potrzebne do skompilowania programu FreeCAD, jest sprawdzenie ich przez portage:

emerge -pv freecad

Powinno to spowodować wyświetlenie listy dodatkowych pakietów, które należy zainstalować w systemie.

Gdy FreeCAD nie jest dostępny przez portage, jest dostępny na repozytorium waebbl overlay. Narzędzie do śledzenia problemów na nakładce waebbl Github może pomóc w rozwiązaniu niektórych z nich. Nakładka zapewnia szeroki licznik freecad-9999, dzięki temu możesz wybrać potrzebny numer do skompilowania lub po prostu użyć do pobrania zależności.

layman -a waebbl

Tumbleweed
The following commands will install the packages required for building FreeCAD with Qt5 and Python 3.

The following command will install Qt Creator and the GNU Project Debugger.

If any packages are missing, then you can check the Tumbleweed "FreeCAD.spec" file on the Open Build Service.

Also, check to see if there are any patches you need to apply (such as 0001-find-openmpi2-include-files.patch).

Leap
Jeśli istnieje różnica między pakietami dostępnymi w programach Tumbleweed i Leap, można przeczytać plik "FreeCAD.spec" programu Leap w Open Build Service, aby określić wymagane pakiety.

Zobacz poradnik piano_jonas unnofficial "Compile On openSUSE".

Arch Linux
Potrzebne będą następujące biblioteki z oficjalnych repozytoriów:


 * boost
 * curl
 * desktop-file-utils
 * glew
 * hicolor-icon-theme
 * jsoncpp
 * libspnav
 * 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

Dystrybucje starsze i niekonwencjonalne
Dla innych dystrybucji mamy bardzo mało informacji zwrotnych od użytkowników, więc znalezienie potrzebnych pakietów może być trudniejsze.

Spróbuj najpierw znaleźć wymagane biblioteki wymienione w bibliotekach zewnętrznych w swoim menedżerze pakietów. Zwróć uwagę, że niektóre z nich mogą mieć nieco inną nazwę pakietu. Szukaj według, ale także , , i podobnych. Jeśli to nie jest możliwe, spróbuj skompilować te biblioteki samodzielnie.

FreeCAD wymaga kompilatora GNU g++ w wersji nie mniejszej niż 3.0.0, ponieważ FreeCAD jest napisany głównie w języku C++. Podczas kompilacji wykonywane są niektóre skrypty Pythona, więc interpreter Python musi działać prawidłowo. Aby uniknąć problemów z linkerem, dobrze jest umieścić ścieżki dostępu do bibliotek w zmiennej lub w pliku. W nowoczesnych dystrybucjach Linuksa jest to już zrobione, ale w starszych może być konieczne ustawienie tej zmiennej

Pivy
Pivy (pakiet Pythona do Coin3d) nie jest potrzebny do zbudowania programu FreeCAD ani do jego uruchomienia, ale jest wymagany jako zależność runtime przez Rysunek Roboczy. Jeśli nie zamierzasz używać tego środowiska pracy, nie będziesz potrzebował Pivy. Należy jednak pamiętać, że środowisko pracy Rysunek Roboczy jest używane wewnętrznie przez inne środowiska pracy, takie jak Architektura i BIM, więc Pivy jest wymagane do korzystania z tych narzędzi.

W listopadzie 2015 roku przestarzała wersja Pivy dołączona do kodu źródłowego FreeCAD nie będzie już kompilowana na wielu systemach. Nie jest to duży problem, ponieważ zazwyczaj powinieneś pobrać Pivy z menedżera pakietów swojej dystrybucji; jeśli nie możesz znaleźć Pivy, być może będziesz musiał skompilować go samodzielnie, zobacz Instrukcje kompilacji Pivy.

Symbole debugowania
W celu rozwiązywania problemów z awariami w programie FreeCAD, warto wprowadzić symbole debugowania ważnych bibliotek zależnych, takich jak Qt. W tym celu spróbuj zainstalować pakiety zależności, których nazwy kończą się na, , lub podobne, w zależności od dystrybucji Linuksa.

Dla Ubuntu, może być konieczne włączenie specjalnych repozytoriów, aby móc zobaczyć i zainstalować te pakiety debugowania za pomocą menedżera pakietów. Zapoznaj się ze stroną Debug Symbol Packages, aby uzyskać więcej informacji.

Kompilacja programu
FreeCAD używa CMake jako głównego systemu kompilacji, ponieważ jest on dostępny we wszystkich głównych systemach operacyjnych. Kompilacja za pomocą CMake jest zazwyczaj bardzo prosta i przebiega w dwóch krokach.


 * 1) CMake sprawdza, czy wszystkie potrzebne programy i biblioteki są obecne w systemie, a następnie generuje plik, który jest skonfigurowany do drugiego kroku. FreeCAD ma kilka opcji konfiguracyjnych do wyboru, ale posiada rozsądne ustawienia domyślne. Poniżej opisano kilka alternatywnych rozwiązań.
 * 2) Sama kompilacja, która jest wykonywana przez program, który generuje pliki wykonywalne programu FreeCAD.

Ponieważ FreeCAD jest dużą aplikacją, kompilacja całego kodu źródłowego może zająć od 10 minut do godziny, w zależności od wydajności Twojego procesora i liczby rdzeni procesora użytych do kompilacji.

Kod można budować zarówno w katalogu źródłowym, jak i poza nim. Generalnie najlepszym rozwiązaniem jest budowanie poza katalogiem źródłowym.

Kompilacja poza źródłami
Budowanie w osobnym folderze jest wygodniejsze niż budowanie w tym samym katalogu, w którym znajduje się kod źródłowy, ponieważ za każdym razem, gdy aktualizujesz kod źródłowy, CMake może inteligentnie określić, które pliki uległy zmianie, i przekompilować tylko to, co jest potrzebne. Jest to bardzo przydatne podczas testowania różnych gałęzi Git, ponieważ nie trzeba dezorientować systemu kompilacji.

Aby budować poza źródłem, po prostu utwórz katalog budowania,, oddzielny od folderu źródłowego FreeCAD,. Następnie z tego katalogu wskaż właściwy folder źródłowy. W poniższych instrukcjach możesz również użyć lub  zamiast. Gdy zakończy konfigurowanie środowiska, użyj, aby rozpocząć właściwą kompilację.

Uwaga: jeśli kompilujesz gałąź wydania 0.19, musisz jawnie określić, że kompilujesz z użyciem pakietów Qt5 i Python 3 -- zamień powyższe polecenie cMake na:

Opcja programu  kontroluje, ile zadań (plików) jest kompilowanych równolegle. Program wypisuje liczbę rdzeni procesora w twoim systemie. Używając go razem z opcją możesz wybrać przetwarzanie tylu plików, ile masz rdzeni, aby przyspieszyć ogólną kompilację programu. W powyższym przykładzie, użyje on wszystkich rdzeni w systemie z wyjątkiem dwóch. Dzięki temu Twój komputer będzie mógł być wykorzystany do innych celów, podczas gdy kompilacja będzie przebiegać w tle. Plik wykonywalny programu FreeCAD pojawi się ostatecznie w katalogu. Zobacz także stronę Kompilacja (przyspieszamy), aby poprawić szybkość kompilacji.

Rozwiązywanie problemów z cmake
Jeśli już wcześniej wykonałeś kompilację poza źródłem i utknąłeś na zależności, która nie została rozpoznana lub nie można jej rozwiązać, spróbuj wykonać następujące czynności:


 * Usuń zawartość katalogu kompilacji przed ponownym uruchomieniem cmake. FreeCAD jest szybko zmieniającym się celem, możesz natknąć się na zbuforowane informacje cmake, które wskazują na starszą wersję niż ta, której może użyć nowy serwer repozytorium. Wyczyszczenie pamięci podręcznej może pozwolić cmake odzyskać i rozpoznać wersję, której rzeczywiście potrzebujesz.


 * Jeśli skarży się na brak konkretnego pliku, użyj narzędzia takiego jak  lub jego odpowiednika w innych systemach pakietów, aby dowiedzieć się, do jakiego pakietu należy ten plik i zainstalować go. Pamiętaj, że prawdopodobnie będziesz potrzebował wersji  pakietu, która zawiera pliki nagłówkowe lub konfiguracyjne wymagane do korzystania z pakietu przez FreeCAD.

Kompilacja z GNU libc 2.34 i nowszymi
GNU libc 2.34 wprowadza zmianę w bibliotece, która może spowodować, że kompilacja w niektórych systemach Linux nie powiedzie się powodując następujący błąd:

Aby temu zaradzić, należy ręcznie utworzyć dowiązanie symboliczne z (pustego teraz) systemowego libdl.so.* do miejsca, w którym kompilator mówi, że szuka tego pliku. Na przykład (jeśli faktycznie zainstalowaną kopią libdl.so w systemie jest /usr/lib/x86_64-linux-gnu/libdl.so.2):

Dostosuj to polecenie do struktury swojego systemu, wyszukując libdl.so* i umieszczając je w odpowiedniej lokalizacji.

Kompilacja na bazie źródeł
Kompilacje źródłowe są dobre, jeśli chcesz szybko skompilować wersję FreeCAD i nie zamierzasz często aktualizować kodu źródłowego. W takim przypadku możesz usunąć skompilowany program i źródło, usuwając tylko jeden folder.

Zmień katalog na źródłowy i wskaż na obecny katalog (oznaczony pojedynczym punktem):

Plik wykonywalny programu FreeCAD będzie wtedy znajdował się w katalogu.

Jak naprawić swój katalog z kodem źródłowym
Jeśli przypadkowo wykonałeś kompilację wewnątrz katalogu z kodem źródłowym lub dodałeś niepotrzebne pliki i chcesz przywrócić jego zawartość tylko do oryginalnego kodu źródłowego, możesz wykonać następujące czynności.

Pierwszy wiersz usuwa zawartość pliku. Zapewnia to, że kolejne polecenia clean i reset będą dotyczyły wszystkiego w katalogu i nie będą ignorowały elementów pasujących do wyrażeń z. Druga linia usuwa wszystkie pliki i katalogi, które nie są śledzone przez repozytorium git. Następnie ostatnia komenda resetuje wszelkie zmiany w śledzonych plikach, w tym pierwszą komendę, która wyczyściła plik.

Jeśli nie wyczyścisz katalogu źródłowego, kolejne uruchomienia mogą nie wychwycić nowych opcji systemu, jeśli kod ulegnie zmianie.

Konfiguracja
Przekazując różne opcje do, możesz zmienić sposób, w jaki FreeCAD jest kompilowany. Składnia jest następująca.

Gdzie jest katalogiem zawierającym kod źródłowy. Opcję można w większości przypadków pominąć. Można też pominąć spację po opcji.

Na przykład, aby uniknąć kompilacji środowiska MES:

Wszystkie możliwe zmienne są wymienione w pliku, znajdującym się w katalogu. W pliku tym należy wyszukać słowo, aby przejść do zmiennych, które można ustawić, i przejrzeć ich wartości domyślne.


 * 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) ...

Alternatywnie można użyć polecenia, aby wyświetlić listę bieżącej konfiguracji, a więc wszystkich zmiennych, które można zmienić. Można również zainstalować i użyć, aby uruchomić interfejs graficzny pokazujący wszystkie zmienne, które można modyfikować. W następnych sekcjach wymienimy niektóre z ważniejszych opcji, których możesz chcieć użyć.

Do debugowania kompilacji
Utwórz kompilację do rozwiązywania problemów z awariami w programie FreeCAD. Zwróć uwagę, że w tej wersji kompilacji środowisko pracy Szkicownik przy złożonych szkicach staje się bardzo powolne.

For a Release build
Utwórz kompilację, aby przetestować kod, który nie ulega awarii. Kompilacja będzie działać znacznie szybciej niż kompilacja.

Kompilacja w oparciu o Python 3 i Qt5
Domyślnie FreeCAD 0.19 i wcześniejsze kompilowane są z Pythonem 2 i Qt4. Ponieważ te dwa pakiety są przestarzałe, lepiej jest budować przy użyciu Pythona 3 i Qt5. Wsparcie dla Python 2 i Qt4 zostało usunięte w FreeCAD 0.20 i nie jest konieczne wyraźne włączanie Qt5 i Python 3, jeśli kompilujesz najnowsze wersje rozwojowe.

W nowoczesnej dystrybucji Linuksa wystarczy podać dwie zmienne określające użycie Qt5 oraz ścieżkę do interpretera Python.

dla wersji 0.19:

dla wersji 0.20_dev:

Note that when switching between 0.19 and the 0.20 builds, it may be necessary to delete CMakeCache.txt prior to running cmake.

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
1. Launch Qt Creator.

2. Click on.

3. Navigate to the directory where the source code is,, and choose the topmost file.

4. By selecting the file, it will automatically run on it, but it may fail if the appropriate options aren't correctly set.

5. Go to. Set the appropriate build directory,.

6. Set the appropriate variables in the Key-Value dialog, of types and.

7. If the variables do not load the project correctly, you may have to go to. Then press, and add the appropriate configuration as described above. You may have to add more variables about the Python paths, if the system Python is not found.

7.1. Press, then.

7.2. Make sure the rest of the options are correctly set, for example, should be a present version installed in the system, like.

Press, then to close the configuration.

The program should run automatically again, and it should fill the entire Key-Value dialog with all the variables that can be configured.

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

9. Finally, go to the menu. If this is a new compilation, it should take several minutes, inclusive hours, depending on the number of processors that you have available.

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.

Skrypty automatycznej kompilacji
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
No external Repositories are needed to compile FreeCAD. However, there is an imcompatability with python3-devel which needs to be removed. FreeCAD can be compiled from GIT

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.