CompileOnUnix/es

En distribuciones recientes de linux, FreeCAD es sencillo de construir, ya que todas las dependencias usualmente las provee el administrador de paquetes. Básicamente involucra 3 pasos:


 * 1) Conseguir el código fuente de FreeCAD
 * 2) Conseguir as dependencias (paquetes en los que FreeCAD depende)
 * 3) Compilar con "cmake . && make"

Debajo encontrarás explicaciones detalladas sobre todo el proceso y peculiaridades que puedas encontrar. Si encuentras que algo está mal o no está actualizado en el texto debajo (distribuciones Linux cambian frecuentemente), o si usas una distribución que no está listada, por favor ayúdanos a corregirlo.

Obteniendo el código fuente
Antes de que puedas compilar FreeCAD, necesitas el código fuente. Hay 3 maneras de conseguirlo:

Git
La mejor y más rápida manera de conseguir el código es clonando el repositorio Git de sólo-lectura (necesitas el instaler el paquetegit): Esto colocará una copia de la versión más reciente del código fuente FreeCAD en un nuevo directorio llamado "free-cad-code". La primera vez que intentes conectarte al host free-cad.git.sourceforge.net recibirás un mensaje solicitando que autentifiques la clave SSH de sourceforge, la cual es normalmente segura de aceptar (puedes checar sus claves SSH en la página web de sourceforge si no estás seguro)

Github
Siempre hay un repositorio actualizado de FreeCAD en Github: github.com/FreeCAD/FreeCAD_sf_master

Paquete fuente
De manera alternativa, puedes descargar un paquete fuente, pero podrían ser bastante viejos por lo que es mejor conseguir las fuentes más recientes vía git o github. Dependiendo de tu distribución, hay diversas maneras de obtener un paquete fuente:


 * Paquetes oficiales de FreeCAD (independientes de distribución): https://sourceforge.net/projects/free-cad/files/FreeCAD%20Source/
 * Debian: http://packages.debian.org/source/sid/freecad
 * Ubuntu: http://packages.ubuntu.com/source/precise/freecad

Obteniendo las dependencias
Para compilar FreeCAD en Linux tienes que instalar todas las librerías mencionadas en Third Party Libraries primero. En distribuciones recientes, generalmente es cuestión de instalar unos cuantos paquetes:

Debian y Ubuntu
En sistemas basados en Debian (Debian, Ubuntu, Mint, etc...) es muy fácil instalar todas las dependencias requeridas. La mayoría de las librería están disonibles vía apt-get o synaptic package manager. Debajo están listados todos los paquetes que necesitas instalar. Observa que si no utilizas la versión más reciente de tu distribución, algunos de los paquetes debajo pueden estar ausentes de tus repositorios. En ese caso ve la sección de Distribuciones antiguas y no convencionales debajo. Instrucciones adicionales para libcoin80-dev Debian wheezy-backports, unstable, testing, Ubuntu 13.10 en adelante

Opcionalmente también puedes instalar estos paquetes:

Fedora
Necestias los siguientes paquetes: Y opcionalmente: Contruir FreeCAD con coin3 aún es tardado en Fedora, pues solamente coin2 está disponible en los reositorios oficiales, pero si aún lo deseas, puedes evitar reconstruir toda la suite de coin3 / soqt / pivy instalando los paquetes coin3-ready desde http://www.zultron.com/rpm-repo/

Fedora 20
Instala los repositorios Fedora "free" y "nonfree":

Ahora, instala los paquetes requeridos:

Crea un enlace simbólico para que cmake pueda encontrar los archivos de Coin/Inventor:

Descarga la tarball para SoQt-1.5.0-10:

Compila SoQt:

Descarga, construye e instala pivy:

Ir a Compilar FreeCAD

Gentoo
Necesitas los siguientes paquetes para contruir FreeCAD: Ya que el opencascade más reciente no está disponible, quizás quieras compilar opencascade también, para ello las siguientes librerías son requeridas:

OpenSUSE
Necesitas los siguientes paquetes: For FreeCAD 0.14 stable and 0.15 unstable you need to add Eigen3 and swig libraries, that don't seem to be in standard repos. You can get them with one-click install here: También, ten en cuenta que la librería Eigen3 de Factory Education estaba ocasionando problemas a veces, así que utiliza aquella del repositorio KDE 4.8 Extra

