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 some cases the packages installed by Homebrew do not use the same Python version: for example, at the time of this writing PySide2 uses Python 3.10, but boost-python3 uses Python 3.11. While it is possible to "roll back" the more advanced version (so that in this case boost-python3 uses Python 3.10) this is an advanced operation, and in many cases it is best to wait for an update to the other package. If you want to pursue that path anyway, look at the "brew extract" command, which you can use to extract a formula into a new cask (typically freecad/freecad). You can then edit that formula as needed.

You will need to set the path to Qt: Qt5 is currently supported, while support for Qt6 is a work-in-progress. Set FREECAD_QT_VERSION to "Auto" or "5" to select Qt5 (the default). On the command line, use something like:

Get the source
In the following instructions, the source and build folders are created side-by-side under

but you can use whatever folders you want.

The following command will clone the FreeCAD git repository into a directory called FreeCAD-git.

Create the build folder.

Run CMake
Next, we will run CMake to generate the build configuration. Several options must be passed to CMake. The following table describes the options and gives some background.

CMake Options
Note: Command line to generate CMAKE_PREFIX_PATH:

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

CMake GUI
Open the CMake app, and fill in the source and build folder fields. In this example, it would be /Users/username/FreeCAD/FreeCAD-git for the source, and /Users/username/FreeCAD/build for the build folder.

Next, click the Configure button to populate the list of configuration options. This will display a dialog asking you to specify what generator to use. Leave it at the default Unix Makefiles. Configuring will fail the first time because there are some options that need to be changed. Note: You will need to check the Advanced checkbox to get all of the options.

Set options from the table above, then click Configure again and then Generate.

CMake command line
Enter the following in the terminal.

Run make
Finally, from a terminal run make to compile and link FreeCAD, and generate the app bundle.

The -j option specifies how many make processes to run at once. One plus the number of CPU cores is usually a good number to use. However, if compiling fails for some reason, it is useful to rerun make without the -j option, so that you can see exactly where the error occurred.

See also Compiling - Speeding up.

If make finishes without any errors, you can now launch FreeCAD by double clicking the executable in the 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.