CompileOnUnix/fr

Sous les distributions GNU/Linux récentes, FreeCAD est généralement facile à compiler, puisque toutes les dépendances sont fournies par le gestionnaire de paquets. Cela se fait en 3 étapes :
 * 1) Obtenir le code source de FreeCAD
 * 2) Obtenir les dépendances (les paquets desquels FreeCAD dépend)
 * 3) Configurer avec "cmake" et compiler avec "make"

Vous trouverez ci-dessous des instructions détaillées du processus complet, quelques scripts de compilation et des particularités que vous pourriez rencontrer. Si vous constatez des informations erronées ou désuètes (les distributions Linux changent régulièrement), ou si vous utilisez une distribution qui n'est pas listée, votre aide pour corriger le tout sera appréciée.

Obtenir le code source
Avant de compiler FreeCAD, vous avez besoin du code source. Il y a trois moyens de l'obtenir :

Git
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 git installé):

Ceci crééra une copie de la dernière version du code source de FreeCAD dans un nouveau répertoire nommé "freecad-code".

Paquet source
Vous pouvez également télécharger un paquet source, mais il pourrait être désuet, il vaut donc toujours mieux obtenir les dernières sources par git ou github.


 * Source .tar.gz
 * Source .zip

Obtenir les dépendances
Pour compiler FreeCAD sous Linux, vous devez d'abord installer toutes les bibliothèques mentionnées dans la page Bibliothèques externes. Notez que les noms et la disponibilité des bibliothèques dépendra de votre distribution. Si vous n'utilisez pas la version la plus récente de votre distribution, certains des paquets ci-dessous pourraient être absents de vos dépôts. Dans ce cas, consultez la section Anciennes distributions et distributions non-conventionnelles ci-dessous.

Passer directement à la Compilation de FreeCAD

Debian et Ubuntu
Sous les systèmes basés sur Debian (Debian, Ubuntu, LinuxMint, etc...), il est très facile d'installer toutes les dépendances requises. La plupart des bibliothèques sont disponibles via apt-get, le gestionnaire de paquets Synaptic, ou le gestionnaire de paquets de votre choix.

either:
 * build-essential
 * cmake
 * python
 * python-matplotlib
 * libtool
 * libcoin60-dev (Debian Wheezy, Wheezy-backports, Ubuntu 13.04 and before)

or:
 * libcoin80-dev (Debian unstable(Jesse), testing, Ubuntu 13.10 and forward)

either:
 * libsoqt4-dev
 * libxerces-c-dev
 * libboost-dev
 * libboost-filesystem-dev
 * libboost-regex-dev
 * libboost-program-options-dev
 * libboost-signals-dev
 * libboost-thread-dev
 * libboost-python-dev
 * libqt4-dev
 * libqt4-opengl-dev
 * qt4-dev-tools
 * python-dev
 * python-pyside
 * pyside-tools
 * libopencascade-dev (official opencascade version)

or:
 * liboce*-dev (opencascade community edition)
 * oce-draw


 * libeigen3-dev
 * libqtwebkit-dev
 * libshiboken-dev
 * libpyside-dev
 * libode-dev
 * swig
 * libzipios++-dev
 * libfreetype6
 * libfreetype6-dev

Instructions additionnelles pour libcoin80-dev Debian wheezy-backports, unstable, testing, Ubuntu 13.10 et plus

Notez que liboce*-dev inclut les bibliothèques suivantes : Vous pourriez devoir installer ces paquets par leur nom individuel :
 * liboce-foundation-dev
 * liboce-modeling-dev
 * liboce-ocaf-dev
 * liboce-visualization-dev
 * liboce-ocaf-lite-dev

