Compile on Linux/es

This page is for archival purposes only, see the relevant section of the Developers Handbook for up-to-date information.

Vista general

La instalación de FreeCAD en distribuciones Linux recientes consta básicamente de tres pasos:

  1. Obtener el código fuente de FreeCAD.
  2. Obtener las dependencias de FreeCAD.
  3. Compilar FreeCAD.

A continuación, encontrará explicaciones detalladas de todo el proceso, algunos scripts de compilación y particularidades que podría encontrar. Si detecta algún error o información desactualizada en el texto (las distribuciones de Linux cambian con frecuencia), o si utiliza una distribución que no aparece en la lista, comente el problema en el foro [1] y ayúdenos a corregirlo.

Flujo de trabajo general para compilar FreeCAD desde el código fuente. Las dependencias de terceros deben estar en el sistema, así como el propio código fuente de FreeCAD. CMake configura el sistema de manera que con una sola instrucción make se compile todo el proyecto.

Obtención del código fuente

Para interactuar con el código fuente se requiere git. Consulte las instrucciones de su distribución actual sobre cómo instalar sus binarios. Por ejemplo, en distribuciones basadas en Debian, Git se puede instalar mediante el siguiente comando:

sudo apt install git

Para obtener una explicación detallada sobre el proceso de contribución, consulte Gestión del código fuente.

Si solo necesita compilar FreeCAD, la forma más rápida de obtener su código es clonar el repositorio oficial de solo lectura Git. El siguiente comando colocará una copia de la última versión del código fuente de FreeCAD en un nuevo directorio llamado freecad-source.

git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git freecad-source

Obteniendo las dependencias

Para compilar FreeCAD, debe instalar las dependencias necesarias que se mencionan en Bibliotecas de terceros; los paquetes que contienen estas dependencias se enumeran a continuación para diferentes distribuciones de Linux. Tenga en cuenta que los nombres y la disponibilidad de las bibliotecas dependerán de su distribución específica; si su distribución es antigua, es posible que algunos paquetes no estén disponibles o tengan un nombre diferente. En ese caso, consulte la sección Distribuciones antiguas y no convencionales a continuación.

Una vez que haya instalado todas las dependencias, proceda a compilar FreeCAD.

Tenga en cuenta que el código fuente de FreeCAD tiene un tamaño aproximado de 500 MB; puede triplicarse si clona el repositorio Git con todo su historial de modificaciones. Para obtener todas las dependencias, es posible que deba descargar 500 MB o más de archivos nuevos. Al descomprimirlos, estos archivos pueden ocupar 1500 MB o más de espacio. Además, tenga en cuenta que el proceso de compilación puede generar hasta 1500 MB de archivos adicionales, ya que el sistema copia y modifica todo el código fuente. Por lo tanto, asegúrese de tener suficiente espacio libre en su disco duro, al menos 4 GB, antes de intentar la compilación.

Debian y Ubuntu

En sistemas basados ​​en Debian (Debian, Ubuntu, Mint, etc.) es bastante fácil instalar todas las dependencias necesarias. La mayoría de las bibliotecas están disponibles a través de apt o el gestor de paquetes Synaptic.

Si ya ha instalado FreeCAD desde los repositorios oficiales, puede instalar sus dependencias de compilación con esta única línea de código en una terminal:

sudo apt build-dep freecad

Como alternativa, sustituya freecad por freecad-daily para instalar las dependencias de compilación de la rama de desarrollo principal. Deberá añadir los PPA freecad-stable/freecad-daily a sus fuentes de software.

Sin embargo, si la versión de FreeCAD en los repositorios es antigua, las dependencias podrían no ser las adecuadas para compilar una versión reciente de FreeCAD. Por lo tanto, verifique que haya instalado los siguientes paquetes.

Estos paquetes son esenciales para que cualquier compilación se realice correctamente:

  • build-essential, instale los compiladores de C y C++, las bibliotecas de desarrollo de C y el programa make.
  • cmake, herramienta esencial para configurar el código fuente de FreeCAD. También puede instalar cmake-gui y cmake-curses-gui para una interfaz gráfica.
  • libtool, herramientas esenciales para generar bibliotecas compartidas.
  • lsb-release, la utilidad estándar de informes base, normalmente ya está instalada en un sistema Debian y permite distinguir programáticamente entre una instalación Debian pura y una variante, como Ubuntu o Linux Mint. No elimine este paquete, ya que muchos otros paquetes del sistema pueden depender de él.

La compilación de FreeCAD utiliza el lenguaje Python, que también se usa en tiempo de ejecución como lenguaje de scripting. Si utiliza una distribución basada en Debian, el intérprete de Python normalmente ya viene instalado:

  • python3
  • swig, la herramienta que crea interfaces entre código C++ y Python.

Se necesita instalar las bibliotecas Boost:

  • libboost-dev
  • libboost-date-time-dev
  • libboost-filesystem-dev
  • libboost-graph-dev
  • libboost-iostreams-dev
  • libboost-program-options-dev
  • libboost-python-dev
  • libboost-regex-dev
  • libboost-serialization-dev
  • libboost-thread-dev

Deben instalarse las bibliotecas Coin : *libcoin-dev, para Debian Buster, Ubuntu 19.04 y versiones posteriores, así como para Ubuntu 18.04/18.10 con los repositorios PPA freecad-stable/freecad-daily añadidos a sus fuentes de software.

