Compile on Windows/es

Este artículo explica paso a paso cómo compilar FreeCAD en Windows.

Pre-requisitos
Lo que necesitas es principalmente el compilador. En Windows utilizamos el compilador M$ VisualStudio 8 con el último service pack. Aunque es probablemente posible utilizar Cygwin o MingW gcc no está comprobado o portado de momento. También lo hemos portado a utilizar VC8 Express Edition. Necesitas descargar el Windows Platform SDK para tener e.g. el Windows.h. También necesitas todas las you need all the Bibliotecas de terceros para compilar FreeCAD satisfactoriamente.

Si utilizar los compiladores de M$ lo más probable es que quieras descargar FreeCAD LibPack que te proporciona todas las bibliotecas necesarias para construir FreeCAD en Windows.

Construcción con cMake
Antes de nada, tienes que descargar cMake e instalarlo en tu equipo.

El cambio a cMake
Desde la versión 0.9 utilizamos el sistema de construcción cMake para generar los archivos build/make para varios compiladores. No proporcionaremos más archivos .vcproj. Si quieres construir versiones antiguas de FreeCAD (0.8 y anteriores) mira "Construcción de versiones antiguas" más adelante en este artículo.

Hemos cambiado porque se hacía cada vez más desagradable mantener archivos de proyectos para más de 30 tipos de construcción y x compiladores. cMake nos ofrece la posibilidad de soportar IDEs alternativos, como Code::Blocks, Qt Creator y Eclipse CDT el principal compilador que utilizamos sigue siendo M$ VC9 Express. Pero hemos planificado para el futuro un sistema de construcción en Windows sin ningún software de compilación propietario.

Configurar el sistema de construcción
The first step to build FreeCAD with cMake is to configure the environment. There are basically two ways to go:
 * Using the LibPack
 * Installing all needed libs and let cMake find them

In the first case you only need to give cMake the path to the LibPack and all the rest should be done automatically and you see such a screen:

You see the LibPack path inserted into the FREECAD_LIBPACK_DIR variable. Starting from that all includes and paths are set. You just need to press the Generate button and the project files get generated.

If you switch the FREECAD_LIBPACK_USE options off, the configuration tries to find each and every library needed on your system. Depending on the libs that works well more or less. So you have to do often define some paths by hand. cMake will show you what is not found and need to be specified.

Options for the Build Process
The cMake build system gives us a lot more flexibility over the build process. That means we can switch on and off some features or modules. It's in a way like the Linux kernel build. You have a lot switches to determine the build process.

Here is the description of these switches. They will most likely change a lot in the future because we want to increase the build flexibility a lot more.

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

rem @echo off rem  Build script, uses vcbuild to completetly build FreeCAD rem update trunc d: cd "D:\_Projekte\FreeCAD\FreeCAD_0.9" "C:\Program Files (x86)\Subversion\bin\svn.exe" update rem set the aprobiated Variables here or outside in the system set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem set INCLUDE= set LIB= rem Register VS Build programms call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" rem Set Standard include paths set INCLUDE=%INCLUDE%;%FrameworkSDKDir%\include set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include rem Set lib Pathes set LIB=%LIB%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib set LIB=%LIB%;%PROGRAMFILES%\Microsoft Visual Studio\VC98\Lib rem Start the Visuall Studio build process "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" "D:\_Projekte\FreeCAD FreeCAD_0.9_build\FreeCAD_trunk.sln" /useenv

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.

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//.