Vous pouvez optionnellement installer ces paquets supplémentaires :
 * libsimage-dev (to make Coin to support additional image file formats)
 * checkinstall (to register your installed files into your system's package manager, so yo can easily uninstall later)
 * python-pivy (needed for the 2D Drafting module)
 * python-qt4 (needed for the 2D Drafting module)
 * doxygen and libcoin60-doc (if you intend to generate source code documentation)
 * libspnav-dev (for 3Dconnexion devices support like the Space Navigator or Space Pilot)

Utilisateurs de Ubuntu 16.04, veuillez aussi consulter ces instructions complémentaires (EN).

Fedora
Vous avez besoin des paquets suivants :


 * 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
 * ode-devel
 * xerces-c
 * xerces-c-devel
 * opencv-devel
 * smesh-devel
 * coin3-devel

(si coin2 est la dernière disponible pour votre version de Fedora, utilisez les paquets à partir de http://www.zultron.com/rpm-repo/)
 * soqt-devel
 * freetype
 * freetype-devel

Et optionnellement :


 * libspnav-devel (pour le support des périphériques 3Dconnexion comme le Space Navigator ou le Space Pilot)
 * pivy (https://bugzilla.redhat.com/show_bug.cgi?id=458975 Pivy n'est pas obligatoire mais nécessaire pour le module Draft)

Gentoo
Le moyen le plus facile de vérifier quels paquets sont nécessaires pour compiler FreeCAD et de vérifier via portage :

emerge -pv freecad

Ceci devrait vous donner une superbe liste de paquets supplémentaires que devez avoir installés sur votre système.

Si FreeCAD n'est pas disponible sur portage, il est disponible sur la waebbl overlay. Le suivi des problèmes sur le recouvrement waebbl Github peut vous aider à résoudre certains problèmes que vous pourriez rencontrer. La superposition fournit  freecad-9999 , que vous pouvez choisir de compiler ou simplement utiliser pour obtenir les dépendances.

layman -a waebbl

OpenSUSE
Vous avez besoin des paquets suivants : Pour FreeCAD 0.14 stable et 0.15 instable, si les librairies Eigen3 et swig ne sont pas trouvées dans les dépôts standards, vous pouvez les obtenir en un clic ici : Notez également que la librairie Eigen3 provenant d'Entreprise d'Education a parfois provoqué des problèmes, donc utilisez celle provenant du dépôt KDE 4.8 Extra
 * gcc
 * cmake
 * OpenCASCADE-devel
 * libXerces-c-devel
 * python-devel
 * libqt4-devel
 * libshiboken-devel
 * python-pyside-devel
 * python-pyside-tools
 * Coin-devel
 * SoQt-devel
 * boost-devel
 * libode-devel
 * libQtWebKit-devel
 * libeigen3-devel
 * gcc-fortran
 * freetype2
 * freetype2-devel
 * Eigen3
 * swig
 * Eigen3
 * swig

Si vous commencez avec la 0.17pre, Opensuse 13.2 est trop ancien pour le compiler à cause d'un boost trop vieux.

Arch Linux
Vous aurez besoin des librairies suivantes des dépôts officiels :


 * boost-libs
 * curl
 * hicolor-icon-theme
 * libspnav
 * opencascade
 * python2-matplotlib
 * shared-mime-info
 * xerces-c
 * boost
 * cmake
 * desktop-file-utils
 * eigen
 * gcc-fortran
 * swig

Aussi, assurez vous de vérifier le AUR pour tout paquet manquant qui ne sont pas dans les dépôts, actuellement :
 * coin
 * python2-pivy
 * python2-pyside
 * python2-pyside-tools
 * python2-shiboken
 * qtwebkit
 * med (Modelisation et Echanges de Donnees)

Distributions anciennes et non-conventionnelles
Sous d'autres distributions, nous n'avons que très peu de retours des utilisateurs, il pourrait être plus difficile de trouver les paquets requis. Repérez d'abord les bibliothèques requises mentionnées à la page Bibliothèques externes. Prenez note que certaines de ces bibliothèques pourraient se trouver dans votre distribution sous un nom différent (tel que nom, libnom, nom-dev, nom-devel, etc...).

Vous aurez aussi besoin du GNU gcc compiler en version égale ou supérieur à 3.0.0. g++ est également nécessaire puisque FreeCAD est complètement écrit en C++. Pendant la compilation, quelques script Python sont exécutés. L'interpréteur Python doit donc fonctionner correctement. Pour éviter tout problème avec l'éditeur de liens pendant la compilation, c'est aussi une bonne idée de régler les liens de bibliothèques dans votre variable LD_LIBRARY_PATH ou dans votre fichier ld.so.conf. C'est généralement déjà le cas dans les distributions récentes.

Pour plus de détails, consultez le fichier README.Linux dans vos sources.

Pivy
Pivy n'est pas nécessaire pour compiler FreeCAD ou l'exécuter, mais il est requis par le module Draft qui ne fonctionnera pas autrement. Si vous ne comptez pas utiliser ce module, vous n'avez pas besoin de pivy. En date de novembre 2015, la version obsolète de Pivy incluse dans le code source de FreeCAD ne compile plus sur de nombreux systèmes, en raison de son âge. Si vous ne trouvez pas Pivy dans les dépôts de paquets de votre distribution ou ailleurs, vous pouvez compiler pivy vous-même :

instructions de compilation Pivy

Compiler FreeCAD
FreeCAD uses CMake as its main build system. CMake is a build system available on all major operating systems. Compiling with CMake is usually very simple and happens in two steps.


 * 1) CMake checks that every needed program and library is present on your system, and configures the build system for the second step. FreeCAD has several configuration options to choose from, but it comes with sensible defaults. Some alternatives are detailed below.
 * 2) The compilation itself, which produces the FreeCAD executable.

Puisque FreeCAD est une application lourde, la compilation peut prendre un certain temps (environ 10 minutes sur un PC rapide, 30 minutes (ou plus) sur un PC lent).

Compilation hors-source
Si vous comptez suivre l'évolution rapide de FreeCAD, il est beaucoup plus pratique de le compiler dans un dossier séparé de la source. Chaque fois que vous mettez à jour le code source, cMake distinguera intelligemment quels fichiers ont changé, et ne compilera que ce qui est requis. Les compilation hors-source sont particulièrement pratiques avec le système Git, puisque vous pouvez facilement essayer d'autres branches sans embrouiller le système de compilation. Pour compiler hors-source, créez un dossier de compilation distinct du dossier source freecad, et depuis le dossier de compilation, pointez cMake vers le dossier source (ou si vous utilisez cmake-gui, remplacez "cmake" dans le code ci-dessous par "cmake-gui"):

The FreeCAD executable will then reside in the freecad-build/bin directory.

Compilation dans le dossier source
Si vous n'en êtes pas sûr, en raison de ses limitations, ne compilez pas dans le dossier source, crééz plutôt une compilation hors-source tel qu'expliqué dans la section suivante. Toutefois, FreeCAD peut être compilé dans le dossier source, ce qui veut dire que les fichiers résultant de la compilation partageront le même dossier que le code source. C'est acceptable si vous ne faites que tester FreeCAD, et que vous voulez le supprimer facilement en effaçant simplement ce dossier. Mais au cas où vous comptez compiler FreeCAD régulièrement, nous vous conseillons de faire une compilation hors-source, qui offre plusieurs avantages. les commandes suivantes compileront FreeCAD :

In-source builds are fine if you are just looking at FreeCAD, and want to be able to remove it easily by just deleting that folder. However, if you are unsure where to build, do not make an in-source build. Create an out-of-source build as explained earlier. However FreeCAD can be built in-source, which means that all the files resulting from the compilation stay in the same folder as the source code.

The following commands will compile FreeCAD:

The FreeCAD executable will then reside in the freecad-source/bin directory.

Comment réparer votre répertoire du code source après avoir accidentellement effectué une compilation dans le dossier source
Ceci est une méthode utilisant Git pour réparer votre répertoire du code source après avoir accidentellement effectué une compilation dans le dossier source. Si vous ne l'effacez pas, les exécutions ultérieures de cmake risquent de ne pas capturer toutes vos nouvelles options.

La première ligne efface le fichier  .gitignore . Cela garantit que les commandes de nettoyage et de réinitialisation suivantes affecteront tout le contenu du répertoire et n'ignoreront pas les éléments correspondant aux expressions contenues dans .gitignore. La deuxième ligne supprime tous les fichiers et répertoires qui ne sont pas suivis par le référentiel git, puis la réinitialisation réinitialisera toutes les modifications apportées aux fichiers suivis (y compris la première commande effaçant le fichier .gitignore</tt>.

Configuration
By passing different options to CMake, you can change how FreeCAD is compiled. This can be useful for several purposes. For example, by calling CMake like this, you can instruct it to not build the FEM module:

All possible options are listed in FreeCAD's root CMakeLists.txt</tt> file. Try searching for the string OPTION</tt>. Alternatively, use the command cmake -LH</tt>. Below, we've listed some of the more relevant options you may want to configure.

To pass a value for an option you find in the CMakeLists.txt</tt> file, use the following flag: -D : =

External, or internal Pivy
If you want to use your system's copy of Pivy, which you most commonly will, then if not on Linux, set the compiler flag to use the correct pivy with -DFREECAD_USE_EXTERNAL_PIVY=1</tt>. Using external Pivy became the default for Linux, during development of FreeCAD 0.16, so it does not need to be manually set when compiling this version onwards, on Linux.

Building for Qt5
By default, FreeCAD builds for Qt4. It is possible to build for Qt5 by enabling the -DBUILD-QT5</tt> option.

Building for a specific Python version
By default, FreeCAD may only detect Python 2. It is possible to choose how to build for a specific version of Python (e.g. Python 2 or Python 3) by setting some cmake</tt> options. An example for Python 3 is shown below:

The locations and version numbers of your Python files and directories will be different depending on which distribution you are using. You can find them using the Unix locate</tt> or which</tt> commands.

Qt designer plugin
If you want to develop Qt stuff for FreeCAD, you'll need the Qt Designer plugin that provides all custom widgets of FreeCAD. Go to:

So far we don't provide a makefile -- but calling

creates it. Once that's done, calling

will create the library libFreeCAD_widgets.so</tt>. To make this library known to Qt Designer you have to copy the file to $QTDIR/plugin/designer</tt>

Doxygen
If you feel bold enough to dive in the code, you could take advantage to build and consult Doxygen generated FreeCAD's Source documentation

Construire un paquet Debian
Si vous envisagez de construire un paquet Debian voici les sources que vous devez installer en premier :

Pour construire un paquet ouvrez une console, puis il suffit d'aller dans le répertoire FreeCAD et l’appeler

Une fois que le paquet est construit, vous pouvez utiliser lintian pour vérifier si le paquet contient des erreurs

Note sur les systèmes 64 bits
Pour la compilation de FreeCAD pour 64 bits, il y a un problème connu avec le paquet OpenCASCADE 64 bits. Afin que FreeCAD s'exécute correctement, vous pourriez devoir exécuter le script ./configure avec le réglage additionnel define _OCC64 :

Sous les systèmes basés sur Debian, cette solution n'est pas requise avec l'utilisation du paquet précompilé OpenCASCADE, puisque celui-ci est déja compilé avec ce réglage. Maintenant il ne reste plus qu'à compiler FreeCAD tel que décrit ci-dessus.

Scripts de compilation automatiques
Voici tout ce dont vous avez besoin pour une compilation complète de FreeCAD. Il s'agit d'une approche en un unique script qui fonctionne sous une distribution fraîchement installée. Les commandes demanderont un mot de passe (pour l'installation des paquets) et parfois reconnaître une empreinte pour un serveur externe ou le dépôt https-subversion. Ces scripts devraient fonctionner autant sous des systèmes 32 bits que 64 bits. Ils sont rédigés pour des versions spécifiques, mais devraient aussi fonctionner sous des versions ultérieures sans changements ou avec changements mineurs.

Si vous avez un tel script pour votre distribution favorite, svp envoyez-le nous ! Nous l'intégrerons dans cet article.

Ubuntu
Ces scripts fournissent un moyen fiable d'installer le bon ensemble de dépendances pour compiler et exécuter FreeCAD sur Ubuntu. Ils utilisent les dépôts PPA d'Ubuntu et devraient fonctionner sur n'importe quelle version d'Ubuntu ciblée par le PPA. Le 'daily' PPA cible les versions récentes d'Ubuntu et le 'stable' PPA cible toutes les versions officiellement supportées d'Ubuntu.

Ce script installe les dépendances pour l’instantané de développement quotidien de FreeCAD

Ce script installe les dépendances pour la dernière version stable de FreeCAD. (Pour Ubuntu 12.04, enlever "--enable-source" de la commande add-apt-repository)

(Ces scripts installent également les PPA de la compilation de FreeCAD en tant qu'effet secondaire.Vous pourriez alors les désinstaller tout en gardant les dépendances. Cependant, le laisser installé permettra au gestionnaire de paquets de garder l'ensemble des dépendances à jour, ce qui est utile si vous suivez le développement pendant une longue période.)

Après avoir installé les dépendances, consultez les instructions génériques pour obtenir le code source, exécuter CMake et compiler. Le script suivant est un exemple d'un moyen de le faire.

OpenSUSE 12.2
Aucuns dépôts externes ne sont nécessaires pour compiler FreeCAD 0.13 avec cette version. Cependant, il existe un incompatibilité avec python3-devel qui doit être enlevé. FreeCAD peut être compilé à partir de GIT de la même manière que pour OpenSUSE 12.2

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

Mettre à jour le code source
Le développement de FreeCAD est très rapide, presque chaque jour il y a des correctifs ou de nouvelles fonctionnalités. Le système cMake vous permet de mettre à jour le code source de façon intelligente, et ne recompile que ce qui a changé, ce qui accélère les compilations subséquentes. La mise à jour du code source avec git ou sous-version est très facile :

Déplacez vous dans le répertoire de compilation approprié et exécutez cmake encore une fois (puisque cmake met à jour les données du numéro de version pour le menu Aide, ...A propos de FreeCAD), cependant, vous n'avez pas besoin d'ajouter le chemin au code source après "cmake", juste un espace et un point :

Liens
Consultez également Compilation - Accélérer Comment accélérer la compilation.