Varias bibliotecas que tratan temas de matemáticas, superficies trianguladas, clasificación, mallas, visión artificial, proyecciones cartográficas, visualización 3D, bibliotecas de nubes de puntos, el sistema de ventanas X11, análisis XML y lectura de archivos Zip:

  • libeigen3-dev
  • libgts-bin
  • libgts-dev
  • libkdtree++-dev
  • libmedc-dev
  • libopencv-dev or libcv-dev
  • libproj-dev
  • libvtk9-dev, libvtk8-dev, libvtk7-dev or libvtk6-dev
  • libx11-dev
  • libxerces-c-dev
  • libyaml-cpp-dev
  • libzipios++-dev
  • libpcl-dev

Python 3 y Qt6

Para compilar FreeCAD para Debian Trixie, instale las siguientes dependencias.

  • pybind11-dev
  • qt6-base-dev
  • qt6-svg-dev
  • qt6-tools-dev
  • qt6-webengine-dev
  • libpyside6-dev
  • libshiboken6-dev
  • pyside6-tools
  • pyqt6-dev-tools
  • python3-dev
  • python3-lark
  • python3-matplotlib
  • python3-packaging
  • python3-pivy
  • python3-ply
  • python3-pyside6.qtcore
  • python3-pyside6.qtgui
  • python3-pyside6.qtnetwork
  • python3-pyside6.qtsvg
  • python3-pyside6.qtwebchannel
  • python3-pyside6.qtwebenginecore
  • python3-pyside6.qtwebenginequick
  • python3-pyside6.qtwebenginewidgets
  • python3-pyside6.qtwidgets

Python 3 y Qt5

Para compilar FreeCAD para Debian Buster, Ubuntu 19.04 y versiones posteriores, así como Ubuntu 18.04/18.10 con los PPA freecad-stable/freecad-daily agregados a sus fuentes de software, instale las siguientes dependencias.

  • qtbase5-dev
  • qttools5-dev
  • qt5-default (if compiling 0.20 on a machine that still has Qt4)
  • libqt5opengl5-dev
  • libqt5svg5-dev
  • qtwebengine5-dev
  • libqt5xmlpatterns5-dev
  • libqt5x11extras5-dev
  • libpyside2-dev
  • libshiboken2-dev
  • pyside2-tools
  • pyqt5-dev-tools
  • python3-dev
  • python3-matplotlib
  • python3-packaging
  • python3-pivy
  • python3-ply
  • python3-pyside2.qtcore
  • python3-pyside2.qtgui
  • python3-pyside2.qtsvg
  • python3-pyside2.qtwidgets
  • python3-pyside2.qtnetwork
  • python3-pyside2.qtwebengine
  • python3-pyside2.qtwebenginecore
  • python3-pyside2.qtwebenginewidgets
  • python3-pyside2.qtwebchannel
  • python3-pyside2uic (not required on Ubuntu 20.04 and later)

Núcleo de OpenCascade

El núcleo de OpenCascade es la biblioteca gráfica principal para crear figuras 3D. Existe en una versión oficial, OCCT, y en una versión comunitaria, OCE. Esta última ya no se recomienda, pues está desfasada.

Para Debian Buster y Ubuntu 18.10 y versiones posteriores, así como Ubuntu 18.04 con los PPA freecad-stable/freecad-daily agregados a sus fuentes de software, instale los paquetes oficiales.

  • libocct*-dev
    • libocct-data-exchange-dev
    • libocct-draw-dev
    • libocct-foundation-dev
    • libocct-modeling-algorithms-dev
    • libocct-modeling-data-dev
    • libocct-ocaf-dev
    • libocct-visualization-dev
  • occt-draw

Para Debian Jessie, Stretch, Ubuntu 16.04 y versiones posteriores, instale los paquetes de la edición comunitaria.

  • liboce*-dev
    • liboce-foundation-dev
    • liboce-modeling-dev
    • liboce-ocaf-dev
    • liboce-ocaf-lite-dev
    • liboce-visualization-dev
  • oce-draw

Puede instalar las bibliotecas individualmente o mediante la expansión con asterisco. Cambir occ por oce si quiere instalar las bibliotecas de la comunidad.

sudo apt install libocct*-dev

Paquetes opcionales

Opcionalmente, también puede instalar estos paquetes adicionales:

  • libsimage-dev, para que Coin admita formatos de archivo de imagen adicionales.
  • doxygen y libcoin-doc (o libcoin80-doc para sistemas más antiguos), si desea generar documentación del código fuente.
  • libspnav-dev, para la compatibilidad con dispositivos de entrada 3D, como el Space Navigator o el Space Pilot de 3Dconnexion.
  • checkinstall, si desea registrar los archivos instalados en el gestor de paquetes de su sistema para poder desinstalarlos posteriormente.

Comando único para Python 3 y Qt5

Requiere Pyside2 disponible en Debian Buster y los PPA freecad-stable/freecad-daily.

sudo apt install cmake cmake-gui libboost-date-time-dev libboost-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-thread-dev libcoin-dev libeigen3-dev libgts-bin libgts-dev libkdtree++-dev libmedc-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-visualization-dev libopencv-dev libproj-dev libpyside2-dev libqt5opengl5-dev libqt5svg5-dev qtwebengine5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libshiboken2-dev libspnav-dev libvtk7-dev libx11-dev libxerces-c-dev libzipios++-dev occt-draw pyside2-tools python3-dev python3-lark python3-matplotlib python3-packaging python3-pivy python3-ply python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtsvg python3-pyside2.qtwidgets python3-pyside2.qtnetwork python3-pyside2.qtwebengine python3-pyside2.qtwebenginecore python3-pyside2.qtwebenginewidgets python3-pyside2.qtwebchannel python3-markdown python3-git python3-pyside2uic qtbase5-dev qttools5-dev swig libyaml-cpp-dev