Distribuciones antiguas y no convencionales
En otras distribuciones, tenemos muy poca retroalimentación de los usuarios, así que podría ser más difícil encontrar los paquetes requeridos. Intenta primero encontrar las librería mencionadas en Third Party Libraries. Considera que algunas de ellas pueden tener un nombre ligeramente diferente en tu dsitribución (tal como name, libname, name-dev, etc...)

Necesitas también el compilador GNU gcc de versión 3.0.0 o superior. g++ también es requerido porque FreeCAD está escrito completamente en C++. Durante la instalación algunos scripts de Python son ejecutados. Por lo que el interretador de Python debe funcionar apropiadamente. Para evitar problemas durante el proceso de construcción, es una buena idea tener las ubicaciones de las librerías en tu variable "LD_LIBRARY_PATH" o en tu archivo "ld.so.conf". Normalmente esto ya es el caso en las distribuciones recientes.

Para más detalles echa un vistazo a "README.Linux" en tus fuentes.

Debajo hay información adicional para algunas librería que podrían no estar presentes en los repositorios de tu distribución.

Eigen 3
La librería Eigen3 es requerida por el módulo Sketcher. Esta librería está disponible únicamente a partir de los repositorios de Ubuntu 11.10. Para versiones anteriores de Ubuntu, puedes ya sea descargarlo de aquí e instalarlo manualmente, o agregar el PPA de Construcciones Diarias de FreeCAD a tus fuentes de software antes de instalarlo a través de alguno de los medios listado abajo.

OpenCASCADE community edition (OCE)
Recientemente OpenCasCade ha sido bifurcado (le han hecho fork) en Community edition, que es mucho más fácil de construir. FreeCAD puede utilizar cualquier versión instalada en tu sistema, ya sea la edición "oficial" o la edición de comunidad. El sitio web de OCE contiene instrucciones detalladas de como construirlo.

OpenCASCADE oversion oficial
Nota: Se te recomienda que uses la edición community de OpenCasCade, que es mucho más fácil de construir, pero ésta también sirve.

No todas las distribuciones de Linux tienen un paquete oficial de OpenCASCADE en sus repositorios. Debes de checar tú mismo si hay uno disponible para tu distribución. A partir de Debian Lenny y Ubuntu Intrepid se provee un paquete .deb oficial. Para versiones de Debian y Ubuntu anteriores, podrías obtener paquetes no oficiales de aquí. Para construir tu propio paquete .deb privado sigue estos pasos: Alternativamente, puedes descargar y compilar la versión más reciente desde opencascade.org:

Instala los paquetes normalmente, ten en cuenta que el instalador es un programa java que requiere el java official runtime edition de Sun (nombre del paquete: sun-java6-jre), no la versión open-source (gij) que viene incluída en Ubuntu. Instálalo si lo requieres. Ten cuidado, si utiilzas gij java con alguna otra cosa como un plugin, ya no funcionarán. Si el instalador no funciona, intenta: Una vez instalado el paquete, dirígete al directiorio "ros" dentro de opencascade dir, y ejecuta: Ahora puedes construirlo. Regresa a la carpeta ros y haz: Tomará mucho tiempo, inclusive varias horas.

Cuando terminae, instálalo haciendo: Las librerías serán copiadas a /usr/local/lib, lo cúal está bien, ya que serán encontradas automáticamente por cualquier programa. Alternativamente, también puedes hacer: que hará lo mismo que make install, pero creará una entrada en tu administrador de paquetes para que puedes desinstalarlo fácilmente. Ahora elimina la enorme cantidad de archivos temporales de compilación mediante: Posible error 1: Si está utilizando OCC versión 6.2, es probable que el compilador se detenda justo después de iniciar la operación "make". Si esto sucede, edita el script "configure", ubica la indicación CXXFLAGS="$CXXFLAGS " y reemplázala con CXXFLAGS="$CXXFLAGS -ffriend-injection -fpermissive". Después, intenta de nuevo.

Possible error 2: Posiblemente, varios módulos (WOKSH, WOKLibs, TKWOKTcl, TKViewerTest and TKDraw) se quejarán de que no pueden encontrar los headers tcl/tk, En ese caso, ya que la opción no se ofrece en el script de configuración, deberas editar manualmente el makefile de cada módulo: Dirígete a adm/make y dentro de cada módulo edita el Makefile. Localiza las líneas CSF_TclLibs_INCLUDES = -I/usr/include y CSF_TclTkLibs_INCLUDES = -I/usr/include y agrega /tcl8.4 y /tk8.4 para que lea: CSF_TclLibs_INCLUDES = -I/usr/include/tcl8.4 y CSF_TclTkLibs_INCLUDES = -I/usr/include/tk8.4

