Compile on MacOS/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "=== Gihub === Il y a également une copie synchronisée régulièrement du dépôt FreeCAD sur GitHub :")
No edit summary
 
(228 intermediate revisions by 6 users not shown)
Line 1: Line 1:
<languages/>
Comme Mac OS X est basé sur la distribution''' BSD (UNIX)''', la compilation de FreeCAD sur '''Mac''' n'est pas très différente de [[CompileOnUnix/fr|CompileOnUnix]], mais il existe cependant un certain nombre de détails très importants, spécifiques au Mac, pour que tout fonctionne correctement. Ces instructions ont été testées sur '''Lion (10.7)''', mais ''devrait fonctionner'' sur les '''Macs Intel''' qui utilisent '''(Snow) Leopard'''.


{{Docnav/fr
== Obtenir le code source ==
|[[Compile_on_Linux/fr|Compiler sous Linux]]
|[[Compile_on_Docker/fr|Compiler sur Docker]]
}}


{{VeryImportantMessage|Il existe un conteneur Docker FreeCAD expérimental qui est testé pour le développement FreeCAD. En savoir plus à ce sujet sur [[Compile_on_Docker/fr|Compiler sur Docker]]}}
Avant de compiler FreeCAD, vous avez besoin du code source. Il y a trois moyens de l'obtenir :


{{TOCright}}
=== Git ===


<span id="Overview"></span>
La méthode la meilleure et la plus rapide d'obtenir le code est de « cloner » le dépôt Git en lecture seule (il vous faut le paquet [http://git-scm.com/ git] installé):
== Présentation ==
<pre>
git clone git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad freecad
</pre>
Ceci place une copie de la plus récente version du code source de FreeCAD dans un nouveau répertoire nommé « freecad ». La première fois que vous vous connectez à l'hôte free-cad.git.sourceforge.net, vous obtiendrez un message vous demandant d'authentifier la clé SSH de Sourceforge. Celle-ci peut normalement être acceptée sans danger (vous pouvez vérifier les clés SSH de Sourceforge sur leur site Web si vous voulez vous en assurer)


Cette page décrit comment compiler le code source FreeCAD sur macOS. Pour les autres plates-formes, voir [[Compiling/fr|Compiler]].
=== Gihub ===


Ces instructions ont été testées sur macOS Catalina avec le XCode 11.6 standard. Il est connu pour fonctionner sur macOS BigSur Beta avec XCode 12.0 beta. Si vous prévoyez d'utiliser XCode Beta, assurez-vous de télécharger le module complémentaire Outils de ligne de commande via un package dmg pour contourner certains problèmes de dépendance libz.
Il y a également une copie synchronisée régulièrement du dépôt FreeCAD sur GitHub :
[https://github.com/FreeCAD/FreeCAD_sf_master github.com/FreeCAD/FreeCAD_sf_master]
=== Source package ===
Alternatively you can download a source package, but they could be already quite old so it's always better to get the latest sources. Depending on your distribution, there are several ways to obtain a source package:


Cette page sert de point de départ et n’a pas vocation à être exhaustive en ce qui concerne la description de toutes les options disponibles de build.
Official FreeCAD source packages (distribution-independent):
https://sourceforge.net/projects/free-cad/files/FreeCAD%20Source/


Si vous souhaitez simplement évaluer la dernière version de FreeCAD en version préliminaire, vous pouvez télécharger les fichiers binaires pré-construits [https://github.com/FreeCAD/FreeCAD/releases ici].
Debian:
http://packages.debian.org/source/sid/freecad


<span id="Install_Prerequisites"></span>
Ubuntu:
== Conditions préalables à l'installation ==
http://packages.ubuntu.com/source/precise/freecad


Les logiciels suivants doivent être installés pour prendre en charge le processus de compilation.
=== Install Dependencies ===
On Mac OS X 10.7, the following dependencies are NOT bundled with the operating and thus must be installed before building FreeCAD:
*sip
*fortran
*xerces-c
*boost
*eigen
*ftgl
*coin3d
*OpenCASCADE
*Qt
*pyqt
*soqt


<span id="Homebrew_Package_Manager"></span>
==== Option 1: Homebrew ====
=== Gestionnaire de paquets Homebrew ===
'''Note''': this section is still a work in progress! See the help forum post for the latest.
:https://forum.freecadweb.org/viewtopic.php?f=4&t=2064&p=15405
Download and install the package manager Homebrew:
:http://mxcl.github.com/homebrew/
Then compile and install most of FreeCAD's dependencies:
<pre>
brew install sip gfortran xerces-c boost eigen coin qt pyqt soqt ftgl
</pre>
Go on to [[CompileOnMac#Build OpenCASCADE]].
==== Option 2: MacPorts/Fink ====


Homebrew est un gestionnaire de paquets basé sur la ligne de commande pour macOS. La [https://brew.sh/ page d'accueil de Homebrew] fournit une ligne de commande d'installation que vous collez simplement dans une fenêtre de terminal.
'''Note: this section is in need of updates.'''


=== CMake ===
Install MacPorts (if you don't already have it). MacPorts is a system that allows you to download, compile, and install many common open-source applications with a single command. Similar applications from the UNIX/Linux world are PKGSRC and APT. To install, just download the disk image from the MacPorts site and follow the directions:
:http://www.macports.org/install.php
Whether or not you just installed MacPorts, you'll probably want to make sure it's up to date. Run:
<pre>
sudo port selfupdate
</pre>
Now that MacPorts is installed and up to date, you can start installing some of FreeCAD's required packages:
*xercesc
*boost
*py-sip
*ftlg
*f2c
*eigen3
*py-pyqt4
*Coin
The following command will compile/install the above libraries. If MacPorts produces errors, you may want to try installing them one at a time.
<pre>
sudo port install xercesc boost ftgl f2c eigen3 py-sip py-pyqt4 Coin
</pre>
Note that for python packages like py-sip and py-pyqt4, there are multiple packages, one for each MacPorts version of Python.


CMake est un outil de build qui génère une configuration de build basée sur les variables que vous spécifiez. Vous lancez ensuite la commande 'make' pour construire cette configuration. La version en ligne de commande de CMake est automatiquement installée dans le cadre de l'installation de Homebrew, ci-dessus. Si vous préférez utiliser une version graphique de CMake, vous pouvez la télécharger à partir de [https://www.cmake.org/downloadDownload ici].
Note that boost is a large package, and py-pyqt4 depends on qt4-mac, which is a large package. You may want to run port -v install so that you have more of an idea what's going on during these long builds.


<span id="Install_Dependencies"></span>
Qt4 is also available for Mac as a binary installer from the Qt web site. I'm not sure how nicely this approach plays with FreeCAD compiling.
== Installation des dépendances ==


FreeCAD maintient un Homebrew "cask" qui installe les formules et dépendances requises. Exécutez les commandes de préparation suivantes dans votre terminal.
It is also possible to choose the version of the gcc compiler to use, some recent versions might sometimes cause problems:
<pre>
sudo port -v install gcc_select
sudo port select --list gcc
sudo port select --set gcc mp-gcc46
</pre>
'''Install Fortran Compiler'''


{{Code|code=
You also need a FORTRAN compiler. Apple's fork of gcc on OSX does not come with FORTRAN.
brew tap freecad/freecad
brew install eigen
brew install --only-dependencies freecad
}}


{{Incode|brew install}} peut prendre un certain temps, donc vous pouvez aller prendre une verre:-).
An installer for GFortran can be found here, and will do the trick:
http://gcc.gnu.org/wiki/GFortranBinaries#MacOS
If you are using fink, another method is to use the following commands (attempted by Shaneyfelt 2100.Nov.14)
<pre>
sudo fink selfupdate
sudo fink install gcc46
</pre>
''This installs another gcc compiler collection with the name gcc-4 to avoid a name conflict with the apple one.''


Vous pouvez également installer manuellement les dépendances individuelles en installant les paquets suivants à l'aide de {{Incode|brew install ...}} :
MacPorts gcc4x packages also include FORTRAN compilers, so this should also work:
<pre>
sudo port install gcc46
</pre>
Another possible MacPorts package is g95. This seems to be a valid FORTRAN90 compiler and will pass FreeCAD's cmake configuration tests, but the actual build seems to ask for gcc-specific options, so probably easier to stick to gcc4x.


* {{incode|cmake}}
'''Install Eigen3'''
* {{incode|swig}}
* {{incode|boost}}
* {{incode|boost-python3}}
* {{incode|eigen}}
* {{incode|gts}}
* {{incode|vtk}}
* {{incode|xerces-c}}
* {{incode|qt@5}} - Seul Qt5 est actuellement supporté, le support de Qt6 est en cours de réalisation
* {{incode|opencascade}}
* {{incode|doxygen}}
* {{incode|pkgconfig}}
* {{incode|coin3d}} - Notez qu'à l'heure où nous écrivons ces lignes (Nov. 2022), cela installera une version inutilisable de pyside@2 en tant que dépendance.


Il existe plusieurs paquets qui ne sont disponibles que lorsque vous avez tapé le cask freecad : vous devez faire ({{incode|brew tap freecad/freecad}}). En raison de certains contournements de bogues historiques, au moment de la rédaction de cet article (Nov. 2022) les versions de PySide2 et Shiboken2 installées par Homebrew ne sont pas utilisables car elles forcent l'utilisation de Py_Limited_API, que FreeCAD ne supporte pas. Il est prévu que cette solution de contournement soit supprimée dans les prochains mois, mais en attendant vous devez utiliser les versions FreeCAD cask de PySide et Shiboken. Utilisez {{incode|brew install ...}}, installez les paquets suivants :
Download and unzip the latest eigen3 library here:
http://eigen.tuxfamily.org/index.php?title=Main_Page
These are needed for solver functionality. Once unzipped, the folder named 'Eigen' can be dropped into


* {{incode|freecad/freecad/pyside2@5.15.5}}
'''/usr/local/include/eigen3/'''
* {{incode|freecad/freecad/shiboken2@5.15.5}}
* {{incode|freecad/freecad/med-file}}
* {{incode|freecad/freecad/netgen}}


Vous devrez également "lier" PySide et Shiboken :
=== Build OpenCASCADE ===


{{Code|code=
Currently, the easiest way to build OpenCASCADE on OS X is from the community edition (oce). Download the source or check out the Git repository from:
brew link freecad/freecad/pyside2@5.15.5 freecad/freecad/shiboken2@5.15.5
:https://github.com/tpaviot/oce
}}
Then, in terminal:
<pre>
mkdir build
cd build
cmake ..
cd ..
make
make install/strip
</pre>
You may need cmake:
<pre>
sudo port install cmake
</pre>
=== Download and 'install' the FreeCAD.app template ===
The following archive contains an application bundle template for FreeCAD. This is not strictly necessary, but it makes working with FreeCAD more convenient than the default installation configuration. The recommended install location for the bundle is the /Applications folder, but you should be able to put it anywhere you want -- just remember that the bundle can't be moved after FreeCAD is complied and installed without further modifications. Running make install using the configuration in the next step will install into this bundle.
:http://dl.getdropbox.com/u/103808/FreeCAD/FreeCAD_bundle_template_20091128.tar.gz
=== Compile ===
Configure, compile, and install FreeCAD using the following commands from within the root FreeCAD folder. If you put your FreeCAD.app bundle somewhere other than /Applications (or aren't using the bundle), change the 'PREFIX' argument accordingly.
<pre>
./autogen.sh
PREFIX=/Applications/FreeCAD.app/Contents
</pre>
If you installed dependencies using Option 1 (Homebrew):


Dans certains cas, les paquets installés par Homebrew n'utilisent pas la même version de Python : par exemple, au moment où nous écrivons ces lignes, PySide2 utilise Python 3.10, mais boost-python3 utilise Python 3.11. Bien qu'il soit possible de "revenir en arrière" sur la version la plus avancée (de sorte que dans ce cas, boost-python3 utilise Python 3.10), il s'agit d'une opération avancée, et dans de nombreux cas, il est préférable d'attendre une mise à jour de l'autre paquet. Si vous voulez quand même poursuivre dans cette voie, regardez la commande "brew extract", que vous pouvez utiliser pour extraire une formule dans un nouveau cask (typiquement freecad/freecad). Vous pouvez ensuite modifier cette formule selon vos besoins.
''Note'': this config line has not been verified and may contain errors!
<pre>
./configure --with-xercesc-lib=/usr/local/lib --with-xercesc-include=/usr/local/include \
--with-boost-lib=/usr/local/lib --with-boost-include=/usr/local/include \
--with-qt4-dir=/usr/local--with-qt4-lib=/usr/local/lib --with-qt4-include=/usr/local/include \
--with-qt4-framework=/usr/local/lib --with-qt4-bin=/usr/local/bin --with-occ-lib=/usr/local/lib \
--with-occ-include=/usr/local/include/oce --with-coin=/usr/local/lib --with-soqt=/usr/local/lib \
--prefix=/Applications/FreeCAD.app/Contents --bindir=/Applications/FreeCAD.app/Contents/MacOS \
--libdir=/Applications/FreeCAD.app/Contents/Frameworks/FreeCAD \
--includedir=/Applications/FreeCAD.app/Contents/Resources/include \
--datarootdir=/Applications/FreeCAD.app/Contents/Resources/share --enable-debug=no \
--with-python-include=/System/Library/Frameworks/Python.framework/Versions/2.5/Headers
</pre>
Or if you installed dependencies using Option 2 (MacPorts/Fink):
<pre>
./configure --with-xercesc-lib=/opt/local/lib --with-xercesc-include=/opt/local/include \
--with-boost-lib=/opt/local/lib --with-boost-include=/opt/local/include \
--with-qt4-dir=/usr/local/Trolltech/Qt-4.8.0 --with-qt4-lib=/usr/local/Trolltech/Qt-4.8.0/lib \
--with-qt4-include=/usr/local/Trolltech/Qt-4.8.0/include --with-qt4-framework=/Library/Frameworks \
--with-qt4-bin=/usr/local/Trolltech/Qt-4.8.0/bin --with-occ-lib=/usr/local/lib \
--with-occ-include=/usr/local/include/oce --with-coin=/Library/Frameworks \
--with-soqt=/Library/Frameworks --prefix=/Applications/FreeCAD.app/Contents \
--bindir=/Applications/FreeCAD.app/Contents/MacOS --libdir=/Applications/FreeCAD.app/Contents/Frameworks/FreeCAD \
--includedir=/Applications/FreeCAD.app/Contents/Resources/include \
--datarootdir=/Applications/FreeCAD.app/Contents/Resources/share --enable-debug=no \
--with-python-include=/System/Library/Frameworks/Python.framework/Versions/2.5/Headers
</pre>
Then:
<pre>
make
make install
</pre>
Depending on your machine's processing power, the make step can take quite a while.


Vous devrez définir le chemin d'accès à Qt : Qt5 est actuellement supporté, tandis que le support pour Qt6 est un travail en cours. Définissez FREECAD_QT_VERSION à "Auto" ou "5" pour sélectionner Qt5 (la valeur par défaut). Sur la ligne de commande, utilisez quelque chose comme :
=== Run ===
If everything went OK, double-clicking the .app bundle should start FreeCAD. If you have any issues, post the details on the [http://forum.freecadweb.org/viewforum.php?f=4 help forum].


{{Code|code=
=== PyQt4 ===
cmake \
-DCMAKE_BUILD_TYPE="Release" \
-DPYTHON_EXECUTABLE="/usr/local/bin/python3" \
-DQt5_DIR="/usr/local/Cellar/qt@5/5.15.7/lib/cmake/Qt5" \
-DPySide2_DIR="/usr/local/Cellar/pyside2@5.15.5/5.15.5/lib/cmake/PySide2-5.15.5" \
-DShiboken2_DIR="/usr/local/Cellar/shiboken2@5.15.5/5.15.5_1/lib/cmake/Shiboken2-5.15.5" \
../freecad-source
}}


<span id="Get_the_source"></span>
Some users reported facing a "No Module named PyQt4" message on FreeCAD startup. This is a workaround to correct it:
== Obtenir les sources ==
<pre>
cd /Library/Python/2.6/site-packages
sudo ln -s /contrib/lib/python2.6/site-packages/PyQt4 .
sudo ln -s /contrib/lib/python2.6/site-packages/sip* .
cd /volatile/FreeCAD-r5443-ser/bin/pivy
cp _coin.dylib _coin.so
cd /volatile/FreeCAD-r5443-ser/lib
for i in *.dylib; do j=`basename $i .dylib`; cp $i $j.so; done
</pre>
=== Pivy ===
Some FreeCAD components won't work without Pivy. See [[Extra_python_modules#Pivy|here]] for partial build instructions.


Dans les instructions suivantes, les dossiers source et de build sont créés côte à côte sous


{{Code|code=
{{docnav|CompileOnUnix|Third Party Libraries}}
/Users/username/FreeCAD
}}


mais vous pouvez utiliser les dossiers de votre choix.
[[Category:Developer Documentation]]


{{Code|code=
{{clear}}
mkdir ~/FreeCAD
<languages/>
cd ~/FreeCAD
}}

La commande suivante clone le référentiel FreeCAD git dans un répertoire appelé FreeCAD-git.

{{Code|code=
git clone https://github.com/FreeCAD/FreeCAD FreeCAD-git
}}

Créez le dossier build.

{{Code|code=
mkdir ~/FreeCAD/build
}}

<span id="Run_CMake"></span>
== Lancer CMake ==

Ensuite, nous allons lancer CMake pour générer la configuration de construction. Plusieurs options doivent être transmises à CMake. Le tableau suivant décrit les options et donne un aperçu.

<span id="CMake_Options"></span>
=== Les options de CMake ===

{| class="wikitable" style="text-align:left"
|-
! Nom !! Valeur !! Remarques
|-
| CMAKE_BUILD_TYPE || Release (STRING) || Release ou Debug. Le débogage est généralement utilisé pour les tests au niveau développeur mais peut également être requis pour des tests et le dépannage au niveau utilisateur.
|-
| CMAKE_PREFIX_PATH || "/usr/local/opt/qt5152;" ... (PATH) || Nécessaire pour un build avec Qt5. Voir la remarque ci-dessous. Vous devez également ajouter le chemin d'accès au fichier de configuration cmake des librairies VTK et NGLIB.

|-
| FREECAD_CREATE_MAC_APP || 1 (BOOL) || Crée un paquet FreeCAD.app à l'emplacement spécifié dans CMAKE_INSTALL_PREFIX lorsque la commande 'make install' a été émise.
|-
| CMAKE_INSTALL_PREFIX || "./.." (PATH) || Chemin où vous souhaitez générer le paquet FreeCAD.app.
|-
| FREECAD_USE_EXTERNAL_KDL || 1 (BOOL) || Nécessaire.
|-
| BUILD_FEM_NETGEN || 1 (BOOL) || Requis si vous choisissez de construire les outils FEM.
|}

Remarque : ligne de commande pour générer CMAKE_PREFIX_PATH :

<!--NOT CHANGE THE <pre> </pre> BALISE CAUSE THE PIPE OR SPACE IN MACRO CODE CUT THE MACRO-->
ls -d $(brew list -1 | grep qt | tail -1 | xargs brew --cellar)/*/lib/cmake

<span id="CMake_GUI"></span>
=== Interface graphique CMake ===

Ouvrez l'application CMake, et remplissez les champs source et dossier de compilation. Dans cet exemple, il s'agirait de '''/Users/username/FreeCAD/FreeCAD-git''' pour les sources et ''/Users/username/FreeCAD/build''' pour le dossier de build.

