Compile on Linux/it

Panoramica
Nelle distribuzioni Linux recenti FreeCAD si compila facilmente, dato che di solito tutte le dipendenze sono fornite dal gestore di pacchetti. Fondamentalmente si tratta di eseguire 3 passaggi:
 * 1) Ottenere il codice sorgente di FreeCAD
 * 2) Ottenere le dipendenze (i pacchetti da cui dipende FreeCAD)
 * 3) Configurare con  e compilare con

Qui, di seguito, troverete le spiegazioni dettagliate di tutto il processo, delle particolarità che si possono incontrare e alcuni script di compilazione automatica. Se trovate qualcosa di sbagliato o di non aggiornato nel testo successivo (le distribuzioni Linux cambiano spesso), o se utilizzate una distribuzione che non è elencata, discutete il problema nel forum, e aiutateci a correggerlo.



Git
Il modo migliore per ottenere il codice è clonare il repository Git. Per questo è necessario il programma che può essere facilmente installato nella maggior parte delle distribuzioni Linux e può anche essere ottenuto dal sito web ufficiale.

Git può essere installato tramite il seguente comando:

Il seguente comando crea una copia locale della versione più recente del codice sorgente di FreeCAD in una nuova directory chiamata.

Per ulteriori informazioni sull'uso di Git e sul contributo del codice al progetto, vedere Gestione del codice sorgente.

Codice sorgente dall'archivio
In alternativa si può scaricare il sorgente dall' archivio, come file o, e scompattarlo nella directory desiderata.

Ottenere le dipendenze
Per compilare FreeCAD devi installare le dipendenze necessarie menzionate in Librerie di terze parti; i pacchetti che contengono queste dipendenze sono elencati in seguito per diverse distribuzioni Linux. Si noti che i nomi e la disponibilità delle librerie dipendono dalla propria particolare distribuzione; se la distribuzione è vecchia, alcuni pacchetti potrebbero non essere disponibili o avere un nome diverso. In questo caso, consultare la sezione distribuzioni precedenti e non convenzionali sottostante.

Dopo aver installato tutte le dipendenze, procedere con la compilazione di FreeCAD.

Notare che il codice sorgente di FreeCAD ha una dimensione di circa 500 MB; potrebbe essere tre volte più grande se clonate il repository Git con la sua intera cronologia delle modifiche. Ottenere tutte le dipendenze potrebbe richiedere il download di almeno 500 MB di nuovi file; quando questi file vengono decompressi potrebbero richiedere almeno 1500 MB di spazio. Attenzione anche che il processo di compilazione può generare fino a 1500 MB di file aggiuntivi mentre il sistema copia e modifica l'intero codice sorgente. Pertanto, assicurarsi di disporre di spazio libero sufficiente sul disco rigido, almeno 4 GB, durante il tentativo di compilazione.

Debian e Ubuntu
Sui sistemi basati su Debian (Debian, Ubuntu, Mint, ecc.) è abbastanza facile installare tutte le dipendenze necessarie. La maggior parte delle librerie sono disponibili tramite o il gestore di pacchetti Synaptic.

Se hai già installato FreeCAD dai repository ufficiali, puoi installare le sue dipendenze di compilazione con questa singola riga di codice in un terminale:

Tuttavia, se la versione di FreeCAD nei repository è vecchia, le dipendenze potrebbero essere quelle sbagliate per compilare una versione recente di FreeCAD. Pertanto, verificare di aver installato i seguenti pacchetti.

Questi pacchetti sono essenziali per il successo di qualsiasi tipo di compilazione:
 * , installa i compilatori C e C++, le librerie di sviluppo C e il programma.
 * , strumento essenziale per configurare il sorgente di FreeCAD. Potresti anche voler installare e  per un'opzione grafica.
 * , strumenti essenziali per produrre librerie condivise.
 * , l'utilità standard di reporting di base è normalmente già installata in un sistema Debian e consente di distinguere programmaticamente tra un'installazione Debian pura o una variante, come Ubuntu o Linux Mint. Non rimuovere questo pacchetto, poiché molti altri pacchetti di sistema potrebbero dipendere da esso.

