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 (o VC++ Express) 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.

Otros prerequisitos (y programas útiles) son: cMake TortoiseGit Python 2.6 WiX (Windows installer XML v3.0) - si quieres crear un instalador msi También es necesario tener, en las rutas de tu sistema, las rutas de: Libpack git (no tortoiseGit, sino git.exe) python

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
El primer paso para construir FreeCAD con cMake es configurar el entorno. Hay básicamente dos modo de hacerlo:
 * Utilizando LibPack
 * Instalando todas las bibliotecas necesarias y permitiendo a cMake encontrarlas

En el primer caso solo necesitas indicarle a cMake la ruta de LibPack y todo el resto debería estar hecho de forma automática y veras una pantalla como esta:

Puedes ver la ruta de LibPack insertada dentro de la variable FREECAD_LIBPACK_DIR. Empezando desde aquí todo incluidas las rutas están definidas. Solamente necesitas presionar el botón Generate' y los archivos del proyecto se generarán.

Si desactivas las opciones FREECAD_LIBPACK_USE, la configuración trata de encontrar cada biblioteca necesaria en tu sistema. Dependiendo de las que las bibliotecas funcionen más o menos bien. De modo que definir frecuentemente algunas rutas a mano. cMake te mostrará lo que no se encuentra y es necesario que sea especificado.

Opciones para el proceso de construcción
El sistema de construcción de cMake nos ofrece mucha más flexibilidad sobre el proceso de construcción. Eso significa que podemos activar y desactivar algunas características o módulos. De un modo similar a la construcción del kernel de Linux. Tienes un montón de conmutadores para determinar el proceso de construcción.

Aquí está la descripción de esos conmutadores. Permitirán principalmente hacer muchos cambios en el futuro porque queremos incrementar la flexibilidad de la construcción mucho más.

Procedimiento con cMake y Visual Studio 2008
Una vez que inicias el entorno gráfico de usuario de cMake, selecciona el directorio del código fuente, añade el directorio de destino y pulsa en "Configurar". cMake solicitará que selecciones un generador - el recomendado para FreeCAD es "Visual Studio 9 2008".

Después de pulsar en "Siguiente", cMake mostrará errores ya que no puede encontrar LibPack. Tienes que seleccionar manualmente el directorio en el que está Libpack en la variable "FREECAD_LIBPACK_DIR". Después pulsa en "Configurar" otra vez. Una vez termine la configuración, pulsa en "Generar". Ahora has acabado con cMake, y lo puedes cerrar.

Anmtes de utilizar Visual Studio, necesitamos añadir Libpack a las rutas del sistema (sólo tendrás que hacerlo una vez, cuando lo construyas por primera vez). Tienes que ir a "Panel de control >> Sistema>> Configuración avanzada del sistema". En el letrero de diálogo de las "Propiedades del sistema", bajo la pestaña "Avanzadas" está el botón "Variables de entorno". Pulsa sobre el.

Después de pulsar sobre el botón anterior, añade Libpack a las rutas del sistema. Para separarlo de otras rutas usa un ";".

Ahora tienes que iniciar Visual Studio 2008. Visual C++ Express 2008 también funcionará. Antes de construir, es un buen procedimiento copiar el directorio bin de libpack\bin al directorio bin de los archivos de construcción (generados con cMake).

Después ve a "Archivo>> Abrir >> Proyecto/Solución". Necesitas abrir FreeCAD_Trunk.sln, de los archivos de construcción generados con cMake.

Una vez esté abierto, habrá tres menús en la barra de herramientas. Uno de ellos dice "Depurar" - cámbialo a "Release".

Luego ejecuta "Construir>> Construir solución" (o simplemente pulsa F7) - este proceso puede tardar bastante tiempo.

Una vez termine, selecciona "Depurar >> Iniciar sin depuración". Una ventana solicitará que selecciones el archivo exe. Pulsa en el menú bajo "Nombre del archivo ejecutable" y selecciona "Explorar". Tienes que ir al directorio \bin donde están los archivos de código fuente, y seleccionar "FreeCAD.exe"

y ya has terminado!

Construcción desde la línea de comandos
Aquí está un ejemplo de cómo construir FreeCAD desde la línea de comandos:

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

Utilizando LibPack
Para hacer más sencillo tener FreeCAD compilado, proporcionamos una colección de todas las librerías necesarias. Se llama LibPack. Puedes encontrarlas en la página de descargas en Sourceforge.

Necesitas establecer las siguientes variables de entorno:


 * FREECADLIB = "D:\Wherever\LIBPACK"


 * QTDIR = "%FREECADLIB%"