SoQt
La librería SoQt debe ser compilada con Qt4, lo que es el caso en las distribuciones más recientes. Al momento de escribir esto, solamente existen paquetes SoQt4 para Debian. Para obtener los paquetes sigue los siguientes pasos: Si estás en un sistema de 64 bits, necesitarás reemplazar i386 por amd64.

Pivy
Pivy no es necesario para construir FreeCAD o ejecutarlo, pero es requerido para que el módulo 2D Drafting funcione. Si no planeas utilizar este módulo, no necesitas pivy. En e momento de escribir esto, Pivy es muy reciente y puede que no esté en los repositorios de tu distribución. Si no puedes encontrarlos, puedes descargar los paquetes debian/ubuntu en la página de descargas de FreeCAD:

http://sourceforge.net/projects/free-cad/files/FreeCAD%20Linux/

O compila pivy tú mismo:

Pivy instrucciones de compilación

Utilizando cMake
cMake es un nuevo sistema de construcción que tiene la gran ventaja de ser común en diferentes sistemas (Linux, Windows, MacOSX, etc). FreeCAD está utilizando el sistema cMake como el sistema principal de construcción. Compilar con cMake es usualmente simple y sucede en dos pasos. En el primero, cMake revisa que todos los programas y librerías estén presentes en tu sistema y prepara todo lo necesario para la compilación subsecuente. Te son dadas algunas alternativas detalladas debajo, pero FreeCAD trae consigo defaults sensibles. El segundo paso es la compilación misma, la cual produce el ejecutable FreeCAD.

Dado que FreeCAD es una aplicación pesada, compilarlo tomará un poco de tiempo (alrededor de 10 minutos en una máquina rápida, 30 minutos en una máquina lenta)

Construyendo en la fuente
Freecad puede ser construido en la fuente, lo que significa que todos los archivos resultantes de la compilación permanecen en la misma carpeta que el código fuene. Esto está bien si solamente estás probando FreeCAD, y quieres ser capaz de removerlo fácilmente con solo eliminar la carpeta. Pero si planeas compilar frecuentemente, se te recomienda crear una construcción fuera de la fuente, lo que ofrece varias ventajas. Los siguientes comandos compilarán FreeCAD:

Si instalaste pivy desde la fuente, indica al compilador que utilice el pivy correcto (vía FREECAD_USE_EXTERNAL_PIVY=1). También, pon el modo de construcción en debug. (NOTA: el "." y espacio después de las instrucciones cmake son CRÍTICAS):

Tu ejecutable FreeCAD residirá entonces en la carpeta "bin", y podrás ejecutarlo con:

Construir fuera de la fuente
Si pretendes seguir la ráida evolución de FreeCAD, construir en una carpeta separada es mucho más conveniente. Cada vez que actualices el código fuente, cMake distinguirá inteligentemente que archivos han cambiado y recompilará solamente aquello que sea necesario. Construcciones fuera de la fuente son especialmente útiles al utilizar el sistema Git, ya que puedes probar fácilmente otras ramas sin confundir el sistema de construcción. Para construir fuera de la fuente, simplemente crea un directorio de construcción, distinto a tu carpeta fuente de freecad, y, desde la carpeta de construccion, indícale a cMake la carpeta fuente: El ejecutable FreeCAD residirá en el directorio "bin" (dentro de tu directorio de construcción).

Configuration options
There are a number of experimental or unfinished modules you may have to build if you want to work on them. To do so, you need to set the proper options for the configuration phase. Do it either on the command line, passing -D : = options to cMake or using one of the availables gui-frontends (eg for Debian, packages cmake-qt-gui or cmake-curses-gui).

As an example, to configure on the command line with the Assembly module built, issue: Possible options are listed in FreeCAD's root CmakeLists.txt file.

Using autotools
Autotools is in the process of being deprecated in favor of cMake, but at the moment it is still available to build FreeCAD. You must have automake and libtool installed on your system; on Debian/Ubuntu: If you got the sources with git or subversion, then the very first step must be that creates the configure script and more. For the build process itself we provide a configure script. Just type To get everything configured. If you want an overview of all options you can specify, you can type Normally you need none of them - unless you have one of your libraries installed in a really uncommon directory. After configuration has finished, compiling FreeCAD is as simple as If any error occurs while building from sources, please double-check this page and README.Linux file, then you could jump to the Bug Tracker on SourceForge, choose Any for status and click the Browse button to see previous reports on compile problems. After having built FreeCAD successfully, do to install it onto your machine. The default install directory is It will be installed in a FreeCAD folder in your home folder, so you don't need root privileges. Instead of make install, you can also do In this way FreeCAD will be installed by your package management system, so you can uninstall it easily later. But since all of FreeCAD installation resides into one single directory, just removing the FreeCAD directory is a valid way to uninstall too.

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. To make this library known to Qt Designer you have to copy the file to $QTDIR/plugin/designer

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