NOTA: En algunas versiones de Ubuntu y Qt, aparecerá un error que indica que no se encuentra python3-pyside2uic; en esos sistemas, puede omitirlo sin problemas. Si aparece un error que indica que libvtk7-dev no está disponible, utilice libvtk9-dev en su lugar. En Ubuntu 20.04, deberá agregar pyqt5-dev-tools. Puede encontrar más información en esta discusión del foro.

sudo apt install cmake debhelper dh-exec dh-python libboost-date-time-dev libboost-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-thread-dev libcoin80-dev libeigen3-dev libgts-bin libgts-dev libkdtree++-dev libmedc-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-visualization-dev libopencv-dev libproj-dev libpyside-dev libqt4-dev libqt4-opengl-dev libqtwebkit-dev libshiboken-dev libspnav-dev libvtk6-dev libx11-dev libxerces-c-dev libzipios++-dev lsb-release occt-draw pyside-tools python-dev python-matplotlib python-pivy python-ply swig

Los usuarios de Ubuntu 16.04, por favor, consulten también la discusión sobre la compilación en el foro: Compile on Linux (Kubuntu): CMake can't find VTK.

Raspberry Pi

Siga los mismos pasos que en Debian y Ubuntu.

Se han notificado problemas al intentar compilar en Raspberry Pi OS de 32 bits con Python 3 y Qt5, pero la combinación de Python 3 y Qt4 parece funcionar para versiones anteriores de FreeCAD (con problemas menores).

Para las versiones más recientes de FreeCAD (>= 0.20), la compilación con Py3/Qt5 se realiza correctamente si el sistema operativo instalado es Raspberry Pi OS de 64 bits o Ubuntu 20.04.

Debido a diversos problemas con Qt, en Ubuntu 20.04 no se encontrarán las herramientas PySide habituales.

E: Unable to locate package python3-pyside2uic

En este caso, podemos instalar los paquetes de PyQt y crear enlaces simbólicos a las herramientas necesarias.

sudo apt-get install pyqt5-dev
sudo apt-get install pyqt5-dev-tools
cd /usr/bin/
ln -s pyrcc5 pyside2-rcc
ln -s pyuic5 pyside2-uic

Ahora, la compilación puede continuar.

cd build/
cmake ../ -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DUSE_PYBIND11=ON
make -j2

La opción -j para make no debería ser superior a 3, ya que la Raspberry Pi tiene memoria limitada. La compilación tardará varias horas, por lo que es mejor realizarla durante la noche.

Más información, FreeCAD y Raspberry Pi 4.

Fedora

La manera más sencilla de obtener las dependencias en Fedora es usar este comando desde la carpeta de código fuente de FreeCAD:

sudo dnf builddep package/fedora/freecad.spec

Para crear un paquete rpm instalable, utilice uno de los siguientes comandos:

sudo dnf install packit
packit build locally

O más adecuado para el desarrollo sin reconstrucción desde cero:

rpmbuild  --noclean --build-in-place -bb package/fedora/freecad.spec

Gentoo

La forma más sencilla de comprobar qué paquetes se necesitan para compilar FreeCAD es consultarlo a través de Portage:

emerge -pv freecad

Esto debería proporcionarle una buena lista de paquetes adicionales que necesita instalar en su sistema.

Si FreeCAD no está disponible en Portage, lo estará en waebbl overlay. El sistema de seguimiento de incidencias en el repositorio de GitHub de waebbl overlay puede ayudarle a resolver algunos problemas que pueda encontrar. Overlay proporciona freecad-9999, que puede compilar o simplemente usar para obtener las dependencias.

layman -a waebbl

openSUSE

Tumbleweed

Los siguientes comandos instalarán los paquetes necesarios para construir FreeCAD con Qt5 y Python 3.

zypper in --no-recommends -t pattern devel_C_C++ devel_qt5

zypper in libqt5-qtbase-devel libqt5-qtsvg-devel libqt5-qttools-devel boost-devel swig libboost_program_options-devel libboost_mpi_python3-devel libboost_system-devel libboost_program_options-devel libboost_regex-devel libboost_python3-devel libboost_thread-devel libboost_system-devel libboost_headers-devel libboost_graph-devel python3 python3-devel python3-matplotlib python3-matplotlib-qt5 python3-pyside2 python3-pyside2-devel python3-pivy gcc gcc-fortran cmake occt-devel libXi-devel opencv-devel libxerces-c-devel Coin-devel SoQt-devel freetype2-devel eigen3-devel libode6 vtk-devel libmed-devel hdf5-openmpi-devel openmpi2-devel netgen-devel freeglut-devel libspnav-devel f2c doxygen dos2unix glew-devel yaml-cpp

El siguiente comando instalará Qt Creator y el depurador de proyectos GNU.

zypper in libqt5-creator gdb

Si falta algún paquete, puede consultar el archivo Tumbleweed "FreeCAD.spec" en el Open Build Service.

Además, compruebe si hay algún parche que deba aplicar (como 0001-find-openmpi2-include-files.patch).

Leap

Si existe alguna diferencia entre los paquetes disponibles en Tumbleweed y Leap, puede consultar el archivo Leap "FreeCAD.spec" en el Open Build Service para determinar los paquetes necesarios.

Ver piano_jonas guía no oficial "Compilar en openSUSE".

Arch Linux