La compilazione di FreeCAD utilizza il linguaggio Python ed è utilizzato anche in fase di esecuzione come linguaggio di scripting. Se stai usando una distribuzione basata su Debian, l'interprete Python è normalmente già installato.
 * , lo strumento che crea interfacce tra codice C++ e Python.
 * , lo strumento che crea interfacce tra codice C++ e Python.

Verifica di aver installato Python 3. Python 2 è diventato obsoleto nel 2019, quindi il nuovo sviluppo in FreeCAD non viene testato con questa versione del linguaggio.

Le librerie Boost devono essere installate:



Le librerie di Coin devono essere installate:
 * , per Debian Jessie, Stretch, Ubuntu da 16.04 a 18.10, oppure
 * , per Debian Buster, Ubuntu 19.04 e successivi, così come per Ubuntu 18.04/18.10 con il freecad-stable/freecad-daily PPA aggiunto alle sorgenti software.

Diverse librerie, che si occupano di matematica, superfici triangolate, ordinamento, mesh, visione artificiale, proiezioni cartografiche, visualizzazione 3D, sistema X11 Window, parsing XML e lettura di file Zip:


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

Python 2 e Qt4
Non è raccomandato per le installazioni più recenti in quanto sia Python 2 che Qt4 sono obsoleti. A partire dalla versione 0.20, FreeCAD non li supporta più.

Per compilare FreeCAD per Debian Jessie, Stretch, Ubuntu 16.04, utilizzando Python 2 e Qt4, installare le seguenti dipendenze.



Python 3 e Qt5
Per compilare FreeCAD per Debian Buster, Ubuntu 19.04 e versioni successive, nonché Ubuntu 18.04/18.10 con il freecad-stable/freecad-daily PPA aggiunto alle sorgenti software, installare le seguenti dipendenze.


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

Kernel OpenCascade
Il kernel OpenCascade è la libreria grafica di base per creare forme 3D. Esiste in una versione ufficiale OCCT e in una versione comunitaria OCE. La versione community non è più consigliata perché obsoleta.

Per Debian Buster e Ubuntu 18.10 e successivi, così come Ubuntu 18.04 con freecad-stable/freecad-daily PPA aggiunto alle tue sorgenti software, installa i pacchetti ufficiali.



Per Debian Jessie, Stretch, Ubuntu 16.04 e versioni successive, installa i pacchetti della community edition.



È possibile installare le librerie singolarmente o utilizzando l'espansione dell'asterisco. Cambia con  se si vuole installare le librerie della comunità.

Pacchetti opzionali
Opzionalmente si possono anche installare i seguenti pacchetti extra:
 * , per fare in modo che Coin supporti formati di file immagine aggiuntivi.
 * e (o  per i sistemi precedenti), se si vuole generare la documentazione del codice sorgente.
 * , per il supporto di dispositivi di input 3D, come "Space Navigator" o "Space Pilot" di 3Dconnexion.
 * , se si intende registrare i file installati nel gestore pacchetti del tuo sistema, in modo da poterlo disinstallare in seguito.
 * , l'Addon Manager per visualizzare i file README.md in formato Markdown in modo nativo.
 * , affinché Addon Manager utilizzi git per recuperare e aggiornare workbench e macro.

Comando Singolo per Python 3 e Qt5
Richiede Pyside2 disponibile in Debian buster e nel freecad-stable/freecad-daily PPA|freecad-stable/freecad-daily PPA.

NOTA: su alcune versioni di Ubuntu e alcune versioni di Qt, si riceverà un errore che python3-pyside2uic non può essere trovato - su quei sistemi puoi tranquillamente ometterlo. Su Ubuntu 20.04 si dovrà aggiungere. Maggiori informazioni possono essere trovate in questa discussione del forum.

