Actualmente, la forma más fácil y rápida de compilar FreeCAD es con Pixi. Esta herramienta se encarga automáticamente de todas las dependencias. Encontrará más detalles en el Manual del desarrollador. En Windows, siga estos pasos:
iwr -useb https://pixi.sh/install.ps1 | iex
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD FreeCAD-src
pixi run configure
pixi run build
pixi run freecad
No es necesario volver a ejecutar el comando configure, ya que se ejecutará automáticamente con pixi run build si es necesario. Sin embargo, si se agrega o actualiza un submódulo de Git, utilice el comando pixi run initialize.
Si cambia de rama con git checkout y luego cambia de rama, simplemente vuelva a usar pixi run build. No es necesario limpiar los directorios de la compilación anterior.
El contenido expuesto a continuación explica paso a paso cómo compilar FreeCAD 0.19 o posterior en Windows utilizando el compilador MSVC de Microsoft. Para obtener información sobre el uso de MSYS2/MinGW, consulte Compile en MinGW. Para otras plataformas, consulte Compile.
Para compilar FreeCAD en Windows se necesitan varias herramientas y bibliotecas.
A continuación, describimos el manejo del código fuente mediante la interfaz de TortoiseGit [2]. Esta interfaz se integra directamente con el explorador de archivos de Windows y cuenta con una amplia comunidad de usuarios que ofrece ayuda en caso de problemas.
Ahora puede obtener el código fuente de FreeCAD:
Al utilizar las interfaces Git [3]
TortoiseGit:
El código fuente más reciente se descargará del repositorio Git de FreeCAD y Git realizará el seguimiento de la carpeta.
Para crear una rama de seguimiento local y descargar el código fuente, abra una terminal (símbolo del sistema) y cambie al directorio donde desee descargar el código fuente, luego escriba:
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git
El compilador predeterminado (recomendado) es MS Visual Studio (MSVC). Si bien es posible usar otros compiladores, como gcc a través de Cygwin o MinGW, no se han probado ni se tratan en este documento.
Puede obtener una versión gratuita de MSVC (para uso individual) descargando la edición Community de MS Visual Studio [4].
Para aquellos que quieran evitar instalar el enorme MSVC con el único propósito de tener un compilador, consulten CompileOnWindows - Reducing Disk Footprint.
Nota: Si bien la edición «Community» de MSVC es gratuita, para usar el IDE durante más de un período de prueba de 30 días, debe crear una cuenta de Microsoft. Si solo va a compilar mediante la línea de comandos, no necesita el IDE y, por lo tanto, no necesita una cuenta de Microsoft.
Como IDE alternativo gratuito y de código abierto, puede usar KDevelop. Con KDevelop puede modificar y escribir código C++, pero debe usar la línea de comandos para compilarlo.
Como alternativa, puede incluir las rutas de algunas carpetas en la variable de entorno PATH del sistema. Esto resulta útil si desea acceder a programas en estas carpetas desde la línea de comandos o PowerShell, o si desea que el compilador o CMake encuentren programas específicos. Además, agregar carpetas a PATH podría ser necesario si no utilizó las opciones correspondientes durante la instalación del programa.
Para agregar rutas de carpetas a la variable PATH:
Una vez que tenga todas las herramientas, bibliotecas además del código fuente de FreeCAD necesarios, estará listo para comenzar el proceso de configuración y compilación. Este proceso consta de cinco pasos:
Primero, configure el entorno de compilación con CMake:
Nota: Es importante especificar la versión de bits correcta. Si tiene la variante de 64 bits de LibPack, también debe usar el compilador x64.
Esto iniciará la configuración y fallará debido a la falta de ajustes. Esto es normal, ya que aún no ha especificado la ubicación de LibPack. Sin embargo, pueden ocurrir otros fallos que requieren alguna acción adicional por su parte.
Si aparece el mensaje de error No se pudo encontrar Visual Studio, significa que aún no está instalado el soporte para CMake en MSVC. Para instalarlo:
Si no hay errores relacionados con Visual Studio o Python, todo está bien, pero CMake aún no conoce todas las configuraciones necesarias. Por lo tanto:
Ahora no debería haber errores. Si sigue encontrando errores que no puede diagnosticar, visite el foro Install/Compile forum en el sitio web del foro de FreeCAD. Si CMake se ejecutó correctamente, haga clic en Generate. Una vez hecho esto, puede cerrar CMake e iniciar la compilación de FreeCAD con Visual Studio. Sin embargo, para la primera compilación, manténgalo abierto por si necesita modificar alguna opción del proceso de compilación.
El sistema de compilación CMake le permite controlar algunos aspectos del proceso de compilación. En particular, puede activar o desactivar ciertas funciones o módulos mediante variables de CMake.
A continuación se describe alguna de estas variables:
| Nombre de la variable | Descripción | Valor predeterminado |
|---|---|---|
| BUILD_XXX | Compila FreeCAD con el componente XXX. Si no desea compilar, por ejemplo, el entorno de desarrollo "OpenSCAD", desactive la variable "BUILD_OPENSCAD". FreeCAD no tendrá este entorno de desarrollo.
Nota: Algunos componentes son necesarios para otros. Si, por ejemplo, desmarca "BUILD_ROBOT", CMake le informará de que el componente "Path" no se puede compilar correctamente. Por lo tanto, ¡revise la salida de CMake después de modificar una opción de BUILD_XXX! |
DEPENDE |
| BUILD_ENABLE_CXX_STD | La versión del estándar del lenguaje C++. "C++14" es la versión más alta posible para FreeCAD 0.19, mientras que se requiere al menos "C++17" para FreeCAD 0.20. Consulte también la nota en la sección Compilación con Visual Studio 15 (2017) y 16 (2019) | DEPENDE |
| BUILD_DESIGNER_PLUGIN | Para compilar el complemento Qt Designer, consulte esta sección a continuación | DESACTIVADO |
| BUILD_FLAT_MESH | Necesario para tener una compilación que incluya la función CreateFlatMesh | DESACTIVADO |
| CMAKE_INSTALL_PREFIX | La carpeta de salida al compilar el destino INSTALL, consulte también la sección Ejecución e instalación de FreeCAD | Carpeta de instalación predeterminada de programas de Windows |
| FREECAD_COPY_DEPEND_DIRS_TO_BUILD | Copia las bibliotecas necesarias para ejecutar FreeCAD.exe a la carpeta de compilación. Consulte también la sección Ejecutar e instalar FreeCAD. Nota: Las opciones FREECAD_COPY_XXX solo aparecen si las bibliotecas no se han copiado previamente. Si solo necesita actualizar o cambiar a otra versión de LibPack, consulte la sección Actualizar LibPack. Si desea recuperar estas opciones por algún motivo, debe eliminar todas las carpetas de la carpeta de compilación, excepto la carpeta LibPack. En CMake, elimine la caché y comience como si compilara por primera vez. |
DESACTIVADO |
| FREECAD_COPY_LIBPACK_BIN_TO_BUILD | Copia los binarios de LibPack necesarios para ejecutar FreeCAD.exe a la carpeta de compilación. Consulte también la sección Ejecutar e instalar FreeCAD. | DESACTIVADO |
| FREECAD_COPY_PLUGINS_BIN_TO_BUILD | Copia los archivos de complementos de Qt necesarios para ejecutar FreeCAD.exe a la carpeta de compilación. Consulte también la sección Ejecución e instalación de FreeCAD. | DESACTIVADO |
| FREECAD_LIBPACK_USE | Activa o desactiva el uso del paquete de bibliotecas de FreeCAD | ACTIVADO |
| FREECAD_LIBPACK_DIR | Directorio donde se encuentra el paquete de bibliotecas | Carpeta del código fuente de FreeCAD |
| FREECAD_RELEASE_PDB | Crea bibliotecas de depuración (*.pdb) también para las compilaciones de lanzamiento. No afecta a la velocidad (como lo haría una compilación de depuración real) y puede ser muy útil para localizar fallos en el código de FreeCAD. En caso de que FreeCAD falle, se creará un archivo crash.dmp que se puede cargar con MSVC y, si dispone de los archivos PDB correspondientes, además del código fuente de esa versión, puede depurar el código. Sin los archivos PDB, no es posible depurar el código y el depurador solo muestra el nombre de la DLL donde se produjo el fallo. | ACTIVADO |
| FREECAD_USE_MP_COMPILE_FLAG | Agrega la opción /MP (multiprocesador) a los proyectos de Visual Studio, lo que permite acelerar el proceso en CPU multinúcleo. Esto puede acelerar considerablemente la compilación en procesadores modernos. 'Nota:' Si desactiva FREECAD_USE_PCH, la compilación puede sobrecargar rápidamente el espacio de memoria dinámica, incluso con 16 GB de RAM. |
ACTIVADO |
| FREECAD_USE_PCH | Precompila los encabezados para ahorrar tiempo de compilación. | ACTIVADO |
| FREECAD_USE_PYBIND11 | Incluye la biblioteca PyBind11. Es necesario tener una compilación que incluya la función CreateFlatMesh. Nota: Después de activarla, es posible que aparezca un error de configuración. Simplemente vuelva a configurarla y el problema debería desaparecer. |
DESACTIVADO |
Dependiendo del compilador, el proceso de compilación de FreeCAD será ligeramente diferente. En las siguientes secciones se describen los flujos de trabajo habituales. Si está compilando con Qt Creator, vaya a Compilación con Qt Creator (obsoleto), de lo contrario, continúe directamente:
Si desea compilar desde la línea de comandos, la salida de CMake le mostrará el comando adecuado para ejecutar (que depende del directorio de lanzamiento configurado). Sin embargo, este comando generará una compilación de depuración que no funciona en Windows y produce un error de importación de Numpy en FreeCAD (un problema conocido pero difícil de solucionar). Debe especificar la opción --config Release para forzar una compilación de lanzamiento:
{{{1}}}
Tenga en cuenta que configurar variables de CMake como CMAKE_BUILD_TYPE no tiene ningún efecto; solo funciona especificar la opción --config como se muestra arriba.
Este proceso tardará bastante tiempo.
Para compilar una versión de FreeCAD lista para usar, compile el destino INSTALL, consulte la sección Ejecución e instalación de FreeCAD.
Si no aparece ningún error, ha terminado. ¡Enhorabuena! Puede cerrar MSVC o dejarlo abierto.
Importante: Desde Visual Studio 17.4, no se puede usar la optimización de código que está activada por defecto para el destino SketcherGui. Si se usa, las restricciones de ángulo se colocarán incorrectamente en los bocetos. Para solucionar esto, haga clic con el botón derecho en este destino en el Explorador de soluciones de MSVC y seleccione la última entrada Propiedades en el menú contextual. En el cuadro de diálogo que aparece, vaya a C/C++ → Optimización y allí desactive la configuración Optimización. Finalmente, vuelva a compilar el destino ALL_BUILD.
Como requisito previo para la compilación de depuración, debe realizar lo siguiente:
Ahora puede compilar:
Esto tardará bastante tiempo.
Si no hubo errores de compilación y si las opciones FREECAD_COPY_* mencionadas en el paso Configuración de CMake anterior estaban habilitadas, puede iniciar la compilación de depuración:
Esto iniciará la compilación de depuración de FreeCAD y podrá utilizar el IDE de MSVC para depurarla.
Un tutorial en inglés que comienza con la configuración en CMake Gui y continúa con el comando Build en Visual Studio 16 2019 está disponible en YouTube (sin listar) en Tutorial: Compilar FreeCAD desde el código fuente en Windows 10.
Ahora se puede compilar FreeCAD
Una vez completado, se puede ejecutar: Hay dos triángulos verdes en la parte inferior izquierda. Uno es para depurar.
El otro es para ejecutar. Elija el que prefiera.
Los pasos para compilar desde la línea de comandos dependen del compilador. Para MSVC 2017, los pasos son:
msbuild ALL_BUILD.vcxproj /p:Configuration=Release
o
msbuild INSTALL.vcxproj /p:Configuration=Release
Estos pasos también se pueden automatizar. Aquí tiene, por ejemplo, una solución para MSVC 2017:
compile-FC install
En lugar de llamar a compile-FC con la opción install, también puede usar debug o release:
debug - compila FreeCAD en configuración de depuración
release - compila FreeCAD en configuración de lanzamiento
install - compila FreeCAD en configuración de lanzamiento y crea un archivo de instalación
Existen dos métodos para ejecutar FreeCAD compilado:
Método 1: Ejecute el archivo FreeCAD.exe que encontrará en la carpeta de compilación, en la subcarpeta bin.
Método 2: Construye el objetivo INSTALAR
El método 2 es el más sencillo porque garantiza automáticamente que todas las bibliotecas necesarias para ejecutar FreeCAD.exe se encuentren en la carpeta correcta. FreeCAD.exe y las bibliotecas se generarán en la carpeta que ha especificado en la variable de CMake CMAKE_INSTALL_PREFIX.
Para el Método 1, debe habilitar las opciones FREECAD_COPY_* mencionadas en el paso CMake Ajustes de configuración anterior.
Al ejecutar FreeCAD, es posible que encuentre archivos DLL faltantes al usar ciertos entornos de trabajo o funciones de los mismos. El mensaje de error en la consola de FreeCAD no le indicará qué archivo DLL falta. Para averiguarlo, debe usar una herramienta externa.
import os os.system(r"~\DependenciesGui.exe") Nota: En lugar de la ~, debe especificar la ruta completa a DependenciesGui.exe en su sistema.
FreeCAD se desarrolla de forma muy activa. Por lo tanto, su código fuente cambia casi a diario. Se añaden nuevas funciones y se corrigen errores. Para beneficiarse de estos cambios en el código fuente, debe recompilar FreeCAD. Esto se realiza en dos pasos:
Al usar la interfaz gráfica de usuario de Git, TortoiseGit:
Finalmente, haga clic en Aceptar.
Abra una terminal (símbolo del sistema) y cambie al directorio de origen. Luego escriba:
git pull https://github.com/FreeCAD/FreeCAD.git main
donde main es el nombre de la rama principal de desarrollo. Si desea obtener código de otra rama, utilice su nombre en lugar de main.
Si se publica una nueva versión principal de una dependencia de terceros como Open Cascade, o si una dependencia de terceros incluye correcciones de errores importantes, se publica un nuevo LibPack. Puede encontrar la última versión aquí [5].
Para actualizar su LibPack, siga estos pasos:
Para unirse al desarrollo de FreeCAD debe compilar e instalar las siguientes herramientas:
FreeCAD utiliza Qt como conjunto de herramientas para su interfaz de usuario. Todos los diálogos se configuran en archivos de interfaz de usuario que se pueden editar con Qt Designer, un programa incluido en cualquier instalación de Qt y también en el LibPack. FreeCAD cuenta con su propio conjunto de widgets de Qt para ofrecer funciones especiales, como agregar unidades a los campos de entrada y configurar las propiedades de las preferencias.
El complemento no puede ser cargado por Qt Designer si fue compilado utilizando una versión de Qt distinta a la que utiliza su Qt Designer/Qt Creator. Por lo tanto, el complemento debe compilarse junto con FreeCAD:
Como resultado, obtendrá el archivo de complemento FreeCAD_widgets.dll en la carpeta
~\src\Tools\plugins\widget\Release
Para instalar el complemento, copie la DLL en una de las siguientes ubicaciones:
Finalmente, reinicie Qt Designer y revise su menú Help → Plugins. Si el plugin FreeCAD_widgets.dll aparece como cargado, ya puede diseñar y modificar los archivos .ui de FreeCAD. De lo contrario, debe compilar la DLL manualmente.
Si prefiere usar Qt Creator en lugar de Qt Designer, el archivo del complemento debe colocarse en esta carpeta:
C:\Qt\Qt5.15.2\Tools\QtCreator\bin\plugins\designer
Luego (re)inicie Qt Creator, cambie al modo Diseño y luego verifique el menú Herramientas → Editor de formularios → Acerca de los complementos de Qt Designer. Si el complemento FreeCAD_widgets.dll aparece como cargado, ahora puede diseñar y cambiar los archivos .ui de FreeCAD. De lo contrario, debe compilar la DLL usted mismo.
FreeCAD incluye la función de previsualización en miniatura para archivos *.FCStd. Esto significa que, en el explorador de archivos de Windows, los archivos *.FCStd se muestran con una captura de pantalla del modelo que contienen. Para que FreeCAD disponga de esta función, es necesario tener instalado en Windows el archivo FCStdThumbnail.dll.
La DLL se instala de la siguiente manera:
regsvr32 FCStdThumbnail.dll
Compruebe si funciona y asegúrese de que en FreeCAD la opción de preferencias Save thumbnail into project file when saving document esté activada. Guarde un modelo. A continuación, visualice la carpeta del modelo guardado en el Explorador de Windows usando la vista de símbolos. Ahora debería ver una captura de pantalla del modelo en la vista de carpetas.
Para compilar FCStdThumbnail.dll
Ahora debería tener el archivo ALL_BUILD.vcxproj en la carpeta ~\src\Tools\thumbs\ThumbnailProvider. Haga doble clic en él y se abrirá el IDE de MSVC.
En la barra de herramientas del IDE de MSVC, asegúrese de usar el destino de compilación Release.
Se abrirá una ventana llamada Solution Explorer. Haga clic con el botón derecho en ALL_BUILD y seleccione Build.
Como resultado, ahora debería tener un archivo FCStdThumbnail.dll en la carpeta ~\src\Tools\thumbs\ThumbnailProvider\release que puede instalar como se describió anteriormente.
El LibPack (paquete de bibliotecas) incluye una versión de Open Cascade (https://en.wikipedia.org/wiki/Open_Cascade) adecuada para uso general. Sin embargo, en ciertas circunstancias, es posible que desee compilar con una versión alternativa de Open Cascade, como una de sus versiones oficiales o una bifurcación modificada.
Al compilar Open Cascade para FreeCAD, tenga en cuenta que no hay garantía de que FreeCAD funcione con todas las versiones de Open Cascade. Asimismo, al usar la biblioteca NetGen, debe utilizar una versión de NetGen aprobada para compilarse con la versión de Open Cascade que desea compilar.
Para compilar:
| Nombre de la variable | Descripción | Valor predeterminado |
|---|---|---|
| 3RDPARTY_DIR | Ruta a los componentes de terceros. Se recomienda usar como entrada la carpeta donde se encuentra su LibPack. Deje este campo vacío. | Vacío |
| 3RDPARTY_DOXYGEN_EXECUTABLE | Ruta al ejecutable del componente de terceros [7]. Se recomienda instalar Doxygen. CMake lo encontrará automáticamente. | Vacío |
| 3RDPARTY_FREETYPE_DIR | Ruta al componente de terceros necesario [8]. Se recomienda usar como entrada la carpeta donde se encuentra el LibPack que esté utilizando. | Vacío |
| 3RDPARTY_RAPIDJSON_DIR | Solo disponible si se usa USE_RAPIDJSON. Ruta al componente de terceros RapidJSON. Se recomienda NO usar una carpeta LibPack existente como entrada. Puede usar la carpeta RapidJSON de un LibPack, pero cópiela a una nueva carpeta y use esta nueva carpeta como entrada. | Vacío |
| 3RDPARTY_TCL_DIR | Ruta al componente de terceros necesario TCL. Se recomienda NO usar una carpeta LibPack existente como entrada. Por ejemplo, tome una de estas versiones [9], extráigala y úsela como carpeta de entrada para CMake. | Vacío |
| 3RDPARTY_TK_DIR | Ruta al componente de terceros necesario TK. Se recomienda NO usar una carpeta LibPack existente como entrada. Por ejemplo, tome una de estas versiones [10], extráigala y úsela como carpeta de entrada para CMake. | Vacío |
| 3RDPARTY_VTK_DIR | Solo disponible si se usa USE_VTK. Ruta al componente de terceros necesario VTK. Se recomienda usar como entrada la carpeta donde se encuentra su LibPack. Si usa otra carpeta, asegúrese de no usar VTK 9.x o posterior. | vacío |
| BUILD_RELEASE_DISABLE_EXCEPTIONS | Deshabilita el manejo de excepciones para compilaciones de lanzamiento. Para FreeCAD, debe configurarlo en OFF. | ON |
| INSTALL_DIR | La carpeta de salida al compilar el destino INSTALL. Si la compilación fue exitosa, copie los archivos de esta carpeta para actualizar su LibPack. | Carpeta de instalación predeterminada de programas de Windows |
| INSTALL_DIR_BIN | La subcarpeta de salida para la DLL al compilar el destino INSTALL. Debe cambiarla a bin. | win64/vc14/bin |
| INSTALL_DIR_LIB | La subcarpeta de salida para los archivos .lib al compilar el destino INSTALL. Debe cambiarla a lib. | win64/vc14/lib |
| USE_RAPIDJSON | Para compilar Open Cascade con soporte para RapidJSON. Es obligatorio habilitar esta opción para obtener compatibilidad con el formato de archivo glTF. | DESACTIVADO |
| USAR VTK | Para compilar Open Cascade con compatibilidad con VTK. Se recomienda habilitar esta opción. Puede usarla para crear el puente VTK de Open Cascade. | DESACTIVADO |
Para compilar FreeCAD usando Open Cascade autocompilado, debe hacer lo siguiente:
El paquete de bibliotecas incluye una versión de Netgen (https://ngsolve.org) que se probó para compilarse con la versión Open Cascade del paquete. El problema es que cada nueva versión de Netgen modifica la API, al igual que cada nueva versión de Open Cascade. Por lo tanto, no es fácil cambiar la versión de Netgen.
Sin embargo, podría compilar Netgen de todos modos. Es una tarea sencilla:
| Nombre de la variable | Descripción | Valor predeterminado |
|---|---|---|
| CMAKE_INSTALL_PREFIX | La carpeta de salida al compilar el objetivo INSTALL. Si la compilación fue exitosa, copie los archivos de esta carpeta para actualizar su LibPack. | C:/netgen |
| OpenCasCade_DIR | La ruta a los archivos CMake de Open Cascade. Si compiló Open Cascade como se describe en la sección Compilando Open Cascade, puede usar la subcarpeta cmake de la carpeta que usó como INSTALL_DIR. De lo contrario, utilice la subcarpeta cmake de su LibPack. Tenga en cuenta que el LibPack debe contener una compilación Open Cascade adecuada. Independientemente de la carpeta que utilice, también debe crear allí una subcarpeta lib y copiar los archivos freetype.lib y freetyped.lib de su LibPack. | Vacío |
| USE_GUI | establecer en OFF | ON |
| USE_NATIVE_ARCH | establecer en OFF; esto solo es necesario para admitir CPUs antiguas que no tienen el conjunto de instrucciones AVX2 [12]. | ON |
| USE_OCC | establecer en ON | OFF |
| USE_PYTHON | establecer en OFF | ON |
| USE_SUPERBUILD | Establecer en OFF | ENCENDIDO |
| ZLIB_INCLUDE_DIR | Ruta al componente de terceros necesario zlib. Se recomienda usar como entrada la carpeta donde se encuentra el LibPack que esté utilizando. | Vacío |
| ZLIB_LIBRARY_DEBUG | Ruta al archivo ZLib zlibd.lib. Se encuentra en la subcarpeta lib de la carpeta de su LibPack. | Vacío |
| ZLIB_LIBRARY_RELEASE | Ruta al archivo ZLib zlib.lib. Se encuentra en la subcarpeta lib de la carpeta de su LibPack. | Vacío |
nombre: CMAKE_DEBUG_POSTFIX, tipo: string, contenido: _d
Esto garantiza que los nombres de archivo de las bibliotecas de depuración sean diferentes a los de las bibliotecas de lanzamiento y que posteriormente no se intercambien accidentalmente.
Para compilar FreeCAD usando Netgen autocompilado, debe hacer lo siguiente:
Ver también