Añadir "%FREECADLIB%\bin" y "%FREECADLIB%\dll" a la variable de sistema PATH. Recuerda que tienes que reemplazar "%FREECADLIB%" con el nombre de la ruta, ya que Windows no reemplaza recursivamente las variables de entorno.

Directorio de setup en Visual Studio
Es necesario definir algunas rutas de búsqueda en Visual Studio. Para cambiarlas, utiliza el menú ''Tools→Options→Directory

Include
Añade las siguientes rutas de búsqueda a la lista de rutas de búsqueda de include:
 * %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
Añade las siguientes rutas de búsqueda a la lista de rutas de búsqueda de lib:
 * %FREECADLIB%\lib

Executables
Añade las siguientes rutas de búsqueda a la lista de rutas de búsqueda de executable:
 * %FREECADLIB%\bin
 * TortoiseSVN directorio de instalación binario, normalmente "C:\Programm Files\TortoiseSVN\bin", este es necesario para una construcción de distribución cuando SubWVRev.exe se utiliza para extraer el número de versión de Subversion.

Necesidades de Python
Durante la compilación se ejecutan algunos archivos de guión en Python. De modo que el interprete de Python tiene que funcionar en el OS. Utiliza un comando para comprobarlo. Si no lo encuentra indicará algo similar a Cannot find python.exe. Si utilizas LibPack también puedes usar python.exe en el directorio bin.

Especial para VC8
Cuando se construye el proyecto con VC8, tienes que cambiar la información vinculada para la librería WildMagic, ya que necesitas una versión diferente para VC6 y VC8. Ambas versiones están suministradas en LIBPACK/dll. En las propiedades del proyecto para AppMesh cambia el nombre de la biblioteca wm.dll a la versión de VC8. Ten cuidado de cambiarla en Debug y configuración de la versión.

Compilación
Después de que ajustes todos los pre-requisitos la compilación está - esperemos - solo a un clic de ratón en VC ;-)

Después de compilar Compiling
Para tener FreeCAD funcionando desde el entorno de compilación necesitas copiar unos cuantos archivos de LibPack al directorio bin donde FreeCAD.exe está instalado después de una construcción satisfactoria:


 * python.exe y python_d.exe de LIBPACK/bin
 * python25.dll y python25_d.dll de LIBPACK/bin
 * python25.zip de LIBPACK/bin
 * Haz una copia de Python25.zip y renombralo a Python25_d.zip
 * QtCore4.dll de LIBPACK/bin
 * QtGui4.dll de LIBPACK/bin
 * boost_signals-vc80-mt-1_34_1.dll de LIBPACK/bin
 * boost_program_options-vc80-mt-1_34_1.dll de LIBPACK/bin
 * xerces-c_2_8.dll de LIBPACK/bin
 * zlib1.dll de LIBPACK/bin
 * coin2.dll de LIBPACK/bin
 * soqt1.dll de LIBPACK/bin
 * QtOpenGL4.dll de LIBPACK/bin
 * QtNetwork4.dll de LIBPACK/bin
 * QtSvg4.dll de LIBPACK/bin
 * QtXml4.dll de LIBPACK/bin

Cuando se utiliza LibPack con una versión de Python anterior a la 2.5 tienes que copiar los siguientes archivos:
 * zlib.pyd y zlib_d.pyd de LIBPACK/bin/lib. Estos se necesitan por Python para abrir la biblioteca de Python comprimida.
 * _sre.pyd y _sre_d.pyd de LIBPACK/bin/lib. Estos se necesitan por Python para la construcción en el sistema de ayuda.

Si no consigues ejecutarlo debido a un error en Python es bastante probable que uno de los archivos zlib*.pyd no se pueda localizar.

Material adicional
Si quieres construir la documentación del código fuente necesitas DoxyGen.

Para crear un paquete de instalación necesitas WIX.

Durante la compilación se ejecutan algunos archivos de guión en Python. De modo que el interprete de Python tiene que funcionar correctamente.

Para obtener más detalles echa un vistazo al README.Linux en tus fuentes.

Antes de nada deberías construir el plugin Qt que proporciona todos los widgets personalizados de FreeCAD que necesitamos para el Qt Designer. Las fuentes se encuentran en //src/Tools/plugins/widget//. De momento no proporcionamos un -- pero ejecutando qmake plugin.pro se crea. Una vez hecho, llamando a make se creará la biblioteca //libFreeCAD_widgets.so//. Para hacer que esta biblioteca sea conocida por Qt Designer tienes que copiar el archivo a //$QTDIR/plugin/designer//.