Comando Singolo per Python 2 e Qt4
Non raccomandato per le installazioni più recenti in quanto sia Python 2 che Qt4 sono obsoleti.

Gli utenti di Ubuntu 16.04 possono consultare anche la discussione sulla compilazione nel forum: Compilazione su Linux (Kubuntu): CMake non riesce a trovare VTK.

Raspberry Pi
Segui gli stessi passaggi di Debian e Ubuntu.

Sono stati segnalati problemi durante il tentativo di compilazione in Raspberry PI OS a 32 bit con Python 3 e Qt5, ma la combinazione Python 3 e Qt4 sembra funzionare per le versioni precedenti di FreeCAD (con problemi minori).

Per le versioni più recenti di FreeCAD (>= 0.20) la compilazione con Py3/Qt5 va a buon fine se il sistema operativo installato è Raspberry Pi OS 64-bit o Ubuntu 20.04.

A causa di diversi problemi con Qt, in Ubuntu 20.04 non verranno trovati i normali strumenti PySide.

In questo caso, possiamo installare i pacchetti da PyQt e creare collegamenti simbolici agli strumenti necessari.

Ora la compilazione può procedere.

L'opzione di  non dovrebbe essere maggiore di 3 perché il Raspberry Pi ha una memoria limitata. Ci vorranno diverse ore per compilare, quindi è meglio farlo durante la notte.

Per ulteriori informazioni, FreeCAD e Raspberry Pi 4.

Fedora
C'è un bug in cmake distribuito da Fedora 34/35 che fa sì che cmake non riesca a trovare le librerie opencascade. Questo può essere facilmente risolto apportando una piccola modifica al file cmake di livello superiore di opencascade installato su Fedora. Dettagli qui: https://bugzilla.redhat.com/show_bug.cgi?id=2083568.

Nella parte superiore del file, modificare la seguente riga per utilizzare. Questa operazione corregge un bug introdotto dall'uso di un collegamento simbolico da a  di Fedora, che causa l'errore di cmake.

Questo file è solitamente installato in.

cambiare in:

Questa banale modifica deve essere apportata all'interno della directory di build una volta che cmake è stato eseguito e ha avuto esito negativo. La riesecuzione di cmake rileverà quindi correttamente le librerie OCCT nel modo normale.

Sono necessari i seguenti pacchetti:


 * gcc-c++ (or possibly another C++ compiler?)
 * cmake
 * doxygen
 * swig
 * gettext
 * dos2unix
 * desktop-file-utils
 * libXmu-devel
 * freeimage-devel
 * mesa-libGLU-devel
 * opencascade-devel
 * openmpi-devel
 * python3
 * python3-devel
 * python3-pyside2
 * python3-pyside2-devel
 * pyside2-tools
 * boost-devel
 * tbb-devel
 * eigen3-devel
 * qt-devel
 * qt5-qtwebengine-devel
 * qt5-qtxmlpatterns
 * qt5-qtxmlpatterns-devel
 * qt5-qtsvg-devel
 * qt5-qttools-static
 * ode-devel
 * xerces-c
 * xerces-c-devel
 * opencv-devel
 * smesh-devel
 * Coin3
 * Coin3-devel