Ensuite, cliquez sur le bouton '''Configure''' pour remplir la liste des options de configuration. Cela affichera une boîte de dialogue vous demandant de spécifier quel générateur utiliser. Laissez la valeur par défaut '''Unix Makefiles'''. La configuration échouera pour la première fois car certaines options doivent être changées. Remarque: vous devrez cocher la case à cocher '''Advanced''' pour obtenir toutes les options.

Définissez les options du tableau ci-dessus, puis cliquez à nouveau sur '''Configure''' puis sur '''Generate'''.

<span id="CMake_command_line"></span>
=== CMake en lignes de commande ===

Entrez ce qui suit dans le terminal.

{{Code|code=
export PREFIX_PATH="/usr/local/opt/qt5152;\
/usr/local/Cellar/nglib/v6.2.2007/Contents/Resources;\
/usr/local/Cellar/vtk@8.2/8.2.0_1/lib/cmake;"
}}

{{Code|code=
$cd ~/FreeCAD/build
$cmake \
-DCMAKE_BUILD_TYPE="Release" \
-DBUILD_QT5=1 \
-DWITH_PYTHON3=1 \
-DCMAKE_PREFIX_PATH="$PREFIX_PATH" \
-DPYTHON_EXECUTABLE="/usr/local/bin/python3" \
-DFREECAD_USE_EXTERNAL_KDL=1 \
-DCMAKE_CXX_FLAGS='-std=c++14' \
-DBUILD_FEM_NETGEN=1 \
-DFREECAD_CREATE_MAC_APP=1 \
-DCMAKE_INSTALL_PREFIX="./.." \
../FreeCAD-git/

}}