Necesitará las siguientes bibliotecas de los depósitos oficiales:

  • blosc
  • boost
  • boost-libs
  • cmake
  • coin
  • curl
  • desktop-file-utils
  • eigen
  • fmt
  • git
  • glew
  • hicolor-icon-theme
  • jsoncpp
  • libspnav
  • med
  • netcdf
  • ninja
  • nlohmann-json
  • opencascade
  • pybind11
  • pyside6
  • pyside6-tools
  • python-lark-parser
  • python-matplotlib
  • python-packaging
  • python-pivy
  • python-ply
  • qt6-svg
  • qt6-tools
  • qt6-base
  • qt6-5compat
  • shared-mime-info
  • shiboken6
  • swig
  • vtk
  • verdict
  • xerces-c
  • yaml-cpp
  • fast_float
sudo pacman -S --needed --asdeps blosc boost boost-libs cmake coin curl desktop-file-utils eigen fmt git glew hicolor-icon-theme jsoncpp libspnav med netcdf ninja nlohmann-json opencascade pybind11 pyside6 pyside6-tools python-lark-parser python-matplotlib  python-packaging python-pivy python-ply qt6-svg qt6-tools qt6-base qt6-5compat shared-mime-info shiboken6 swig vtk xerces-c yaml-cpp fast_float

Distribuciones antiguas y no convencionales

En otras distribuciones, tenemos muy pocos comentarios de los usuarios, por lo que podría ser más difícil encontrar los paquetes necesarios.

Primero, intente localizar las bibliotecas necesarias mencionadas en bibliotecas de terceros en su gestor de paquetes. Tenga en cuenta que algunas pueden tener un nombre de paquete ligeramente diferente; busque name, pero también libname, name-dev, name-devel, y similares. Si no es posible, intente compilar esas bibliotecas por usted mismo.

FreeCAD requiere una versión del compilador GNU g++ igual o superior a la 3.0.0, ya que FreeCAD está escrito principalmente en C++. Durante la compilación se ejecutan algunos scripts de Python, por lo que el intérprete de Python tiene que funcionar correctamente. Para evitar cualquier problema con el enlazador también es una buena idea tener las rutas de las bibliotecas en la variable LD_LIBRARY_PATH o en el archivo ld.so.conf. Esto ya se hace en las distribuciones modernas de Linux, pero puede ser necesario configurarlo en las más antiguas.

Pivy

Pivy (un envoltorio de Python para Coin3D) no se necesita para compilar FreeCAD ni para iniciarlo, pero sí como dependencia de tiempo de ejecución para el Entorno de Trabajo de Piezas. Si no va a utilizar este entorno de trabajo, no necesitará Pivy. Sin embargo, tenga en cuenta que este entorno se utiliza internamente por otros entornos de trabajo, como el Entorno de Trabajo de BIM, por lo que Pivy debe estar instalado para utilizar también estos entornos.

A partir de noviembre de 2015 la versión obsoleta de Pivy incluida con el código fuente de FreeCAD ya no compilará en muchos sistemas. Esto no es un gran problema ya que normalmente debería obtener Pivy desde el gestor de paquetes de su distribución; si no puede encontrar Pivy, puede que tenga que compilarlo por su cuenta. Ver Instrucciones de compilación de Pivy.

Símbolos de depuración

Para solucionar problemas de bloqueos en FreeCAD, es útil tener los símbolos de depuración de bibliotecas de dependencia importantes como Qt. Para ello, intente instalar los paquetes de dependencia que terminen en -dbg, -dbgsym, -debuginfo o similares, según su distribución de Linux.

Para Ubuntu, es posible que tenga que habilitar repositorios especiales para poder ver e instalar estos paquetes de depuración con el gestor de paquetes. Consulte Debug Symbol Packages para obtener más información.

Compila FreeCAD

Para compilar FreeCAD 0.20 se requiere al menos Python 3.6 y Qt 5.9.

FreeCAD utiliza CMake como su principal sistema de compilación, ya que está disponible en los principales sistemas operativos. La compilación con CMake es normalmente muy simple y ocurre en dos pasos.

  1. CMake comprueba que todos los programas y bibliotecas necesarios estén presentes en su sistema, y genera un Makefile que se configura para el segundo paso. FreeCAD tiene varias opciones de configuración entre las que elegir, pero viene con unos valores por defecto razonables. Algunas alternativas se detallan a continuación.
  2. La compilación propiamente dicha, que se realiza con el programa make, que genera los ejecutables de FreeCAD.

Dado que FreeCAD es una aplicación de gran tamaño, la compilación de todo el código fuente puede tardar entre 10 minutos y una hora, dependiendo de la CPU y del número de núcleos de la CPU de su sistema utilizados para la compilación.

Compilando

Para compilar, simplemente cree un directorio de compilación, build. Luego, desde este directorio, configure cmake para que apunte a la carpeta de origen correcta. También puede usar cmake-gui o ccmake en lugar de cmake en las instrucciones a continuación. Una vez que cmake termine de configurar el entorno, use make para iniciar la compilación.

# from your freecad-source folder:
mkdir build
cd build
cmake ../
make -j$(nproc --ignore=2)

La opción -j de make controla cuántos trabajos (archivos) se compilan en paralelo. El programa nproc muestra el número de núcleos de CPU de su sistema; al usarlo junto con la opción -j, puede elegir procesar tantos archivos como núcleos tenga, para acelerar la compilación general del programa. En el ejemplo anterior, utilizará todos los núcleos de su sistema excepto dos; esto mantendrá su computadora disponible para otros usos mientras la compilación se realiza en segundo plano. El ejecutable de FreeCAD aparecerá finalmente en el directorio build/bin. Consulte también Compiling (speeding up) para mejorar la velocidad de compilación.