(Aprile 2021, sono disponibili Coin4 e Coin4-devel) (se coin2 è l'ultimo disponibile per la tua versione di Fedora, usare i packages di http://www.zultron.com/rpm-repo/)


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

E facoltativamente:


 * libspnav-devel (per il supporto di dispositivi 3Dconnexion come Space Navigator o Space Pilot)
 * python3-pivy ( https://bugzilla.redhat.com/show_bug.cgi?id=458975 Pivy non è obbligatorio ma necessario per l'ambiente Draft)
 * python3-markdown (affinché Addon Manager visualizzi il markdown nativo)
 * python3-GitPython (affinché Addon Manager utilizzi git per il checkout e l'aggiornamento di workbench e macro)

Per installare tutte le dipendenze contemporaneamente (testato su fedora 36):

Gentoo
Il modo più semplice per verificare quali pacchetti sono necessari per compilare FreeCAD è verificare tramite portage:

emerge -pv freecad

Questo dovrebbe fornire un bel elenco di pacchetti extra che devi installare sul tuo sistema.

Se FreeCAD non è disponibile su portage, è disponibile su waebbl overlay. Il tracker dei problemi sull'overlay waebbl Github può aiutare a navigare attraverso alcuni problemi, che potresti incontrare. L'overlay fornisce freecad-9999, che si può scegliere di compilare o semplicemente usare per ottenere le dipendenze.

layman -a waebbl

Tumbleweed
I seguenti comandi installeranno i pacchetti richiesti per la creazione di FreeCAD con Qt5 e Python 3.

Il seguente comando installerà Qt Creator e GNU Project Debugger.

Se mancano dei pacchetti, si può controllare il file Tumbleweed "FreeCAD.spec" su [https:// build.opensuse.org/package/show/openSUSE:Factory/FreeCAD Open Build Service].

Inoltre, controlla se ci sono patch che devi applicare (come 0001 -find-openmpi2-include-files.patch).

Leap
Se c'è una differenza tra i pacchetti disponibili su Tumbleweed e Leap, allora si può leggere il Leap "FreeCAD.spec " su Open Build Service per determinare i pacchetti richiesti.

Vedere la guida piano_jonas unofficial "Compile On openSUSE".

Arch Linux
Ci sarà bisogno delle seguenti librerie dai repository ufficiali:


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

Distribuzioni precedenti e non convenzionali
Su altre distribuzioni, abbiamo pochissimi feedback dagli utenti, quindi potrebbe essere più difficile trovare i pacchetti richiesti.

Inizialmente provare ad individuare le librerie richieste menzionate in librerie di terze parti nel tuo gestore di pacchetti. Attenzione che alcuni di essi potrebbero avere un nome di pacchetto leggermente diverso; cerca, ma anche , , e simili. Se ciò non fosse possibile, provare a compilare tu stesso quelle librerie.

FreeCAD richiede la versione del compilatore GNU g++ uguale o superiore alla 3.0.0, poiché FreeCAD è scritto principalmente in C++. Durante la compilazione vengono eseguiti alcuni script Python, quindi l'interprete Python deve funzionare correttamente. Per evitare qualsiasi problema con il linker è anche una buona idea avere i percorsi della libreria nella variabile o nel file. Questo è già presente nelle moderne distribuzioni Linux, ma potrebbe essere necessario impostarlo in quelle più vecchie.

Pivy
Pivy (Python wrapper per Coin3d) non è necessario per compilare FreeCAD o per avviarlo, ma è necessario come dipendenza di runtime per l'ambiente Draft. Se non si utilizzerà questo banco da lavoro, non ci sarà bisogno di Pivy. Tuttavia, si noti che Draft Workbench è utilizzato internamente da altri workbench, come Arch e BIM, quindi Pivy deve essere installato per poter utilizzare anche questi workbench.

Entro novembre 2015 la versione obsoleta di Pivy inclusa nel codice sorgente di FreeCAD non verrà più compilata su molti sistemi. Questo non dovrebbe essere un grosso problema, poiché normalmente si dovrebbe ottenere Pivy dal gestore dei pacchetti della tua distribuzione; se non si riesce a trovare Pivy, si potrebbe doverlo compilare da solo, vedi Istruzioni per la compilazione di Pivy.

Simboli di Debug
Per risolvere i problemi di crash in FreeCAD, è utile disporre dei simboli di debug di importanti librerie di dipendenze come Qt. A tal fine, si provi ad installare i pacchetti di dipendenza, che terminano con, , o simili, a seconda della propria distribuzione Linux.

Per Ubuntu, potrebbe essere necessario abilitare repository speciali per poter vedere e installare questi pacchetti di debug con il gestore pacchetti. Vedere Pacchetti di simboli di debug per ulteriori informazioni.

Compilare FreeCAD
FreeCAD utilizza CMake come sistema di compilazione principale, poiché è disponibile su tutti i principali sistemi operativi. La compilazione con CMake è solitamente molto semplice e avviene in due passaggi.


 * 1) CMake verifica che tutti i programmi e le librerie necessari siano presenti sul tuo sistema e genera un  configurato per il secondo passaggio. FreeCAD ha diverse opzioni di configurazione tra cui scegliere, ma viene fornito con impostazioni predefinite ragionevoli. Alcune alternative sono dettagliate di seguito.
 * 2) La compilazione stessa, che viene eseguita con il programma  e che genera gli eseguibili di FreeCAD.

Poiché FreeCAD è un'applicazione di grandi dimensioni, la compilazione dell'intero codice sorgente può richiedere da 10 minuti a un'ora, a seconda della CPU e del numero di core della CPU utilizzati per la compilazione.

È possibile creare il codice all'interno o all'esterno della directory di origine. La compilazione esterna è generalmente l'opzione migliore.

Compilazione Out-of-source
Compilare in una cartella separata è più conveniente che compilare nella stessa directory in cui si trova il codice sorgente, poiché ogni volta che aggiorni il codice sorgente CMake può determinare in modo intelligente quali file sono stati modificati e ricompilare solo ciò che è necessario. Questo è molto utile quando si testano diversi rami Git, poiché non si confonde il sistema di compilazione.

Per compilare out-of-source, creare semplicemente una directory di build,, distinta dalla cartella sorgente di FreeCAD, ; quindi da questa directory di build puntare alla cartella di origine corretta. Puoi usare o  invece di  anche nelle istruzioni seguenti. Una volta che ha finito di configurare l'ambiente, usare  per avviare la compilazione vera e propria.

Nota: se si sta compilando il ramo di rilascio 0.19, si deve specificare esplicitamente che si sta compilando con Qt5 e Python 3 -- sostituire il comando cMake sopra con:

L'opzione di  controlla quanti lavori (file) vengono compilati in parallelo. Il programma stampa il numero di core della CPU nel tuo sistema; utilizzandolo insieme all'opzione  si può scegliere di processare tanti file quanti sono i core, in modo da velocizzare la compilazione complessiva del programma. Nell'esempio sopra, si utilizzeranno tutti i core del sistema tranne due; questo manterrà il tuo computer reattivo per altri usi mentre la compilazione procede in background. L'eseguibile di FreeCAD apparirà infine nella directory. Vedere anche Compilazione (accelerare) per migliorare la velocità di compilazione.

Risoluzione dei problemi di cmake
Se si è già eseguito una build out-of-source e si rimane bloccato su una dipendenza, che non viene riconosciuta o che non sembra essere risolta, provare quanto segue:


 * Eliminare il contenuto della directory di build prima di eseguire nuovamente cmake. FreeCAD è un obiettivo in rapido movimento, potresti inciampare su informazioni cmake memorizzate nella cache che puntano a una versione precedente rispetto a quella che il nuovo head del repository può utilizzare. Svuotare la cache può consentire a cmake di recuperare e riconoscere la versione effettivamente necessaria.


 * Se cmake segnala la mancanza di un file specifico, utilizzare uno strumento come "apt-file search", o il suo equivalente in altri sistemi di pacchetti, per scoprire a quale pacchetto appartiene quel file ed installarlo. Tienere presente, che probabilmente avrai bisogno della versione -dev del pacchetto,che contiene i file di intestazione o di configurazione necessari a FreeCAD per utilizzare il pacchetto.

Compilazione con GNU libc 2.34 e successivi
GNU libc 2.34 introduce una modifica alla libreria che può causare il fallimento delle build su alcuni sistemi Linux con un errore come:

Per risolvere questo problema, è necessario creare manualmente un collegamento simbolico dal libdl.so.* installato nel sistema (ora vuoto) alla posizione indicata dal compilatore, che sta cercando il file. Ad esempio (se la copia effettivamente installata di libdl.so sul tuo sistema è /usr/lib/x86_64-linux-gnu/libdl.so.2):

Adattare il comando alla struttura del sistema cercando libdl.so* e collegandolo alla posizione appropriata.

Compilazione In-source
Le compilazioni in-source vanno bene se si desidera compilare rapidamente una versione di FreeCAD e non s'intende aggiornare spesso il codice sorgente. In questo caso, si può rimuovere il programma compilato ed il sorgente, semplicemente cancellando una singola cartella.

Passare alla directory di origine e puntare alla directory attuale (indicata da un singolo punto):

L'eseguibile di FreeCAD risiederà quindi nella directory.

Come riparare la directory del codice sorgente
Se si è accidentalmente eseguita una compilazione all'interno della directory del codice sorgente o si sono aggiunti strani file e si desidera ripristinare i contenuti solo nel codice sorgente originale, si possono eseguire i seguenti passaggi.

La prima riga cancella il file. Ciò garantisce che i seguenti comandi di pulizia e ripristino influiranno su tutto nella directory e non ignoreranno gli elementi che corrispondono alle espressioni in. La seconda riga elimina tutti i file e le directory, che non sono tracciati dal repository git; quindi l'ultimo comando ripristinerà qualsiasi modifica ai file tracciati, incluso il primo comando che ha cancellato il file.

Se non si cancella la directory di origine, le successive esecuzioni di potrebbero non acquisire nuove opzioni per il sistema se il codice cambia.

Configurazione
Passando diverse opzioni a, puoi modificare il modo in cui FreeCAD viene compilato. La sintassi è la seguente.

Dove è la directory che contiene il codice sorgente. può essere omesso nella maggior parte dei casi. Lo spazio dopo l'opzione può anche essere omesso.

Ad esempio, per evitare di creare l'Ambiente FEM

All possible variables are listed in the file, located in the  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
Support for Python 2 and Qt4 has been removed in FreeCAD 0.20 and it is not necessary to explicitly enable Qt5 and Python 3 if compiling the latest versions. Qt6 support is currently in development and does not work yet. Unless you plan on assisting with the Qt6 migration effort, FREECAD_QT_VERSION should be left at "Auto" (the default) or explicitly set to "5".

For 0.20 and 0.21_dev:

Note that when switching between 0.20 and the 0.21_dev 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 must then 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.

Some components of FreeCAD, such as PySide, try to autodetect the most recent Python version installed on your system, which might fail if it is different from what you entered above. Adding the following cMake option might solve the issue:

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

*.deb package with checkinstall
The Debian script allows to create a *.deb package that can be installed and removed with the standard  commands. It may need to be installed first (on Ubuntu use ). It's interactive and asks for the required information providing helpful defaults. During the process the package is installed and a *.deb file and a backup archive are created.

It's a good idea to define a name and a short description for the package. The name must be entered to uninstall it again and the desription will be listed by. The default name "build" is not very informative.

Example:

The result is a *.deb file in the freecad-build folder. will install the build by default. This is how you can install or uninstall it:

grep freecad freecad-test1_20220814-1_amd64.deb sudo dpkg -i freecad-test1_20220814-1_amd64.deb  # install dkpg -l

Aggiornare il codice sorgente
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.

Uninstalling the source code
In case the compiled source code was installed with (for Debian) the files were copied to the  folder into several subfolders. For uninstallation the file can be used. It has been created into the build folder during compilation and contains all installed files. As long as this file exists, the installation can be uninstalled.

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.

Script di compilazione automatica
Ecco tutto quello che vi serve per una compilazione completa di FreeCAD. Si tratta di uno script di approccio e funziona su una distro di recente installazione. I comandi richiedono la password di root per l'installazione di pacchetti e nuovi repository online. Questi script dovrebbero funzionare su versioni a 32 e 64 bit. Essi sono scritti per diverse versioni, e dovrebbero essere eseguibili anche su versioni successive, con o senza grandi cambiamenti.

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. 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 repository when there is some breaking change in the recipe or new features using inside the folder.