Compile on MacOS/it

Presentazione
Questa pagina descrive come compilare il codice sorgente di FreeCAD su MacOS X. Per altre piattaforme, vedere la pagina Compilazione.

Queste istruzioni sono state testate su macOS Catalina con XCode 11.6 standard. È noto che funzioni su macOS BigSur Beta con XCode 12.0 beta. Se si prevede di utilizzare XCode Beta, assicurarsi di scaricare il componente aggiuntivo degli strumenti della riga di comando tramite un pacchetto dmg per risolvere alcuni problemi di dipendenza libz.

Questa pagina funge da punto di partenza rapido e non intende essere esaustiva per quanto riguarda la descrizione di tutte le opzioni di build disponibili.

Se si vuole solo valutare l'ultima build pre-rilascio di FreeCAD, si possono scaricare i binari pre-compilati da qui.



Installare i prerequisiti
Il seguente software deve essere installato per supportare il processo di compilazione.

Homebrew Package Manager
Homebrew è un gestore di pacchetti basato sulla riga di comando per macOS. La Homebrew main page fornisce una riga di comando per l'installazione che si deve semplicemente incollare in una finestra di terminale.

CMake
CMake è uno strumento di compilazione che genera una configurazione di compilazione basata sulle variabili specificate. Quindi si esegue il comando 'make' per creare effettivamente quella configurazione. La versione da riga di comando di CMake viene installata automaticamente come parte dell'installazione Homebrew, sopra. Se si preferiscie utilizzare una versione GUI di CMake, la si può scaricare da qui.



Installare le dipendenze
FreeCAD mantiene una "cask" Homebrew che installa le formule e le dipendenze richieste. Immettere i seguenti comandi brew nel terminale.

potrebbe volerci un po' di tempo, quindi puoi andare a prendere qualcosa da bere. :-).

In alternativa, si possono installare manualmente le singole dipendenze, installando i seguenti pacchetti, utilizzando :


 * - Attualmente è supportato solo Qt5, il supporto per Qt6 è un work-in-progress
 * - Si noti che al momento della stesura di questo documento (novembre 2022) verrà installata una versione inutilizzabile di pyside@2 come dipendenza.
 * - Attualmente è supportato solo Qt5, il supporto per Qt6 è un work-in-progress
 * - Si noti che al momento della stesura di questo documento (novembre 2022) verrà installata una versione inutilizzabile di pyside@2 come dipendenza.
 * - Attualmente è supportato solo Qt5, il supporto per Qt6 è un work-in-progress
 * - Si noti che al momento della stesura di questo documento (novembre 2022) verrà installata una versione inutilizzabile di pyside@2 come dipendenza.
 * - Attualmente è supportato solo Qt5, il supporto per Qt6 è un work-in-progress
 * - Si noti che al momento della stesura di questo documento (novembre 2022) verrà installata una versione inutilizzabile di pyside@2 come dipendenza.
 * - Attualmente è supportato solo Qt5, il supporto per Qt6 è un work-in-progress
 * - Si noti che al momento della stesura di questo documento (novembre 2022) verrà installata una versione inutilizzabile di pyside@2 come dipendenza.
 * - Si noti che al momento della stesura di questo documento (novembre 2022) verrà installata una versione inutilizzabile di pyside@2 come dipendenza.
 * - Si noti che al momento della stesura di questo documento (novembre 2022) verrà installata una versione inutilizzabile di pyside@2 come dipendenza.
 * - Si noti che al momento della stesura di questo documento (novembre 2022) verrà installata una versione inutilizzabile di pyside@2 come dipendenza.

Ci sono diversi pacchetti che sono disponibili solo dopo aver toccato la cask di freecad: si deve fare. A causa di alcune soluzioni alternative a bug storici, al momento della stesura di questo articolo (novembre 2022) le versioni di PySide2 e Shiboken2 installate da Homebrew non sono utilizzabili, perché impongono l'uso di Py_Limited_API, che FreeCAD non supporta. Si prevede che questa soluzione alternativa verrà rimossa nei prossimi mesi, ma nel frattempo è necessario utilizzare le versioni cask di FreeCAD di PySide e Shiboken. Usare, installare i seguenti pacchetti:



Si dovranno anche "collegare" PySide e Shiboken:

In alcuni casi i pacchetti installati da Homebrew non utilizzano la stessa versione di Python: ad esempio, al momento in cui scriviamo PySide2 utilizza Python 3.10, ma boost-python3 utilizza Python 3.11. Sebbene sia possibile "ripristinare" la versione più avanzata (quindi in questo caso boost-python3 utilizza Python 3.10) si tratta di un'operazione avanzata e in molti casi è meglio attendere un aggiornamento dell'altro pacchetto. Se si vuole comunque seguire quel percorso, guardare il comando "brew extract", che si può usare per estrarre una formula in una nuova cask (tipicamente freecad/freecad). È quindi possibile modificare tale formula secondo necessità.

Si dovrà impostare il percorso su Qt: Qt5 è attualmente supportato, mentre il supporto per Qt6 è un work-in-progress. Impostare FREECAD_QT_VERSION su "Auto" o "5" per selezionare Qt5 (impostazione predefinita). Sulla riga di comando, usare qualcosa come:



Ottenere il codice sorgente
Nelle seguenti istruzioni, le cartelle di origine e di build vengono create fianco a fianco in

ma si può usare qualsiasi cartella si desideri.

Il seguente comando clonerà il repository git di FreeCAD in una directory chiamata FreeCAD-git.

Crea la cartella di compilazione.



Eseguire CMake
Successivamente, si eseguirà CMake per generare la configurazione della build. Devono essere passate a CMake diverse opzioni. La tabella seguente descrive queste opzioni e fornisce alcuni retroscena.



Opzioni di CMake
Note: linea di comando per generare CMAKE_PREFIX_PATH:

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



GUI per CMake
Aprire l'app CMake e compilare i campi della cartella sorgente e di compilazione. In questo esempio, sarebbe /Users/username/FreeCAD/FreeCAD-git per l'origine e /Users/username/FreeCAD/build per la cartella di compilazione.

Successivamente, fare clic sul pulsante Configure per popolare l'elenco delle opzioni di configurazione. Verrà visualizzata una finestra di dialogo che chiede di specificare quale generatore utilizzare. Lasciarlo al valore predefinito Unix Makefiles. La configurazione fallirà la prima volta, perché ci sono alcune opzioni, che devono essere cambiate. Nota: sarà necessario selezionare la casella Advanced per ottenere tutte le opzioni.

Impostare le opzioni dalla tabella sopra, quindi fare nuovamente clic su Configure e quindi su Generate.



CMake da riga di comando
Immettere quanto segue nel terminale.



Eseguire make
Infine, da un terminale eseguire make per compilare e collegare FreeCAD e generare l'app bundle.

L'opzione -j specifica quanti processi make devono essere eseguiti contemporaneamente. Uno più il numero di core della CPU è solitamente un buon numero da utilizzare. Tuttavia, se la compilazione fallisce per qualche motivo, è utile eseguire nuovamente make senza l'opzione -j, in modo da poter vedere esattamente dove si è verificato l'errore.

Vedere anche Velocizzare la compilazione.

Se make termina senza errori, si può avviare FreeCAD facendo doppio clic sull'eseguibile nel Finder.

Updating from Github
FreeCAD development happens fast; every day or so there are bug fixes or new features. To get the latest changes, use git to update the source directory (see Source code management), then re-run the CMake and make steps above. It is not usually necessary to start with a clean build directory in this case, and subsequent compiles will generally go much faster than the first one.

Building with Qt4 and Python 2.7
FreeCAD has transitioned from Qt 4 to Qt 5 as well as homebrew. Qt 4 is no longer available as an option for new build on macOS following Qt 5 transition. Python 2.7 has been deprecated within homebrew and upcoming macOS and we do not support it anymore for macOS build either.

Segfault on Qt5 launch
If Qt4 was previously installed via brew, and you then build with Qt5, you may get a EXC_BAD_ACCESS (SEGSEGV) exception when launching the new Qt5 build. The fix for this is to manually uninstall Qt4.

Fortran
"No CMAKE_Fortran_COMPILER could be found." during configuration - Older versions of FreeCAD will need a fortran compiler installed. With Homebrew, do "brew install gcc" and try configuring again, giving cmake the path to Fortran ie -DCMAKE_Fortran_COMPILER=/opt/local/bin/gfortran-mp-4.9. Or, preferably use a more current version of FreeCAD source!

FreeType
When using CMake versions older than 3.1.0, it's necessary to set CMake variable FREETYPE_INCLUDE_DIR_freetype2 manually, eg /usr/local/include/freetype2

Additional Build Instructions
FreeCAD can be built against the latest git master hosted on github, and launched from a CLI using libraries provided by the homebrew-freecad tap. For a complete list of build instructions see here.