<span id="Run_make"></span>
== Exécuter make ==

Enfin, à partir d’un terminal, exécutez '''make''' pour compiler et lier FreeCAD et générer le paquet applicatif.

{{Code|code=
cd ~/FreeCAD/build
make -j5 install
}}

L'option -j spécifie le nombre de processus de création à exécuter simultanément. Prendre le nombre de cœurs de processeur et ajouter un est généralement le bon nombre à utiliser. Cependant, si la compilation échoue pour une raison quelconque, il est utile de réexécuter make sans l'option -j afin de pouvoir voir exactement où l'erreur s'est produite.

Voir aussi [[Compiling_(Speeding_up)/fr|Compilation (accélération)]].

Si make se termine sans erreur, vous pouvez maintenant lancer FreeCAD en double-cliquant sur l'exécutable dans le Finder.

<span id="Updating_from_Github"></span>
== Mise à jour depuis Github ==

Le développement de FreeCAD est rapide ; chaque jour ou presque, il y a des corrections de bugs ou de nouvelles fonctionnalités. Pour obtenir les dernières modifications, utilisez git pour mettre à jour le répertoire source (voir [[Source code management/fr|Gestion du code source]]), puis réexécutez CMake et suivez les étapes ci-dessus. Dans ce cas, il n’est généralement pas nécessaire de commencer par un répertoire de build vierge et les compilations suivantes iront généralement beaucoup plus vite que la première.