Solución de problemas de cmake

Si ya ha realizado una compilación anteriormente y se queda atascado en una dependencia que no se reconoce o que no parece poder resolverse, pruebe lo siguiente:

Si cmake indica que falta un archivo específico, utilice una herramienta como "apt-file search", o su equivalente en otros sistemas de paquetes, para identificar a qué paquete pertenece dicho archivo e instalarlo. Tenga en cuenta que probablemente necesite la versión -dev del paquete, que contiene los archivos de cabecera o de configuración necesarios para que FreeCAD pueda utilizarlo.

Compilación con GNU libc 2.34 y versiones posteriores

GNU libc 2.34 introduce un cambio en la biblioteca que puede provocar que las compilaciones en algunos sistemas Linux fallen con un error como este:

No rule to make target '/usr/lib/x86_64-linux-gnu/libdl.so

Para resolver esto, se debe crear manualmente un enlace simbólico desde el archivo libdl.so.* instalado en el sistema (ahora vacío) hasta la ubicación donde su compilador indica que está buscando el archivo. Por ejemplo (si la copia instalada de libdl.so en su sistema es /usr/lib/x86_64-linux-gnu/libdl.so.2):

sudo ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2 /usr/lib/x86_64-linux-gnu/libdl.so

Adapte el comando a la estructura de su sistema buscando libdl.so* y creando un enlace con la ubicación adecuada.

Cómo reparar el directorio de código fuente

Si accidentalmente realizó una compilación dentro del directorio del código fuente, o agregó archivos extraños, y desea restaurar el contenido para que solo contenga el código fuente original, puede seguir los siguientes pasos.

> .gitignore
git clean -df
git reset --hard HEAD

La primera línea borra el archivo .gitignore. Esto asegura que los siguientes comandos de limpieza y reinicio afectarán a todo el directorio y no ignorarán los elementos que coincidan con las expresiones en .gitignore. La segunda línea borra todos los archivos y directorios que no son rastreados por el repositorio git; luego el último comando restablecerá cualquier cambio en los archivos rastreados, incluyendo el primer comando que borró el archivo .gitignore.

Si no borra el directorio de origen, las ejecuciones posteriores de cmake podrían no capturar las nuevas opciones del sistema si el código cambia.

Configuración

Pasando diferentes opciones a cmake, puede cambiar cómo se compila FreeCAD. La sintaxis es la siguiente.

cmake -D <var>:<type>=<value> $SOURCE_DIR

Donde $SOURCE_DIR es el directorio que contiene el código fuente. En la mayoría de los casos, se puede omitir <type>. También se puede omitir el espacio después de la opción -D.

Por ejemplo, para evitar construir el Ambiente de Trabajo de MEF:

cmake -D BUILD_FEM:BOOL=OFF ../
cmake -DBUILD_FEM=OFF ../

Todas las variables posibles se enumeran en el archivo InitializeFreeCADBuildOptions.cmake, ubicado en el directorio cMake/FreeCAD_Helpers. En este archivo, busque la palabra option para acceder a las variables que se pueden configurar y poder ver sus valores predeterminados.

# ==============================================================================
# =================   All the options for the build process    =================
# ==============================================================================

option(BUILD_FORCE_DIRECTORY "The build directory must be different to the source directory." OFF)
option(BUILD_GUI "Build FreeCAD Gui. Otherwise you have only the command line and the Python import module." ON)
option(FREECAD_USE_EXTERNAL_ZIPIOS "Use system installed zipios++ instead of the bundled." OFF)
option(FREECAD_USE_EXTERNAL_SMESH "Use system installed smesh instead of the bundled." OFF)
...

Alternativamente, utilice el comando cmake -LH para listar la configuración actual, y por tanto todas las variables que pueden ser modificadas. También puede instalar y utilizar cmake-gui para lanzar una interfaz gráfica que muestra todas las variables que pueden ser modificadas. En las siguientes secciones enumeramos algunas de las opciones más relevantes que puede querer utilizar.

Para una creación de depuración

Crea una compilación Debug para solucionar fallos en FreeCAD. Tenga en cuenta que con esta compilación el Entorno de Trabajo Croquizador se vuelve muy lento con croquis complejos.

cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_BUILD_TYPE=Debug ../

Para una compilación de lanzamiento

Cree una compilación Release para probar el código que no se bloquea. Una compilación Release se ejecutará mucho más rápido que una compilación Debug.

cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_BUILD_TYPE=Release ../

Creación contra Python 3 y Qt5

FreeCAD está migrando a Qt6 y pronto dejará de ser compatible con Qt5 y FREECAD_QT_VERSION establecido en "5".

Para 0.20 y 0.21_dev:

cmake ../

Tenga en cuenta que al cambiar entre las compilaciones 0.20 y 0.21_dev, puede ser necesario eliminar CMakeCache.txt antes de ejecutar cmake.

Compilación para una versión específica de Python

Si el ejecutable python predeterminado en su sistema no es el deseado, puede elegir otra versión de Python proporcionando la ruta a un ejecutable específico a cmake:

cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 ../

Si eso no funciona, es posible que tenga que definir variables adicionales que apunten a las bibliotecas de Python deseadas y a los directorios de inclusión:

cmake -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
    -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m \
    -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so \
    -DPYTHON_PACKAGES_PATH=/usr/lib/python3.6/site-packages/ \
    ../

Es posible tener varias versiones independientes de Python en el mismo sistema, por lo que las ubicaciones y números de versión de sus archivos de Python dependerán de su distribución particular de Linux. Utilice python3 -V para mostrar la versión de Python que está utilizando actualmente; sólo son necesarios los dos primeros números; por ejemplo, si el resultado es Python 3.6.8, necesita especificar los directorios que se refieren a la versión 3.6. Si no conoce los directorios correctos, intente buscarlos con el comando locate.

locate python3.6

Puede utilizar python3 -m site en un terminal para determinar el directorio site-packages, o dist-packages para los sistemas Debian.

Algunos componentes de FreeCAD, como PySide, intentan detectar automáticamente la versión más reciente de Python instalada en su sistema, lo que podría causar fallos si es diferente de la que ingresó anteriormente. Agregar la siguiente opción de cMake podría solucionar el problema:

-DPython3_FIND_STRATEGY=LOCATION

Creación con Qt Creator contra Python 3 y Qt5

1. Inicie Qt Creator.

2. Haga clic en Proyecto Abierto.

3. Navegue hasta el directorio donde está el código fuente, freecad-source/, y elija el archivo CMakeLists.txt más alto.

4. Al seleccionar el archivo, se ejecutará automáticamente cmake en él, pero puede fallar si las opciones apropiadas no están correctamente configuradas.

5. Vaya a Proyectos → Compilación y ejecución → Kit importado → Compilación → Configuración de compilación → CMake. Establezca el directorio de compilación apropiado, build/.

6. Establezca las variables apropiadas en el diálogo Clave-Valor, de tipos String y Bool.

PYTHON_EXECUTABLE=/usr/bin/python3

7. Si las variables no cargan el proyecto correctamente, puede que tenga que ir a Projects → Manage Kits → Kits → Default (o Kit importado o similar) → CMake Configuration. A continuación, pulse Cambiar, y añada la configuración adecuada como se ha descrito anteriormente. Puede que tenga que añadir más variables sobre las rutas de Python, si no se encuentra el Python del sistema.

PYTHON_EXECUTABLE:STRING=/usr/bin/python3.7
PYTHON_INCLUDE_DIR:STRING=/usr/include/python3.7m
PYTHON_LIBRARY:STRING=/usr/lib/x86_64-linux-gnu/libpython3.7m.so
PYTHON_PACKAGES_PATH:STRING=/usr/lib/python3.7/site-packages

7.1. Pulse Aplicar y luego Aceptar.

7.2. Asegúrese de que el resto de las opciones están correctamente configuradas, por ejemplo, Versión de Qt debe ser una versión presente instalada en el sistema, como Qt 5.9.5 en PATH (qt5).

Pulse Aplicar y luego Aceptar para cerrar la configuración.

El programa cmake debería ejecutarse automáticamente de nuevo, y debería rellenar todo el diálogo Clave-Valor con todas las variables configurables.

8. Vaya a Projects → Build & Run → Imported Kit → Run → Run Settings → Run Configuration y elija FreeCADMain para compilar la versión gráfica de FreeCAD, o FreeCADMainCMD para compilar sólo la versión de línea de comandos.

9. Finalmente, vaya al menú Build → Build Project "FreeCAD". Si se trata de una nueva compilación, debería tardar varios minutos, incluso horas, dependiendo del número de procesadores que tenga disponibles.

Complemento de Qt Designer

Si quiere desarrollar código Qt para FreeCAD, necesitará el plugin Qt Designer que proporciona todos los widgets personalizados de FreeCAD.

Acceda a un directorio auxiliar del código fuente y, a continuación, ejecute qmake con el archivo de proyecto indicado para crear un Makefile; luego ejecute make para compilar el complemento.

cd freecad-source/src/Tools/plugins/widget
qmake plugin.pro
make

Si está compilando para Qt5, asegúrase de que el binario qmake es el correspondiente a esta versión, para que el Makefile resultante contenga la información necesaria para Qt5.

cd freecad-source/src/Tools/plugins/widget
$QT_DIR/bin/qmake plugin.pro
make

donde $QT_DIR es el directorio que almacena las bibliotecas binarias de Qt, por ejemplo, /usr/lib/x86_64-linux-gnu/qt5.

La biblioteca creada es libFreeCAD_widgets.so, que debe copiarse en $QT_DIR/plugins/designer.

sudo cp libFreeCAD_widgets.so $QT_DIR/plugins/designer

Pivy externo o interno

Anteriormente, estaba incluida una versión de Pivy en el código fuente de FreeCAD (interno). Si quería usar la copia de Pivy de su sistema (externa), tenía que usar {{{1}}}.

El uso de Pivy externo se convirtió en el valor por defecto durante el desarrollo de FreeCAD 0.16, por lo que ya no es necesario configurar esta opción manualmente.

Documentación de Doxygen

Si tienes Doxygen instalado puedes construir la documentación del código fuente. Consulte documentación de origen para obtener instrucciones.

Documentación adicional

El código fuente de FreeCAD es muy extenso, y con CMake es posible configurar muchas opciones. Aprender a usar CMake completamente puede serle útil para elegir las opciones adecuadas para sus necesidades particulares.

Creando un paquete Debian

Si planea compilar un paquete Debian a partir de las fuentes, necesita instalar primero ciertos paquetes:

sudo apt install dh-make devscripts lintian

Vaya al directorio de FreeCAD y llame a

debuild

Una vez construido el paquete, puede utilizar lintian para comprobar si el paquete contiene errores.

lintian freecad-package.deb

Paquete *.deb con checkinstall

El script de Debian checkinstall permite crear un paquete *.deb que se puede instalar y desinstalar con los comandos estándar dpkg. Es posible que deba instalarse previamente (en Ubuntu, use sudo apt install checkinstall). Es interactivo y solicita la información necesaria, proporcionando valores predeterminados útiles. Durante el proceso, se instala el paquete y se crean un archivo *.deb y un archivo de copia de seguridad.

Es recomendable definir un nombre y una breve descripción para el paquete. El nombre debe introducirse para desinstalarlo, y la descripción aparecerá en la lista con el comando dpkg -l. El nombre predeterminado build no es muy descriptivo.

Ejemplo:

cd freecad-source/build
cmake ..
make
sudo checkinstall                                  # e.g. name=freecad-test1

El resultado es un archivo *.deb en la carpeta de compilación. checkinstall instalará la compilación por defecto. Así es como puede instalarla o desinstalarla:

cd freecad-source/build
ls | grep freecad
        freecad-test1_20220814-1_amd64.deb
sudo dpkg -i freecad-test1_20220814-1_amd64.deb   # install
dkpg -l | grep freecad                            # find by name
sudo dpkg -r freecad-test1                        # uninstall by name

Actualización del código fuente

El sistema CMake permite actualizar de forma inteligente el código fuente, y sólo recompilar lo que ha cambiado, haciendo que las compilaciones posteriores sean más rápidas.

Diríjase a la ubicación donde se descargó por primera vez el código fuente de FreeCAD y descargue el nuevo código:

cd freecad-source
git pull

Luego, diríjase al directorio de compilación donde se compiló el código inicialmente y ejecute cmake especificando el directorio actual (indicado por un punto); luego active la recompilación con make.

cd build
cmake ../
make -j$(nproc --ignore=2)

Desinstalación del código fuente

En caso de que el código fuente compilado se haya instalado con sudo make install (para Debian), los archivos se copiaron a la carpeta /usr/local en varias subcarpetas. Para desinstalar, se puede usar el archivo install_manifest.txt. Este archivo se creó en la carpeta de compilación durante la misma y contiene todos los archivos instalados. Mientras este archivo exista, la instalación se puede desinstalar.

cd freecad-source/build
xargs sudo rm < install_manifest.txt

Solución de problemas

Para sistemas de 64 bits

Al compilar FreeCAD para 64 bits, existe un problema conocido con el paquete OpenCASCADE (OCCT) de 64 bits. Para que FreeCAD funcione correctamente, es posible que deba ejecutar el script configure y establecer CXXFLAGS adicionales:

./configure CXXFLAGS="-D_OCC64"

Para sistemas basados ​​en Debian, esta opción no es necesaria cuando se utilizan los paquetes OpenCASCADE precompilados porque estos establecen internamente los CXXFLAGS adecuados.

Scripts de creación automática

Aquí encontrará todo lo necesario para una instalación completa de FreeCAD. Se trata de un método sencillo con un solo script y funciona en una distribución Linux recién instalada. Los comandos le pedirán la contraseña de administrador para la instalación de paquetes y nuevos repositorios en línea. Estos scripts deberían funcionar en versiones de 32 y 64 bits. Si bien están escritos para distintas versiones, es probable que también funcionen en una versión posterior, con o sin cambios importantes.

Si dispone de un script de este tipo para su distribución preferida, por favor, coméntelo en el foro de FreeCAD para que podamos incorporarlo.

Ubuntu

Estos scripts proporcionan una forma fiable de instalar el conjunto correcto de dependencias necesarias para compilar y ejecutar FreeCAD en Ubuntu. Utilizan los repositorios de paquetes personales (PPA) de Ubuntu y deberían funcionar en cualquier versión de Ubuntu compatible con dichos repositorios. El repositorio freecad-daily es compatible con versiones recientes de Ubuntu, mientras que el repositorio freecad-stable es compatible con versiones de Ubuntu oficialmente soportadas.

Este script instala la instantánea diaria compilada de FreeCAD y sus dependencias. Agrega el repositorio diario, obtiene las dependencias para compilar esta versión e instala los paquetes necesarios. Luego, descargue el código fuente a un directorio específico, cree un directorio de compilación y acceda a este, configure el entorno de compilación con cmake y, finalmente, compile todo el programa con make. Guarde el script en un archivo, hégalo ejecutable y ejecútelo, pero no use sudo; solo se solicitarán privilegios de superusuario para comandos específicos.

#!/bin/sh
sudo add-apt-repository --enable-source ppa:freecad-maintainers/freecad-daily && sudo apt-get update
sudo apt-get build-dep freecad-daily
sudo apt-get install freecad-daily

git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git freecad-source
mkdir freecad-source/build
cd freecad-source/build
cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 -DFREECAD_USE_PYBIND11=ON ../
make -j$(nproc --ignore=2)

Si lo desea, puede desinstalar la versión precompilada de FreeCAD (freecad-daily) dejando las dependencias en su lugar, sin embargo, dejar este paquete instalado permitirá al gestor de paquetes mantener sus dependencias actualizadas también; esto es sobre todo útil si tiene la intención de seguir el desarrollo de FreeCAD, y actualizar y compilar constantemente las fuentes desde el repositorio Git.

El script anterior asume que quiere compilar la última versión de FreeCAD, por lo que está usando el repositorio "diario" para obtener las dependencias. Sin embargo, puede obtener las dependencias de la versión "estable" de su versión actual de Ubuntu. Si este es el caso, reemplace la parte superior del script anterior con las siguientes instrucciones. Para Ubuntu 12.04, omita --enable-source del comando.

#!/bin/sh
sudo add-apt-repository --enable-source ppa:freecad-maintainers/freecad-stable && sudo apt-get update
sudo apt-get build-dep freecad
sudo apt-get install libqt5xmlpatterns5-dev   # Needed for 0.20; should go away on next packaging update 
sudo apt-get install freecad

Una vez que instale el paquete freecad desde el repositorio freecad-stable, sustituirá al ejecutable de FreeCAD que está disponible en el repositorio de Universe Ubuntu. El ejecutable se llamará simplemente freecad, y no freecad-stable.

openSUSE

No se necesitan repositorios externos para compilar FreeCAD. Sin embargo, existe una incompatibilidad con python3-devel que debe eliminarse. FreeCAD se puede compilar desde GIT.

# install needed packages for development
sudo zypper install gcc cmake OpenCASCADE-devel libXerces-c-devel \
python-devel libqt4-devel python-qt4 Coin-devel SoQt-devel boost-devel \
libode-devel libQtWebKit-devel libeigen3-devel gcc-fortran git swig
 
# create new dir, and go into it
mkdir FreeCAD-Compiled 
cd FreeCAD-Compiled
 
# get the source
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git free-cad
 
# Now you will have a subfolder in this location called free-cad. It contains the source
 
# make another dir for compilation, and go into it
mkdir FreeCAD-Build1
cd FreeCAD-Build1 
 
# build configuration 
cmake ../free-cad
 
# build FreeCAD
make
 
# test FreeCAD
cd bin
./FreeCAD -t 0

Dado que está usando Git, la próxima vez que quiera compilar no tendrá que clonar todo, simplemente descargue desde Git y compile una vez más.

# go into free-cad dir created earlier
cd free-cad
 
# pull
git pull
 
# get back to previous dir
cd ..
 
# Now repeat last few steps from before.
 
# make another dir for compilation, and go into it
mkdir FreeCAD-Build2
cd FreeCAD-Build2
 
# build configuration 
cmake ../free-cad
 
# build FreeCAD
# Note: to speed up build use all CPU cores: make -j$(nproc)
make
 
# test FreeCAD
cd bin
./FreeCAD -t 0

Debian Squeeze

# get the needed tools and libs
sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \
libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev \
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \
libboost-serialization-dev libboost-signals-dev libboost-regex-dev \
libqt4-dev qt4-dev-tools python2.5-dev \
libsimage-dev libopencascade-dev \
libsoqt4-dev libode-dev subversion cmake libeigen2-dev python-pivy \
libtool autotools-dev automake gfortran
 
# checkout the latest source
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git freecad
 
# go to source dir
cd freecad
 
# build configuration 
cmake .
 
# build FreeCAD
# Note: to speed up build use all CPU cores: make -j$(nproc)
make
 
# test FreeCAD
cd bin
./FreeCAD -t 0

Fedora 27/28/29

Enviado por el usuario [PrzemoF] en el foro.

#!/bin/bash

ARCH=$(arch)

MAIN_DIR=FreeCAD
BUILD_DIR=build

#FEDORA_VERSION=27
#FEDORA_VERSION=28
FEDORA_VERSION=29

PACKAGES="gcc cmake gcc-c++ boost-devel zlib-devel swig eigen3 qt-devel \
shiboken shiboken-devel pyside-tools python-pyside python-pyside-devel xerces-c \
xerces-c-devel OCE-devel smesh graphviz python-pivy python-matplotlib tbb-devel \
 freeimage-devel Coin3 Coin3-devel med-devel vtk-devel"

FEDORA_29_PACKAGES="boost-python2 boost-python3 boost-python2-devel boost-python3-devel"

if [ "$FEDORA_VERSION" = "29" ]; then
    PACKAGES="$PACKAGES $FEDORA_29_PACKAGES"
fi

echo "Installing packages required to build FreeCAD"
sudo dnf -y install $PACKAGES
cd ~
mkdir $MAIN_DIR || { echo "~/$MAIN_DIR already exist. Quitting.."; exit; }
cd $MAIN_DIR
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git
mkdir $BUILD_DIR || { echo "~/$BUILD_DIR already exist. Quitting.."; exit; }
cd $BUILD_DIR
cmake ../FreeCAD 
make -j$(nproc)

Arch usando AUR

El Repositorio de Usuarios de Arch (AUR) [2] es una colección de recetas creadas por usuarios para compilar paquetes que no cuentan con el soporte oficial de los mantenedores o la comunidad de la distribución. Suelen ser seguras. Puede ver quién mantiene el paquete y desde cuándo. Se recomienda revisar los archivos de compilación. También encontrará software que no es de código abierto, incluso si lo mantiene la empresa propietaria oficial.

Requisito previo : git

Pasos:

  1. Abra una terminal. Opcionalmente, cree un directorio, por ejemplo: mkdir git. Opcionalmente, cambie de directorio, por ejemplo: cd git.
  2. Clone el repositorio AUR: git clone https://aur.archlinux.org/freecad-git.git.
  3. Entre en la carpeta del repositorio AUR: cd freecad-git.
  4. Compile usando Makepkg (disponible en Arch makepkg): makepkg -s. La opción -s o --syncdeps también instalará las dependencias necesarias.
  1. Instale el paquete creado: makepkg --install o haz doble clic en el archivo pkgname-pkgver.pkg.tar.xz en su explorador de archivos.

Para actualizar FreeCAD a la última versión, repita desde el paso 3. Actualice el repositorio AUR cuando haya algún cambio incompatible en la receta o nuevas funciones usando git checkout -f dentro de la carpeta.