Making a debian package
If you plan to build a Debian package out of the sources you need to install those packages first: To build a package open a console, simply go to the FreeCAD directory and call Once the package is built, you can use lintian to check if the package contains errors lintian your-fresh-new-freecad-package.deb (replace by the name of the package you just created)

Note for 64bit systems
When building FreeCAD for 64-bit there is a known issue with the OpenCASCADE 64-bit package. To get FreeCAD running properly you might need to run the ./configure script with the additional define _OCC64 set: For Debian based systems this workaround is not needed when using the prebuilt package because there the OpenCASCADE package is built to set internally this define. Now you just need to compile FreeCAD the same way as described above.

Automake macros
The configure script of FreeCAD makes use of several automake macros that are sometimes not installed with their packages: bnv_have_qt.m4, coin.m4, and soqt.m4. If needed (error while configuring), google for them and you will find them easily. They are just simple scripts that you need to put in your /usr/share/aclocal folder.

Fedora 13
To build & install FreeCAD on Fedora 13, a few tips and tricks are needed:
 * Install a bunch of required packages, most are available from the Fedora 13 repositories
 * Download and build xerces
 * Download and build OpenCascade. Need to point it to xmu: ./configure --with-xmu-include=/usr/include/X11/Xmu --with-xmu-library=/usr/lib
 * Download and build Pivy. You have to remove 2 references to non existent "SoQtSpaceball.h" from pivy/interfaces/soqt.i Commenting out those two lines allow the build & install to work.
 * Configure Freecad. You will need to point it to a few things: ./configure --with-qt4-include=/usr/include --with-qt4-bin=/usr/lib/qt4/bin --with-occ-lib=/usr/local/lib --with-occ-include=/usr/local/inc --with-xercesc-lib=/usr/local/lib
 * make - hits a problem where the build is breaking because the ldflags for soqt are set to "-LNONE" which made libtool barf. My hackish workaround was to modify /usr/lib/Coin2/conf/soqt-default.cfg so that the ldflags are "" instead of "-LNONE". After this -> success !
 * make install

Ubuntu Lucid
In Ubuntu Lucid, you don't need the qtwebkit-dev, since it is included into qt4-dev.

Automatic build scripts
Here is all what you need for a complete build of FreeCAD. It's a one-script-approach and works on a fresh installed distro. The commands will ask for root password (for installation of packages) and sometime to acknowledge a fingerprint for an external repository server or https-subversion repository. This scripts should run on 32 and 64 bit versions. They are written for distinct version, but are also likely to run on a later version with or without minor changes.

If you have such a script for your preferred distro, please send it! We will incorporate it into this article.

Note that this script starts by adding the FreeCAD Daily Builds PPA repository so it can proceed with the Eigen3 library (libeigen3-dev) installation. If you already have this library installed on your system, you can remove the first line.

OpenSUSE 12.2
No external Repositories are needed to compile FreeCAD 0.13 with this release. However, there is an imcompatability with python3-devel which needs to be removed. FreeCAD can be compiled from GIT similar to in 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

OpenSUSE 12.1
For FreeCAD 0.13 unstable you need to add Eigen3 and swig libraries, that don't seem to be in standard repos. You can get them with one-click install here:

Eigen3: http://software.opensuse.org/search?q=eigen3&baseproject=openSUSE%3A12.1&lang=en&exclude_debug=true

swig: http://software.opensuse.org/search?q=swig&baseproject=openSUSE%3A12.1&lang=en&exclude_debug=true 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

OpenSuse 11.2
This script is not working at the moment because:
 * libXerces-c-devel seams to be disappeared ....

Updating the source code
FreeCAD development happens fast, everyday or so there are bug fixes or new features. The cmake systems allows you to intelligently update the source code, and only recompile what has changed, making subsequent compilations very fast. Updating the source code with git or subversion is very easy: Move into the appropriate build directory and run cmake again (as cmake updates the version number data for the Help menu, ...about FreeCAD), however you do not need to add the path to source code after "cmake", just a space and a dot: