Compile on Windows/fr

Cet article explique pas à pas comment compiler FreeCAD dans Windows.

A voir Compiler dans Windows avec Visual Studio 2013

Programmes requis

 * Git Il y a plusieurs solutions alternatives telles que GitCola, Tortoise Git, et d'autres.
 * CMake version 2.x.x or Cmake 3.x.x
 * Python >2.5 (Ceci n'est nécessaire que si vous n'utilisez pas le Libpack. Le Libpack est livré avec Python a partir de la version (2.7.x) et utilisé pour compiler et exécuter FreeCAD)

De préférence utiliser Git
Pour créer une branche locale et télécharger le code source, vous devez ouvrir un terminal (invite de commande) et faites cd pour vous diriger vers le répertoire ou vous désirez placer le code source, puis tapez:

Compiler
Sous Windows, le compilateur par défaut est M$ Visual Studio Express ou l'ensemble des versions 2008, 2012 ou 2013. Vous aurez aussi besoin d'installer la plate-forme Windows SDK pour obtenir les bibliothèques requises (par exemple windows.h), même si elles ne sont pas requises par les compilateurs (soit M$ Visual Studio Express ou autres).

Pour ceux qui ne veulent pas installer l'énorme Visual Studio uniquement pour avoir un compilateur, voir CompileOnWindows - Reducing Disk Footprint.

Libraires tierces
Vous aurez besoin de tous les librairies tierces pour compiler FreeCAD avec succès. Si vous utilisez les compilateurs M$ il est recommandé d'installer un FreeCAD LibPack, qui fournit toutes les bibliothèques nécessaires pour compiler FreeCAD dans Windows.

Programmes optionels

 * L'installateur NSIS Windows installer (note: formerly, WiX a été utilisé - nousfaisons maintenant une transition vers NSIS) - si vous voulez créer un MSI Installer

Chemin de Configuration Système
Dans votre système veillez définir les chemins corrects pour les programmes suivants:


 * git (non TortoiseGit, mais git.exe) il est nécessaire pour que Cmake mettre à jour correctement l'information "A propos de FreeCAD" dans le fichier de version.h qui permet à FreeCAD de signaler la bonne version "A propos de FreeCAD" à partir du menu Aide.


 * Optionnellement, vous pouvez inclure libpack dans votre chemin d'accès système. Ceci est utile si vous envisagez de construire de multiples configurations/versions de FreeCAD, vous devrez copier moins de fichiers comme expliqué plus loin dans le processus de construction.

Pour ajouter à votre chemin au système:


 * Menu Démarrer -> clic droit sur Ordinateur -> Propriétés -> Paramètres système avancés
 * Onglet Avancé -> Variables d'environnement ...
 * Ajouter path/to/GIT dans la variable d'environnement PATH
 * Chaque chemin doit être séparé par un point virgule ';'

The switch to CMake
Actuellement, FreeCAD utilise le système de compilation CMake pour générer la construction et créer les fichiers qui seront utilisés avec les différents systèmes d'exploitation et compilateurs. Si vous voulez construire des versions antérieures de FreeCAD (0.8 et plus) voir Building older versions later in this article.

Nous avons changé parce qu'il était devenu de plus en plus pénible de maintenir des projets de plus de 30 fichiers et compiler pour x compilateurs. CMake nous donne la possibilité de soutenir d'autres IDE, comme Code::Blocks, Qt Creator et Eclipse CDT. Le compilateur principal est toujours M$ VC9 Express. Mais nous prévoyons pour plus tard un processus de compilation n'utilisant pas de compilateur propriétaire.

CMake
La première étape pour construire FreeCAD avec CMake est de configurer son environnement. Ilk y a deux moyens pour yarriver:
 * Utiliser le LibPack
 * Installer toutes les bibliothèques nécessaires et laisser CMake les trouver

Le processus suivant suppose que vous utilisez le LipPack. La deuxième option peut être discutable dans Options for the Build Process.

Configure CMake en utilisant GUI

 * Ouvrez l'environnement CMake GUI
 * Spécifiez le répertoire des sources
 * Spécifiez le répertoire de compilation
 * Cliquez sur Configure
 * Spécifiez le compilateur attaché à l'IDE que vous utilisez.

Cela va commencer la configuration et devrait échouer, car l'emplacement de FREECAD_LIBPACK_DIR est à l'arrêt.
 * Développez la catégorie FreeCAD et définir FREECAD_LIBPACK_DIR à l'emplacement correct
 * Vérifiez FREECAD_USE_EXTERNAL_PIVY
 * Vérifiez l'option FREECAD_USE_FREETYPE cela est nécessaire pour utiliser la fonctionnalité Draft WB's Shape String functionality
 * Cliquez sur Configurer à nouveau
 * Il ne devrait avoir aucune erreur
 * Cliquez sur Générer
 * Fermer CMake
 * Copiez le dossier libpack\bin dans le nouveau dossier de compilation que CMake a créé

Options pour le Procédé de Compilation
Le système de compilation CMake nous donne beaucoup plus de flexibilité au cours du processus de compilation. Ce qui veut dire nous pouvons activer et désactiver certaines fonctionnalités ou modules. Il y a une similitude au noyau compilation Linux. Vous avez beaucoup de commutateurs pour déterminer le processus de compilation.

Voici la description de certains de ces commutateurs. Ils seront très probablement modifiés dans le futur parce que nous voulons augmenter beaucoup plus la flexibilité de compiulation.

Si vous compilez avec Qt Creator, allez voir Building with Qt Creator, autre procédure Building with Visual Studio 9 2008.

Compilation de FreeCAD
En fonction de votre configuration actuelle, le processus de compilation de FreeCAD sera légèrement différente. Cela est dû à des différences dans les versions du logiciel et des logiciels disponibles pour chaque système d'exploitation.

La procédure suivante crée une compilation dans l'environnement Windows Vista/7/8, pour XP un autre ensemble d'outils VS est nécessaire pour VS 2012 et 2013, qui n'a pas été testé avec succès sur les Libpacks actuelles. Pour cibler XP (x32 et x64 fois), il est recommandé d'utiliser VS2008 et Libpack FreeCADLibs_11.0_x86_VC9.7z

Compilation avec Visual Studio 12 2013
Assurez vous de spécifier Visual Studio 12 x64(ou un Compilateur-C que vous utilisez) comme compilateur utilisé par CMake avant de continuer.


 * Démarrez Visual Studio 12 2013 en cliquant sur l'icône du bureau créé lors de son installation.

File -> Open -> Project/Solution
 * Ouvrez le projet par:


 * Open FreeCAD_Trunk.sln from the build folder CMake created

This may take a while depending on your sytem
 * Switch the Solutions Configuration drop down at the top to Release X64


 * Build -> Build Solution


 * This will take a long time...

If you don't get any errors you are done. Exit Visual Studio and start FreeCAD by double clicking the FreeCAD icon in the bin folder of the build directory.

Building with Visual Studio 9 2008
Make sure to specify Visual Studio 9 2008 as the generator in CMake before you continue.
 * Open Visual Studio 9 2008 or Visual C++ Express 2008
 * File -> Open -> Project/Solution
 * Open FreeCAD_Trunk.sln from the build folder CMake created
 * Switch the Solutions Configuration dropdown at the top to Release
 * Build -> Build Solution to build
 * Wait until the Build is finished (will take a while)

After Building

 * Debug -> Start without Debugging
 * Click popup menu under Executable File Name and choose Browse
 * Go to the build\bin folder and choose FreeCAD.exe
 * You are done!

Installation and configuration of Qt Creator

 * Download and install Qt Creator
 * Tools -> Options -> Text Editor -> Behavior tab:
 * File Encodings -> Default Encodings:
 * Set to: ISO-8859-1 /...csISOLatin1 (Certain characters create errors/warnings with Qt Creator if left set to UTF-8. This seems to fix it.)
 * Tools -> Options -> Build & Run:
 * CMake tab
 * Fill Executable box with path to cmake.exe
 * Kits tab
 * Name: MSVC 2008
 * Compiler: Microsoft Visual C++ Compiler 9.0 (x86)
 * Debugger: Auto detected...
 * Qt version: None
 * General tab
 * Uncheck: Always build project before deploying it
 * Uncheck: Always deploy project before running it

Import project and Build

 * File -> Open File or Project
 * Open CMakeLists.txt which is in the top level of the source
 * This will start CMake
 * Choose build directory and click next
 * Set generator to NMake Generator (MSVC 2008)
 * Click Run CMake. Follow the instructions depicted above to configure CMake to your liking.

Now FreeCAD can be built
 * Build -> Build All
 * This will take a long time...

Once complete, it can be run: There are 2 green triangles at the bottom left. One is debug. The other is run. Pick whichever you want.

Command line build
Here an example how to build FreeCAD from the Command line:

Using LibPack
To make it easier to get FreeCAD compiled, we provide a collection of all needed libraries. It's called the LibPack. You can find it on the download page on sourceforge.

You need to set the following environment variables:


 * FREECADLIB = "D:\Wherever\LIBPACK"


 * QTDIR = "%FREECADLIB%"

Add "%FREECADLIB%\bin" and "%FREECADLIB%\dll" to the system PATH variable. Keep in mind that you have to replace "%FREECADLIB%" with the path name, since Windows does not recursively replace environment variables.

Directory setup in Visual Studio
Some search path of Visual Studio need to be set. To change them, use the menu ''Tools→Options→Directory

Includes
Add the following search path to the include path search list:
 * %FREECADLIB%\include
 * %FREECADLIB%\include\Python
 * %FREECADLIB%\include\boost
 * %FREECADLIB%\include\xercesc
 * %FREECADLIB%\include\OpenCascade
 * %FREECADLIB%\include\OpenCV
 * %FREECADLIB%\include\Coin
 * %FREECADLIB%\include\SoQt
 * %FREECADLIB%\include\QT
 * %FREECADLIB%\include\QT\Qt3Support
 * %FREECADLIB%\include\QT\QtCore
 * %FREECADLIB%\include\QT\QtGui
 * %FREECADLIB%\include\QT\QtNetwork
 * %FREECADLIB%\include\QT\QtOpenGL
 * %FREECADLIB%\include\QT\QtSvg
 * %FREECADLIB%\include\QT\QtUiTools
 * %FREECADLIB%\include\QT\QtXml
 * %FREECADLIB%\include\Gts
 * %FREECADLIB%\include\zlib

Libs
Add the following search path to the lib path search list:
 * %FREECADLIB%\lib

Executables
Add the following search path to the executable path search list:
 * %FREECADLIB%\bin
 * TortoiseSVN binary installation directory, usually "C:\Programm Files\TortoiseSVN\bin", this is needed for a distribution build when SubWVRev.exe is used to extract the version number from Subversion.

Python needed
During the compilation some Python scripts get executed. So the Python interpreter has to function on the OS. Use a command box to check it. If the Python library is not properly installed you will get an error message like Cannot find python.exe. If you use the LibPack you can also use the python.exe in the bin directory.

Special for VC8
When building the project with VC8, you have to change the link information for the WildMagic library, since you need a different version for VC6 and VC8. Both versions are supplied in LIBPACK/dll. In the project properties for AppMesh change the library name for the wm.dll to the VC8 version. Take care to change it in Debug and Release configuration.

Compile
After you conform to all prerequisites the compilation is - hopefully - only a mouse click in VC

After Compiling
To get FreeCAD up and running from the compiler environment you need to copy a few files from the LibPack to the bin folder where FreeCAD.exe is installed after a successful build:


 * python.exe and python_d.exe from LIBPACK/bin
 * python25.dll and python25_d.dll from LIBPACK/bin
 * python25.zip from LIBPACK/bin
 * make a copy of Python25.zip and rename it to Python25_d.zip
 * QtCore4.dll from LIBPACK/bin
 * QtGui4.dll from LIBPACK/bin
 * boost_signals-vc80-mt-1_34_1.dll from LIBPACK/bin
 * boost_program_options-vc80-mt-1_34_1.dll from LIBPACK/bin
 * xerces-c_2_8.dll from LIBPACK/bin
 * zlib1.dll from LIBPACK/bin
 * coin2.dll from LIBPACK/bin
 * soqt1.dll from LIBPACK/bin
 * QtOpenGL4.dll from LIBPACK/bin
 * QtNetwork4.dll from LIBPACK/bin
 * QtSvg4.dll from LIBPACK/bin
 * QtXml4.dll from LIBPACK/bin

When using a LibPack with a Python version older than 2.5 you have to copy two further files:
 * zlib.pyd and zlib_d.pyd from LIBPACK/bin/lib. This is needed by python to open the zipped python library.
 * _sre.pyd and _sre_d.pyd from LIBPACK/bin/lib. This is needed by python for the built in help system.

If you don't get it running due to a Python error it is very likely that one of the zlib*.pyd files is missing.

Alternatively, you can copy the whole bin folder of libpack into bin folder of the build. This is easier, but takes time and disk space. This can be substited by making links instead of copying files, see CompileOnWindows - Reducing Disk Footprint.

Additional stuff
If you whant to build the source code documentation you need DoxyGen.

To create an intstaller package you need WIX.

During the compilation some Python scripts get executed. So the Python interpreter has to work properly.

For more details have also a look to README.Linux in your sources.

First of all you should build the Qt plugin that provides all custom widgets of FreeCAD we need for the Qt Designer. The sources are located under //src/Tools/plugins/widget//. So far we don't provide a makefile -- but calling qmake plugin.pro creates it. Once that's done, calling make will create the library //libFreeCAD_widgets.so//. To make this library known to your Qt Designer you have to copy the file to //$QTDIR/plugin/designer//.