<span id="Building_with_Qt4_and_Python_2.7"></span>
== Faire une compilation avec Qt4 et Python 2.7 ==

FreeCAD est passé de Qt 4 à Qt 5 comme homebrew. Qt 4 n'est plus disponible en option pour une nouvelle version sur macOS après la transition Qt 5. Python 2.7 est obsolète dans homebrew et macOS à venir et nous ne le supportons plus non plus pour la version macOS.

<span id="Troubleshooting"></span>
== Dépannage ==

<span id="Segfault_on_Qt5_launch"></span>
=== Un segfault sur le lancement de Qt5 ===

Si Qt4 a été précédemment installé via Homebrew et que vous faites un build ensuite avec Qt5, vous pouvez obtenir une exception EXC_BAD_ACCESS (SEGSEGV) lors du lancement de la nouvelle version de Qt5. Le correctif consiste à désinstaller manuellement Qt4.

{{Code|code=
brew uninstall --ignore-dependencies --force cartr/qt4/shiboken@1.2 cartr/qt4/pyside@1.2 cartr/qt4/pyside-tools@1.2 cartr/qt4/qt-legacy-formula
}}

=== Fortran ===

''"No CMAKE_Fortran_COMPILER could be found."'' (Aucun CMAKE_Fortran_COMPILER n'a pu être trouvé) lors de la configuration - Les anciennes versions de FreeCAD nécessiteront l'installation d'un compilateur Fortran. Avec Homebrew, faites "brew install gcc" et essayez à nouveau de configurer cmake en donnant le chemin à Fortran, c'est-à-dire -DCMAKE_Fortran_COMPILER=/opt/local/bin/gfortran-mp-4.9, ou utilisez de préférence une version plus récente de la source FreeCAD!

=== FreeType ===

Si vous utilisez des versions de CMake antérieures à la version 3.1.0, il est nécessaire de définir la variable CMake FREETYPE_INCLUDE_DIR_freetype2 manuellement, par exemple /usr/local/include/freetype2.

<span id="Additional_Build_Instructions"></span>
=== Instructions de compilation supplémentaires ===

FreeCAD peut être construit à partir du dernier master git hébergé sur github et lancé à partir d'une CLI en utilisant les bibliothèques fournies par le tap homebrew-freecad. Pour une liste complète des instructions de construction, voir [https://github.com/ipatch/homebrew-us-05/tree/dev/freecad#building-freecad-for-macos-by-macos ici].

{{Docnav/fr
|[[Compile_on_Linux/fr|Compiler sous Linux]]
|[[Compile_on_Docker/fr|Compiler sur Docker]]
}}

{{Userdocnavi{{#translation:}}}}
[[Category:Developer_Documentation{{#translation:}}]]
[[Category:Developer{{#translation:}}]]

Latest revision as of 12:55, 12 March 2023

Il existe un conteneur Docker FreeCAD expérimental qui est testé pour le développement FreeCAD. En savoir plus à ce sujet sur Compiler sur Docker

Présentation

Cette page décrit comment compiler le code source FreeCAD sur macOS. Pour les autres plates-formes, voir Compiler.

Ces instructions ont été testées sur macOS Catalina avec le XCode 11.6 standard. Il est connu pour fonctionner sur macOS BigSur Beta avec XCode 12.0 beta. Si vous prévoyez d'utiliser XCode Beta, assurez-vous de télécharger le module complémentaire Outils de ligne de commande via un package dmg pour contourner certains problèmes de dépendance libz.

Cette page sert de point de départ et n’a pas vocation à être exhaustive en ce qui concerne la description de toutes les options disponibles de build.

Si vous souhaitez simplement évaluer la dernière version de FreeCAD en version préliminaire, vous pouvez télécharger les fichiers binaires pré-construits ici.

Conditions préalables à l'installation

Les logiciels suivants doivent être installés pour prendre en charge le processus de compilation.

Gestionnaire de paquets Homebrew

Homebrew est un gestionnaire de paquets basé sur la ligne de commande pour macOS. La page d'accueil de Homebrew fournit une ligne de commande d'installation que vous collez simplement dans une fenêtre de terminal.

CMake

CMake est un outil de build qui génère une configuration de build basée sur les variables que vous spécifiez. Vous lancez ensuite la commande 'make' pour construire cette configuration. La version en ligne de commande de CMake est automatiquement installée dans le cadre de l'installation de Homebrew, ci-dessus. Si vous préférez utiliser une version graphique de CMake, vous pouvez la télécharger à partir de ici.

Installation des dépendances

FreeCAD maintient un Homebrew "cask" qui installe les formules et dépendances requises. Exécutez les commandes de préparation suivantes dans votre terminal.

brew tap freecad/freecad
brew install eigen
brew install --only-dependencies freecad

brew install peut prendre un certain temps, donc vous pouvez aller prendre une verre:-).

Vous pouvez également installer manuellement les dépendances individuelles en installant les paquets suivants à l'aide de brew install ... :

  • cmake
  • swig
  • boost
  • boost-python3
  • eigen
  • gts
  • vtk
  • xerces-c
  • qt@5 - Seul Qt5 est actuellement supporté, le support de Qt6 est en cours de réalisation
  • opencascade
  • doxygen
  • pkgconfig
  • coin3d - Notez qu'à l'heure où nous écrivons ces lignes (Nov. 2022), cela installera une version inutilisable de pyside@2 en tant que dépendance.

Il existe plusieurs paquets qui ne sont disponibles que lorsque vous avez tapé le cask freecad : vous devez faire (brew tap freecad/freecad). En raison de certains contournements de bogues historiques, au moment de la rédaction de cet article (Nov. 2022) les versions de PySide2 et Shiboken2 installées par Homebrew ne sont pas utilisables car elles forcent l'utilisation de Py_Limited_API, que FreeCAD ne supporte pas. Il est prévu que cette solution de contournement soit supprimée dans les prochains mois, mais en attendant vous devez utiliser les versions FreeCAD cask de PySide et Shiboken. Utilisez brew install ..., installez les paquets suivants :

  • freecad/freecad/pyside2@5.15.5
  • freecad/freecad/shiboken2@5.15.5
  • freecad/freecad/med-file
  • freecad/freecad/netgen

Vous devrez également "lier" PySide et Shiboken :

brew link freecad/freecad/pyside2@5.15.5 freecad/freecad/shiboken2@5.15.5

Dans certains cas, les paquets installés par Homebrew n'utilisent pas la même version de Python : par exemple, au moment où nous écrivons ces lignes, PySide2 utilise Python 3.10, mais boost-python3 utilise Python 3.11. Bien qu'il soit possible de "revenir en arrière" sur la version la plus avancée (de sorte que dans ce cas, boost-python3 utilise Python 3.10), il s'agit d'une opération avancée, et dans de nombreux cas, il est préférable d'attendre une mise à jour de l'autre paquet. Si vous voulez quand même poursuivre dans cette voie, regardez la commande "brew extract", que vous pouvez utiliser pour extraire une formule dans un nouveau cask (typiquement freecad/freecad). Vous pouvez ensuite modifier cette formule selon vos besoins.

Vous devrez définir le chemin d'accès à Qt : Qt5 est actuellement supporté, tandis que le support pour Qt6 est un travail en cours. Définissez FREECAD_QT_VERSION à "Auto" ou "5" pour sélectionner Qt5 (la valeur par défaut). Sur la ligne de commande, utilisez quelque chose comme :

cmake \
  -DCMAKE_BUILD_TYPE="Release" \
  -DPYTHON_EXECUTABLE="/usr/local/bin/python3" \
  -DQt5_DIR="/usr/local/Cellar/qt@5/5.15.7/lib/cmake/Qt5" \
  -DPySide2_DIR="/usr/local/Cellar/pyside2@5.15.5/5.15.5/lib/cmake/PySide2-5.15.5" \
  -DShiboken2_DIR="/usr/local/Cellar/shiboken2@5.15.5/5.15.5_1/lib/cmake/Shiboken2-5.15.5" \
  ../freecad-source

Obtenir les sources

Dans les instructions suivantes, les dossiers source et de build sont créés côte à côte sous

/Users/username/FreeCAD

mais vous pouvez utiliser les dossiers de votre choix.

mkdir ~/FreeCAD
cd ~/FreeCAD

La commande suivante clone le référentiel FreeCAD git dans un répertoire appelé FreeCAD-git.

git clone https://github.com/FreeCAD/FreeCAD FreeCAD-git

Créez le dossier build.

mkdir ~/FreeCAD/build

Lancer CMake

Ensuite, nous allons lancer CMake pour générer la configuration de construction. Plusieurs options doivent être transmises à CMake. Le tableau suivant décrit les options et donne un aperçu.

Les options de CMake

Nom Valeur Remarques
CMAKE_BUILD_TYPE Release (STRING) Release ou Debug. Le débogage est généralement utilisé pour les tests au niveau développeur mais peut également être requis pour des tests et le dépannage au niveau utilisateur.
CMAKE_PREFIX_PATH "/usr/local/opt/qt5152;" ... (PATH) Nécessaire pour un build avec Qt5. Voir la remarque ci-dessous. Vous devez également ajouter le chemin d'accès au fichier de configuration cmake des librairies VTK et NGLIB.
FREECAD_CREATE_MAC_APP 1 (BOOL) Crée un paquet FreeCAD.app à l'emplacement spécifié dans CMAKE_INSTALL_PREFIX lorsque la commande 'make install' a été émise.
CMAKE_INSTALL_PREFIX "./.." (PATH) Chemin où vous souhaitez générer le paquet FreeCAD.app.
FREECAD_USE_EXTERNAL_KDL 1 (BOOL) Nécessaire.
BUILD_FEM_NETGEN 1 (BOOL) Requis si vous choisissez de construire les outils FEM.

Remarque : ligne de commande pour générer CMAKE_PREFIX_PATH :

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

Interface graphique CMake

Ouvrez l'application CMake, et remplissez les champs source et dossier de compilation. Dans cet exemple, il s'agirait de /Users/username/FreeCAD/FreeCAD-git' pour les sources et /Users/username/FreeCAD/build pour le dossier de build.

Ensuite, cliquez sur le bouton Configure pour remplir la liste des options de configuration. Cela affichera une boîte de dialogue vous demandant de spécifier quel générateur utiliser. Laissez la valeur par défaut Unix Makefiles. La configuration échouera pour la première fois car certaines options doivent être changées. Remarque: vous devrez cocher la case à cocher Advanced pour obtenir toutes les options.

Définissez les options du tableau ci-dessus, puis cliquez à nouveau sur Configure puis sur Generate.

CMake en lignes de commande

Entrez ce qui suit dans le terminal.

export PREFIX_PATH="/usr/local/opt/qt5152;\
/usr/local/Cellar/nglib/v6.2.2007/Contents/Resources;\
/usr/local/Cellar/vtk@8.2/8.2.0_1/lib/cmake;"
$cd ~/FreeCAD/build
$cmake \
  -DCMAKE_BUILD_TYPE="Release"   \
  -DBUILD_QT5=1                  \
  -DWITH_PYTHON3=1               \
  -DCMAKE_PREFIX_PATH="$PREFIX_PATH" \
  -DPYTHON_EXECUTABLE="/usr/local/bin/python3" \
  -DFREECAD_USE_EXTERNAL_KDL=1   \
  -DCMAKE_CXX_FLAGS='-std=c++14' \
  -DBUILD_FEM_NETGEN=1           \
  -DFREECAD_CREATE_MAC_APP=1     \
  -DCMAKE_INSTALL_PREFIX="./.."  \
  ../FreeCAD-git/

Exécuter make

Enfin, à partir d’un terminal, exécutez make pour compiler et lier FreeCAD et générer le paquet applicatif.

cd ~/FreeCAD/build
make -j5 install

L'option -j spécifie le nombre de processus de création à exécuter simultanément. Prendre le nombre de cœurs de processeur et ajouter un est généralement le bon nombre à utiliser. Cependant, si la compilation échoue pour une raison quelconque, il est utile de réexécuter make sans l'option -j afin de pouvoir voir exactement où l'erreur s'est produite.

Voir aussi Compilation (accélération).

Si make se termine sans erreur, vous pouvez maintenant lancer FreeCAD en double-cliquant sur l'exécutable dans le Finder.

Mise à jour depuis Github

Le développement de FreeCAD est rapide ; chaque jour ou presque, il y a des corrections de bugs ou de nouvelles fonctionnalités. Pour obtenir les dernières modifications, utilisez git pour mettre à jour le répertoire source (voir Gestion du code source), puis réexécutez CMake et suivez les étapes ci-dessus. Dans ce cas, il n’est généralement pas nécessaire de commencer par un répertoire de build vierge et les compilations suivantes iront généralement beaucoup plus vite que la première.

Faire une compilation avec Qt4 et Python 2.7

FreeCAD est passé de Qt 4 à Qt 5 comme homebrew. Qt 4 n'est plus disponible en option pour une nouvelle version sur macOS après la transition Qt 5. Python 2.7 est obsolète dans homebrew et macOS à venir et nous ne le supportons plus non plus pour la version macOS.

Dépannage

Un segfault sur le lancement de Qt5

Si Qt4 a été précédemment installé via Homebrew et que vous faites un build ensuite avec Qt5, vous pouvez obtenir une exception EXC_BAD_ACCESS (SEGSEGV) lors du lancement de la nouvelle version de Qt5. Le correctif consiste à désinstaller manuellement Qt4.

brew uninstall --ignore-dependencies --force cartr/qt4/shiboken@1.2 cartr/qt4/pyside@1.2 cartr/qt4/pyside-tools@1.2 cartr/qt4/qt-legacy-formula

Fortran

"No CMAKE_Fortran_COMPILER could be found." (Aucun CMAKE_Fortran_COMPILER n'a pu être trouvé) lors de la configuration - Les anciennes versions de FreeCAD nécessiteront l'installation d'un compilateur Fortran. Avec Homebrew, faites "brew install gcc" et essayez à nouveau de configurer cmake en donnant le chemin à Fortran, c'est-à-dire -DCMAKE_Fortran_COMPILER=/opt/local/bin/gfortran-mp-4.9, ou utilisez de préférence une version plus récente de la source FreeCAD!

FreeType

Si vous utilisez des versions de CMake antérieures à la version 3.1.0, il est nécessaire de définir la variable CMake FREETYPE_INCLUDE_DIR_freetype2 manuellement, par exemple /usr/local/include/freetype2.

Instructions de compilation supplémentaires

FreeCAD peut être construit à partir du dernier master git hébergé sur github et lancé à partir d'une CLI en utilisant les bibliothèques fournies par le tap homebrew-freecad. Pour une liste complète des instructions de construction, voir ici.