Compile on Windows/it: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
Line 339: Line 339:
# Cerca lì l'opzione variabile "FREECAD_COPY_PLUGINS_BIN_TO_BUILD" e controllala.
# Cerca lì l'opzione variabile "FREECAD_COPY_PLUGINS_BIN_TO_BUILD" e controllala.
# Fare clic su '''Configura'''. Al termine della configurazione CMake copierà automaticamente le librerie necessarie dalla cartella LibPack.
# Fare clic su '''Configura'''. Al termine della configurazione CMake copierà automaticamente le librerie necessarie dalla cartella LibPack.

===Troubleshooting===

When running FreeCAD you may encounter missing DLLs when using certain workbenches or features of workbenches. The error message in FreeCAD's console will not tell you what DLL is missing. To find this out you must use an external tool:

* Download the latest release of the program '''Dependencies''': https://github.com/lucasg/Dependencies/releases (choose the file ''Dependencies_x64_Release.zip'')
* In the FreeCAD [[Python console]] execute these commands:
<nowiki>import os
os.system(r"~\DependenciesGui.exe")</nowiki>
'''Note''': Instead of the ~ you must specify the full path to the ''DependenciesGui.exe'' on your system.
* Now drag in the *.pyd file of the workbench with which you get missing DLLs reported.


==Aggiornamento della build==
==Aggiornamento della build==
Line 379: Line 390:
FreeCAD uses [https://en.wikipedia.org/wiki/Qt_(software) Qt] as toolkit for its user interface. All dialogs are setup in UI-files that can be edited using the program [https://doc.qt.io/qt-5/qtdesigner-manual.html Qt Designer] that is part of any Qt installation and also included in the LibPack. FreeCAD has its own set of Qt widgets to provide special features like adding a unit to input fields and to set preferences properties.
FreeCAD uses [https://en.wikipedia.org/wiki/Qt_(software) Qt] as toolkit for its user interface. All dialogs are setup in UI-files that can be edited using the program [https://doc.qt.io/qt-5/qtdesigner-manual.html Qt Designer] that is part of any Qt installation and also included in the LibPack. FreeCAD has its own set of Qt widgets to provide special features like adding a unit to input fields and to set preferences properties.


====Installation====
====Compilation====


The plugin cannot be loaded by the Qt Designer if it was compiled using another Qt version than the one your Qt Designer/Qt Creator is based on. Therefore the plugin must be compiled together with FreeCAD:
To make Qt Designer aware of the FreeCAD widgets, you must


* In the CMake options (see [[Compile_on_Windows#Options_for_the_build_process|this section above]]) enable the option BUILD_DESIGNER_PLUGIN and reconfigure.
# Download the [https://github.com/donovaly/FreeCAD-Qt-Designer-plugin/releases/tag/Qt-5.15.x-1 ZIP file]. (Compiled using Qt 5.15, see [[#Compilation|below]].)
* open MSVC and build the target '''FreeCAD_widgets'''
# Extract the DLL file from the ZIP.
* If you use the LibPack: to the folder</br>''~\FreeCADLibs_12.5.4_x64_VC17\bin\designer''</br>Since there will only be a ''bin'' folder and you must first create the ''designer'' subfolder.
* If you have a full Qt installation: you can choose between the folder</br>''C:\Qt\5.15.2\msvc2019_64\plugins\designer''</br>or</br>''C:\Qt\5.15.2\msvc2019_64\bin\designer'' (you must first create the ''designer'' subfolder.)</br>(adapt the paths to your installation!).


As result you will get the plugin file '''FreeCAD_widgets.dll'' in the folder</br>''~\src\Tools\plugins\widget\Release''
(Re)Start Qt Designer and check its menu {{MenuCommand|Help → Plugins}}. If the plugin '''FreeCAD_widgets.dll''' is listed as being loaded, you can now design and change FreeCAD's .ui files. If not, you must [[#Compilation|compile]] the DLL by yourself.


====Installation====


To install the plugin, copy it to either:
If you prefer using [https://en.wikipedia.org/wiki/Qt_Creator Qt Creator] instead of Qt Designer, the DLL must be placed in this folder:</br>''C:\Qt\Qt5.15.2\Tools\QtCreator\bin\plugins\designer''</br>(Re)Start Qt Creator, switch to the mode '''Design''' and then check the menu {{MenuCommand|Tools → Form Editor → About Qt Designer Plugins}}. If the plugin '''FreeCAD_widgets.dll''' is listed as being loaded, you can now design and change FreeCAD's .ui files. If not, you must [[#Compilation|compile]] the DLL by yourself.
* If you use the LibPack: to the folder</br>''~\FreeCADLibs_12.5.4_x64_VC17\bin\designer''</br>Since there will only be a ''bin'' folder and you must first create the ''designer'' subfolder.
* If you have a full Qt installation: you can choose between the folder</br>''C:\Qt\5.15.2\msvc2019_64\plugins\designer''</br>or</br>''C:\Qt\5.15.2\msvc2019_64\bin\designer'' (you must first create the ''designer'' subfolder.)</br>(adapt the paths to your installation!).


Finally (re)start Qt Designer and check its menu {{MenuCommand|Help → Plugins}}. If the plugin '''FreeCAD_widgets.dll''' is listed as being loaded, you can now design and change FreeCAD's .ui files. If not, you must [[#Compilation|compile]] the DLL by yourself.
====Compilation====


If you prefer using [https://en.wikipedia.org/wiki/Qt_Creator Qt Creator] instead of Qt Designer, the plugin file must be placed in this folder:</br>''C:\Qt\Qt5.15.2\Tools\QtCreator\bin\plugins\designer''</br>Then (re)start Qt Creator, switch to the mode '''Design''' and then check the menu {{MenuCommand|Tools → Form Editor → About Qt Designer Plugins}}. If the plugin '''FreeCAD_widgets.dll''' is listed as being loaded, you can now design and change FreeCAD's .ui files. If not, you must [[#Compilation|compile]] the DLL by yourself.
The DLL cannot be loaded as plugin if it was compiled using another Qt version than the one your Qt Designer/Qt Creator is based on. In this case you must compile the DLL by yourself. This is done the following way:

# Change to the FreeCAD source folder</br>''~\src\Tools\plugins\widget''
# Open a ''x64 Native Tool Command Prompt'' using the Windows Start menu and change within it to the above folder. It is important that it is the x64 version of the command prompt!
# Execute this command {{Code|code=qmake -t vclib plugin.pro}}If qmake could not be found, use the full path to it, e.g. for the LibPack it should be this one (adapt it to your installation):</br>''D:\FreeCAD-build\FreeCADLibs_12.5.4_x64_VC17\bin\qmake -t vclib plugin.pro''</br>for a full Qt installation it is</br>''C:\Qt\5.15.2\msvc2019_64\bin\qmake -t vclib plugin.pro''</br> (adapt the paths to your installation!)
# The call of ''qmake'' created the file '''FreeCAD_widgets.vcxproj''' in the folder ''~\src\Tools\plugins\widget''. Double-click on it and the MSVC IDE will open.
# In the toolbar of the MSVC IDE assure that you use the compilation target ''Release''.
# There is a window called ''Solution Explorer''. Right-click there on '''FreeCAD_widgets''' and then choose '''Build'''.
# As result you should now have a '''FreeCAD_widgets.dll''' in the folder ''~\src\Tools\plugins\widget\release'' that you can install as plugin as described above.


===Thumbnail Provider===
===Thumbnail Provider===
Line 434: Line 438:
# As result you should now have a '''FCStdThumbnail.dll''' in the folder ''~\src\Tools\thumbs\ThumbnailProvider\release'' that you can install as described above.
# As result you should now have a '''FCStdThumbnail.dll''' in the folder ''~\src\Tools\thumbs\ThumbnailProvider\release'' that you can install as described above.


== Compiling Open Cascade==

The LibPack comes with a version of [https://en.wikipedia.org/wiki/Open_Cascade Open Cascade] that is suitable for general use. However, under some circumstances you may wish to compile against an alternate version of Open Cascade, such as one of their official releases, or a patched fork.

When compiling Open Cascade for FreeCAD note that there is no guarantee that FreeCAD will work with all versions of Open Cascade. Note also that when you are using the Netgen library, you must use the a NetGen version that it approved to compile with the Open Cascade version you like to compile.

To compile:
* First obtain the Open Cascade source code, either directly from [https://github.com/Open-Cascade-SAS/OCCT Open Cascade's git repository] or by cloning someone else's fork, such as [https://gitlab.com/blobfish/occt the "blobfish" fork] maintained by FreeCAD forum member [https://forum.freecadweb.org/memberlist.php?mode=viewprofile&u=208 tanderson69].

* Then open the CMake GUI to configure the build system in a similar manner to building FreeCAD. These CMake options have to be set (or explicitly not set):
{| class="wikitable" style="text-align:left"
|-
! Variable name !! Description !! Default
|-
| 3RDPARTY_DIR|| The path to 3rdparty components. It is recommended to use the folder as input where your used LibPack is. Explicitly leave this field empty.
|| empty
|-
| 3RDPARTY_DOXYGEN_EXECUTABLE|| The path to the executable of the 3rdparty component [https://en.wikipedia.org/wiki/Doxygen Doxygen]. It is recommended to install Doxygen. CMake will then find it automatically.
|| empty
|-
| 3RDPARTY_FREETYPE_DIR|| The path to the necessary 3rdparty component [https://en.wikipedia.org/wiki/FreeType Freetype]. It is recommended to use the folder as input where your used LibPack is.
|| empty
|-
| 3RDPARTY_RAPIDJSON_DIR|| Only available if '''USE_RAPIDJSON''' is used. The path to the 3rdparty component [https://rapidjson.org/ RapidJSON]. It is recommended NOT to use an existing LibPack folder as input. You can use the RapidJSOn folder from a LibPack, but copy it to a new folder and use this new folder as input.
|| empty
|-
| 3RDPARTY_TCL_DIR|| The path to the necessary 3rdparty component [https://en.wikipedia.org/wiki/Tcl TCL]. It is recommended NOT to use an existing LibPack folder as input. Take for example one of [https://github.com/teclab-at/tcltk/releases these releases], extract it and take this as input folder for CMake.
|| empty
|-
| 3RDPARTY_TK_DIR|| The path to the necessary 3rdparty component [https://en.wikipedia.org/wiki/Tk_(software) TK]. It is recommended NOT to use an existing LibPack folder as input. Take for example one of [https://github.com/teclab-at/tcltk/releases these releases], extract it and take this as input folder for CMake.
|| empty
|-
| 3RDPARTY_VTK_DIR|| Only available if '''USE_VTK''' is used. The path to the necessary 3rdparty component [https://en.wikipedia.org/wiki/VTK VTK]. It is recommended to use the folder as input where your used LibPack is. If you use another folder please assure that you don't use VTK 9.x or newer.
|| empty
|-
| BUILD_RELEASE_DISABLE_EXCEPTIONS|| Disables exception handling for release builds. For FreeCAD you must set it to '''OFF'''.
|| ON
|-
| INSTALL_DIR|| The output folder when building the target ''INSTALL''. If the build was successful, take the files from this folder to update your LibPack.
|| Windows default program installation folder
|-
| INSTALL_DIR_BIN|| The output subfolder for the DLL when building the target ''INSTALL''. You must change it to '''bin'''
|| win64/vc14/bin
|-
| INSTALL_DIR_LIB|| The output subfolder for the .lib files when building the target ''INSTALL''. You must change it to '''lib'''
|| win64/vc14/lib
|-
| USE_RAPIDJSON|| To compile Open Cascade with support for RapidJSON. Enabling this is mandatory in order to get support for the file format [https://en.wikipedia.org/wiki/Gltf glTF].
|| OFF
|-
| USE_VTK|| To compile Open Cascade with support for VTK. Enabling this is optimal. You can use this to build Open Cascade's VTK bridge.
|| OFF
|}


* Open the project in Visual Studio and first build the ALL_BUILD and then INSTALL targets in the '''Release''' mode.
== Compiling OpenCASCADE ==
* Repeat building the two targets in the '''Debug''' mode.


To build FreeCAD using the self-compiled Open Cascade, you must do the following:
The standard Libpack comes with a version of OpenCASCADE that is suitable for general use. However, under some circumstances you may wish to compile against an alternate version of OpenCASCADE, such as one of their official releases, or a patched fork. Note that there is no guarantee that FreeCAD will work with all versions of OpenCASCADE, and using a non-Libpack version is for advanced users only. Note also that if you are using the Netgen library, it uses OpenCASCADE for some of its functionality and must be compiled against the same version of OpenCASCADE that you use when compiling FreeCAD.
* Copy all folders from the INSTALL_DIR to your LibPack folder (overwrite the existing files)
* Switch to the LibPack folder and go there to the subfolder ''cmake''
* Open there the file ''OpenCASCADEDrawTargets.cmake'' with a text editor
* Search there for absolute paths to your LibPack folder and remove them. So e.g. the absolute path</br>''D:/FreeCADLibs_12.5.4_x64_VC17/lib/freetype.lib''</br>becomes just </br>''freetype.lib''</br>
* Do the same for the file ''OpenCASCADEVisualizationTargets.cmake''


== Compiling Netgen==
The process for building a custom version of OpenCASCADE is similar to that for FreeCAD, and can make use of the FreeCAD Libpack that you have already downloaded to provide the third-party dependencies it needs (Freetype and Tcl/Tk).


The LibPack comes with a version of [https://ngsolve.org Netgen] that will was tested to be build with the Open Cascade version of the LibPack. The problem is that every new release of Netgen changes the API. Also every new release of Open Cascade does the same. Therefore one cannot just easily change the Netgen version.
First obtain the OpenCASCADE source code, either directly from the release page at [https://old.opencascade.com/content/latest-release OpenCASCADE.org], via [https://git.dev.opencascade.org/repos/occt.git git], or by cloning someone else's fork, such as [https://gitlab.com/blobfish/occt the "blobfish" fork] maintained by FreeCAD forum member [https://forum.freecadweb.org/memberlist.php?mode=viewprofile&u=208 tanderson69].


However, you might build Netgen nevertheless. This is an easy task:
Next, use CMake to configure the build system in a similar manner to building FreeCAD. Notable CMake options for OpenCASCADE are:
* '''3RDPARTY_DIR''' - The location of your thrid-party libraries, typically set to your FreeCAD Libpack directory
* '''INSTALL_DIR''' - Where to install the finished libraries. A good practice is to use an isolated directory on your system, rather than installing globally, or overwriting the Libpack's version.


* First obtain the Netgen source code, either directly from [https://github.com/NGSolve/netgen Netgen 's git repository].
Finally, open the project in Visual Studio and build the ALL_BUILD and then INSTALL targets.
* Then open the CMake GUI to configure the build system in a similar manner to building FreeCAD. These CMake options have to be set:
{| class="wikitable" style="text-align:left"
|-
! Variable name !! Description !! Default
|-
| CMAKE_INSTALL_PREFIX|| The output folder when building the target ''INSTALL''. If the build was successful, take the files from this folder to update your LibPack.
|| C:/netgen
|-
| OpenCasCade_DIR|| The path to the CMake files of Open Cascade. If you built Open Cascade as described in section [[#Compiling_Open_Cascade|Compiling Open Cascade]] you can use the subfolder ''cmake'' of there folder you used as INSTALL_DIR. If not, use the subfolder ''cmake'' of your LibPack. Note hereby that the LibPack must then already contain a proper Open Cascade build. Independent what folder you use, you must now also create there a subfolder ''lib'' and copy in the files ''freetype.lib'' and ''freetyped.lib'' from your LibPack.
|| empty
|-
| USE_GUI|| set it to '''OFF'''
|| ON
|-
| USE_NATIVE_ARCH|| set it to '''OFF'''; this is only necessary important to support older CPU that don't have the [https://en.wikipedia.org/wiki/Advanced_Vector_Extensions AVX2] instruction set
|| ON
|-
| USE_OCC|| set it to '''ON'''
|| OFF
|-
| USE_PYTHON|| set it to '''OFF'''
|| ON
|-
| USE_SUPERBUILD|| set it to '''OFF'''
|| ON
|-
| ZLIB_INCLUDE_DIR|| The path to the necessary 3rdparty component [https://en.wikipedia.org/wiki/Zlib zlib]. It is recommended to use the folder as input where your used LibPack is.
|| empty
|-
| ZLIB_LIBRARY_DEBUG|| The path to the ZLib file ''zlibd.lib''. It is located in the subfolder ''lib'' of your LibPack folder.
|| empty
|-
| ZLIB_LIBRARY_RELEASE|| The path to the ZLib file ''zlib.lib''. It is located in the subfolder ''lib'' of your LibPack folder.
|| empty
|}


* Additionally you need to add a new CMake entry:
Once you have generated the appropriate DLLs for OpenCASCADE (there are many of them), you will need to rebuild FreeCAD. Open CMake and set up the source and build directories of a FreeCAD build as directed above. It is generally a good idea to use a new build directory for this alternate version of OpenCASCADE so that it is easy to switch back to your old version of FreeCAD if something goes wrong, and to set up an install directory so you can ensure the correct libraries are in place. In addition to the CMake variables discussed above, set the OpenCASCADE_DIR variable to the location of the cmake folder containing your OpenCASCADE build information. For example:
name: ''CMAKE_DEBUG_POSTFIX'', type: ''string'', content: '''_d'''</br>
CMAKE_INSTALL_PREFIX C:/Users/JaneDoe/Work/FreeCAD_occt751-install/
This assures that he file names of the debug libraries get another name than the release libraries and can later not be accidentally exchanged.
OpenCASCADE_DIR C:/Users/JaneDoe/Work/opencascade-7.5.1-install/cmake/


* Press the ''Configure'' button in CMake to generate the *.cmake files.
* Only necessary if older CPU should be supported that don't have the AVX2 instruction set:
** Search your Netgen build folder for the file ''netgen-targets.cmake'' and open it with a text editor. Remove the setting '';/arch:AVX2'' in the Option INTERFACE_COMPILE_OPTIONS.
** Press the ''Configure'' button in CMake again.
* Press the ''Generate'' button in CMake.
* Open the project in Visual Studio and first build the ALL_BUILD and then INSTALL targets in the '''Release''' mode.
* Repeat building the two targets in the '''Debug''' mode.


To build FreeCAD using the self-compiled Netgen, you must do the following:
Once you have used CMake to generate the build files for FreeCAD, open it in Visual Studio, build it, and then run build on the INSTALL target.
* Copy all folders from the CMAKE_INSTALL_PREFIX to your LibPack folder (overwrite the existing files)


== Riferimenti ==
== Riferimenti ==

Revision as of 12:11, 11 June 2022

Questo articolo spiega passo dopo passo come compilare FreeCAD 0.18 o superiore su Windows. Per altre piattaforme vedere la pagina Compilazione.

Prerequisiti

Innanzitutto è necessario installare le seguenti librerie e programmi richiesti:

Programmi richiesti

  • A compiler. FreeCAD is tested with Visual Studio (MSVC)—other compilers may work, but instructions for use are not included here. More details in #Compiler, below.
  • Git Ci sono una serie di alternative come GitCola, Tortoise Git, e altri.
  • CMake versione 3.11.x - 3.17.x. Nota: Di solito non si può prendere l'ultima versione di CMake. Pertanto, utilizzare solo una versione di CMake nell'intervallo specificato in questa pagina!
  • LibPack (chiamato anche FreeCADLibs). Questo è un insieme di librerie necessarie per compilare FreeCAD su Windows. A seconda della versione di FreeCAD che vuoi compilare, devi scaricare il LibPack corrispondente. Ad esempio per compilare FreeCAD 0.18, scarica la versione a 32 bit o 64 bit di LibPack for 0.18, per compilare l'ultima versione di sviluppo 0.19, scaricare il LibPack for 0.19 (esiste solo una versione a 64 bit).

Programmi opzionali

  • Un frontend GUI per Git. Ci sono diversi frontend disponibili, vedi this list. Il vantaggio principale di un frontend è che non devi imparare i comandi Git per ottenere il codice sorgente di FreeCAD o per inviare patch al repository GitHub di FreeCAD.

Di seguito descriviamo la gestione del codice sorgente usando il frontend TortoiseGit. Questo frontend si integra direttamente con Esplora file di Windows e dispone di una grande comunità di utenti per ricevere assistenza in caso di problemi.

  • NSIS Questo è il programma per generare il programma di installazione di Windows di FreeCAD. (Informazioni: per FreeCAD 0.17 e precedenti il programma WiX è stato utilizzato per creare il programma di installazione.)

Codice sorgente

Ora puoi ottenere il codice sorgente di FreeCAD:

Utilizzo di un frontend

Quando si utilizza il Git frontend TortoiseGit:

  1. Crea una nuova cartella in cui dovrebbe essere il codice sorgente.
  2. Fare clic con il tasto destro su questa cartella in Esplora file di Windows e selezionare nel menu contestuale Git Clone.
  3. Apparirà una finestra di dialogo. Usa lì come URL per il repository di FreeCAD

https://github.com/FreeCAD/FreeCAD.git

e clicca OK.

Ora il codice sorgente viene scaricato e la sua cartella diventa una cartella tracciata da Git.

Usando la riga di comando

Per creare un ramo locale e scaricare il codice sorgente è necessario aprire un terminale (prompt dei comandi) e portarsi nella directory in cui si desidera creare il sorgente, quindi digitare:

git clone https://github.com/FreeCAD/FreeCAD.git

Compilatore

Il compilatore predefinito (consigliato) è MS Visual Studio (MSVC). Sebbene possa essere possibile utilizzare altri compilatori utilizzando Cygwin o MinGW gcc, non è stato testato o portato finora.

Puoi ottenere una versione gratuita di MSVC (per l'utilizzo di OpenSource) scaricando l'edizione "Community" di MS Visual Studio. Per fare ciò, utilizzare questo URL

Per chi vuole evitare l'installazione completa dell'ingombrante MSVC al solo scopo di avere un compilatore può vedere Compilare in Windows - Occupare meno spazio.

Nota: Nonostante l'edizione Community di MSVC sia gratuita, è necessario creare un account Microsoft dall'IDE MSVC che è possibile utilizzare l'IDE per più di 30 giorni. Se compilerai solo usando la riga di comando, non hai bisogno dell'IDE e quindi non hai un account Microsoft.

Come IDE alternativo gratuito e OpenSource puoi usare KDevelop. Puoi usare KDevelop per modificare e scrivere codice C ++ ma devi usare la riga di comando per compilare.

Optional System Path Configuration

programmi in queste cartelle dalla riga di comando / powershell o se si desidera trovare programmi speciali da parte del compilatore o di CMake. Oltre a ciò, potrebbe essere necessario aggiungere cartelle al PERCORSO se non si sono utilizzate le opzioni corrispondenti durante l'installazione del programma.

  • Puoi includere la cartella del tuo LibPack nella variabile PATH del tuo sistema. Ciò è utile se prevedi di creare più configurazioni / versioni di FreeCAD.
  • Se non hai utilizzato l'opzione per aggiungere CMake al PERCORSO durante l'installazione, aggiungi la sua cartella di installazione

C:\Program Files\CMake\bin to the PATH.

  • Se non hai utilizzato l'opzione per aggiungere TortoiseGit al PERCORSO durante l'installazione, aggiungi la sua cartella di installazione

C:\Program Files\TortoiseGit\bin to the PATH.

Per aggiungere percorsi di cartelle alla variabile PATH:

  1. Nel menu Start di Windows, fai clic con il pulsante destro del mouse su "Computer" e scegli "Proprietà".
  2. Nella finestra di dialogo visualizzata, fai clic su "Impostazioni di sistema avanzate".
  3. Si aprirà un'altra finestra di dialogo. Fare clic lì nella scheda Avanzate in Variabili d'ambiente.
  4. Ancora una volta si aprirà un'altra finestra di dialogo. Seleziona quindi la variabile Percorso e fai clic su Modifica.
  5. E di nuovo si aprirà un'altra finestra di dialogo. Fai clic su Nuovo e aggiungi al percorso la cartella di Git o LibPack.
  6. Infine premi OK e chiudi tutte le finestre di dialogo premendo anche OK.

Configurazione

Once you have all of the necessary tools, libraries, and FreeCAD source code, you are ready to begin the configuration and compilation process. This process will proceed in five steps:

  1. Run CMake once to examine your system and begin the configuration progress (this will report that it failed).
  2. Adjust necessary CMake settings to set the locations of the LibPack and enable Qt5.
  3. Re-run CMake to finalize the configuration (this time it should succeed).
  4. Use CMake to generate the Visual Studio build system.
  5. Use Visual Studio to build FreeCAD.

CMake

Ora devi configurare l'ambiente di compilazione usando CMake:

  1. Apri la GUI di CMake
  2. Specificare lì la cartella di origine di FreeCAD
  3. Specifica la cartella di creazione che hai appena creato nel passaggio precedente.
  4. Fai clic su Configura
  5. Nella finestra di dialogo visualizzata specificare il generatore in base a quello che si desidera utilizzare. Per MS Visual Studio standard usa Visual Studio xx 2yyy dove xx è la versione del compilatore e 2yyy l'anno della sua uscita. Si consiglia di utilizzare l'opzione predefinita Usa compilatori nativi predefiniti.

Nota: È importante specificare la variante di bit corretta. Se hai la variante a 64 bit di LibPack devi usare anche il compilatore x64.

Questo avvierà la configurazione e fallirà a causa delle impostazioni mancanti.

Se non riesce con il messaggio che Visual Studio non è stato trovato, il supporto CMake in MSVC non è ancora installato. Per farlo:

  1. Apri l'IDE MSVC
  2. Utilizza il menu Strumenti → Ottieni strumenti e funzionalità
  3. Nella scheda Carichi di lavoro abilita Sviluppo desktop con C++
  4. Sul lato destro ora dovresti vedere che il componente Strumenti Visual C++ per CMake sarà installato.
  5. Installalo.

If it fails with a message about the wrong Python version or missing Python, then:

  1. Use the "Search:" box in CMake to search for the string "Python"
  2. If you see there a path like C:/Program Files/Python38/python.exe, CMake recognized the Python that is already installed on your PC, but that version is not compatible with the LibPack. Since the LibPack includes a compatible version of Python, modify the following Python settings in CMake to its paths (assuming the LibPack is in the folder D:\FreeCAD-build\FreeCADLibs_12.5.2_x64_VC17):

Se non si verificano errori in Visual Studio o Python, va tutto bene, ma CMake non conosce ancora tutte le impostazioni necessarie. Pertanto ora:

  1. Assicurati che l'opzione di ricerca Avanzate sia selezionata.
  2. Cerca in CMake la variabile FREECAD_LIBPACK_DIR e specifica la posizione corretta nella cartella LibPack.
  3. Cerca la variabile BUILD_QT5 e abilita questa opzione.
  4. Fai di nuovo clic su Configura

Ora non dovrebbero esserci errori. In tal caso, fai clic su Genera. Al termine, è possibile chiudere CMake e continuare ad avviare la compilazione di FreeCAD. Tuttavia, per la prima compilazione tienilo aperto per il caso che desideri o devi modificare alcune opzioni per il processo di compilazione:

Note: When compiling FreeCAD 0.19, the CMake variable BUILD_ENABLE_CXX_STD will be set to C++14 while for FreeCAD 0.20 it will be set to C++17. This is because FreeCAD 0.20 requires at least the C++ language standard version 17. So when you compiled the last time FreeCAD 0.19 it is necessary to re-run CMake for FreeCAD 0.20 to change the C++ language standard.

Opzioni per il processo di compilazione

Il sistema di generazione CMake offre la flessibilità necessaria per il processo di creazione. Ciò significa che è possibile attivare e disattivare alcune funzionalità o moduli tramite le variabili CMake.

Ecco una descrizione di alcune di queste variabili:

Link table
Nome variabile Descrizione Predefinito
BUILD_XXX Crea FreeCAD con il componente XXX. Se non si desidera / è necessario compilare ad es. il workbench OpenSCAD, disabilita la variabile BUILD_OPENSCAD. FreeCAD non avrà quindi questo banco di lavoro.

Costruzione di FreeCAD

A seconda del compilatore, il processo per la creazione di FreeCAD sarà leggermente diverso. Nelle sezioni seguenti sono descritti i flussi di lavoro noti. Se stai costruendo con Qt Creator, passa a Building with Qt Creator, altrimenti procedi direttamente:

Compilare con Visual Studio 15 2017, e Visual Studio 16 2019

Release Build

  1. Avvia l'IDE di Visual Studio. Questo può essere fatto premendo il pulsante Apri progetto nella GUI di CMake o facendo doppio clic sul file FreeCAD.sln che trovi nella cartella di compilazione.
  2. Nella barra degli strumenti dell'IDE MSVC assicurati di utilizzare per la prima compilation Release.
  3. C'è una finestra chiamata Solution Explorer. Essa elenca tutti i possibili target di compilazione.

Per compilare un FreeCAD pronto all'uso, compila la destinazione INSTALLA , vedi sezione Running and installing FreeCAD.

Se non ricevi errori, hai finito. Congratulazioni! Puoi uscire da MSVC o tenerlo aperto.

Note: FreeCAD 0.20 requires at least the C++ language standard version 17 but the 3rd-party component flann from the LibPack is not yet ready for this. Therefore you will get compilation errors for the target ReverseEngineering. To fix this, right-click on this target in the MSVC solution explorer and select in the context menu the last entry Properties. In the appearing dialog change the C++ Language Standard to ISO C++14. Finally build the target ALL_BUILD again.

Debug Build

For a debug build it is necessary that the Python is used that is included in the LibPack. To assure this:

  1. Search in the CMake GUI for "Python"
  2. If you see there a path like C:/Program Files/Python38/python.exe, CMake recognized the Python that is installed on your PC and not the one of the LibPack. In this case adapt these different Python settings in CMake to this (assuming the LibPack is in the folder D:\FreeCAD-build\FreeCADLibs_12.5.2_x64_VC17):

Now

  1. Start the Visual Studio IDE. This can either be done by pressing the button Open Project in the CMake GUI or by double-clicking on the file FreeCAD.sln that you find in your build folder.
  2. In the toolbar of the MSVC IDE assure that you use for the first compilation Debug.
  3. There is a window called Solution Explorer. It lists all possible compilation targets. To start a full compilation, right-click on the target ALL_BUILD and then choose Build in the context menu.

This will now take quite a long time. If there were no compilation errors, you can start the debug build:

  1. Right-click on the target FreeCADMain and then choose Set as Startup Project in the context menu.
  2. Finally click in the toolbar on the button with the green triangle named Local Windows Debugger.

This will start the debug build of FreeCAD and you can use the MSVC IDE to debug it.

Video Resource

An English language tutorial that begins with configuration in CMake Gui and continues to the `Build` command in Visual Studio 16 2019 is available unlisted on YouTube at Tutorial: Build FreeCAD from source on Windows 10.

Costruire con Qt Creator (obsoleto)

Installazione e configurazione di Qt Creator

  • Scarica e installa Qt Creator
  • Strumenti → Opzioni → Editor di testo → scheda Comportamento:
    • Codifica dei file → Codifiche predefinite:
    • Impostato su: ISO-8859-1 /...csISOLatin1 (Alcuni caratteri creano errori / avvertimenti con Qt Creator se lasciato impostato su UTF-8. Questo sembra risolverlo.)
  • Strumenti → Opzioni → Crea ed esegui:
    • Scheda CMake
      • Riempi la casella Eseguibile con il percorso di cmake.exe
    • Scheda Kit
      • Nome: MSVC 2008
      • Compilatore: Microsoft Visual C++ Compiler 9.0 (x86)
      • Debugger: rilevato automaticamente ...
      • Versione Qt: Nessuna
    • Scheda Generale
      • Deselezionare: crea sempre un progetto prima di distribuirlo
      • Deselezionare: distribuire sempre il progetto prima di eseguirlo

Importa progetto e crea

  • File → Apri file o progetto
  • Apri CMakeLists.txt che si trova nel livello più alto della fonte
  • Questo avvierà CMake
  • Scegli la cartella di costruzione e fai clic su Avanti
  • Imposta generatore su NMake Generator (MSVC 2008)
  • Clicca Esegui CMake. Segui le istruzioni illustrate sopra per configurare CMake a tuo piacimento.

Ora è possibile creare FreeCAD

  • Build → Build All
  • Ci vorrà molto tempo ...

Una volta completato, può essere eseguito: Ci sono 2 triangoli verdi in basso a sinistra. Uno è il debug. L'altro è eseguito. Scegli quello che vuoi.

Configurazione della riga di comando

I passaggi su come compilare dalla riga di comando dipendono dal compilatore. Per MSVC 2017 i passaggi sono:

  1. Nel menu Start di Windows vai a Visual Studio 2017 → Visual Studio Tools e scegli Prompt dei comandi per sviluppatori per VS 2017
  2. Passa alla tua cartella di build.
  3. Eseguire il comando
msbuild ALL_BUILD.vcxproj /p:Configuration=Release

o

msbuild INSTALL.vcxproj /p:Configuration=Release

Questi passaggi possono anche essere automatizzati. Ecco ad esempio una soluzione per MSVC 2017:

  1. Scarica lo script compile-FC.txt.
  2. Rinominalo in compile-FC.bat
  3. In Esplora file Shift di Winddows + Fare clic con il tasto destro del mouse sulla cartella di creazione e utilizzare dal menu di scelta rapida "Prompt dei comandi qui".
  4. Eseguire il comando
compile-FC install

Invece di chiamare compile-FC con l'opzione installa puoi anche usare debug o release:

debug   - compila FreeCAD nella configurazione di debug

release - compilare FreeCAD nella configurazione della versione

install    - compilare FreeCAD nella configurazione di rilascio e creare un'installazione di installazione

Esecuzione e installazione di FreeCAD

Esistono 2 metodi per eseguire FreeCAD compilato:

Metodo 1: Esegui FreeCAD.exe che trovi nella cartella di compilazione nella sottocartella bin

Metodo 2: costruisci il target INSTALL

Il metodo 2 è quello più semplice perché assicura automaticamente che tutte le librerie necessarie per eseguire FreeCAD.exe siano nella cartella corretta. FreeCAD.exe e le librerie verranno emessi nella cartella specificata nella variabile CMakeCMAKE_INSTALL_PREFIX.

Per il Metodo 1 devi mettere le librerie nella cartella bin della tua cartella di build (dove si trova FreeCAD.exe). Questo può essere fatto facilmente:

  1. Apri la GUI di CMake.
  2. Cerca lì l'opzione variabile FREECAD_COPY_DEPEND_DIRS_TO_BUILD e controllala. Se non esiste tale opzione, le librerie sono già state copiate, vedere la descrizione delle opzioni
  3. Cerca lì l'opzione variabile FREECAD_COPY_LIBPACK_BIN_TO_BUILD e controllala.
  4. Cerca lì l'opzione variabile "FREECAD_COPY_PLUGINS_BIN_TO_BUILD" e controllala.
  5. Fare clic su Configura. Al termine della configurazione CMake copierà automaticamente le librerie necessarie dalla cartella LibPack.

Troubleshooting

When running FreeCAD you may encounter missing DLLs when using certain workbenches or features of workbenches. The error message in FreeCAD's console will not tell you what DLL is missing. To find this out you must use an external tool:

import os
os.system(r"~\DependenciesGui.exe")

Note: Instead of the ~ you must specify the full path to the DependenciesGui.exe on your system.

  • Now drag in the *.pyd file of the workbench with which you get missing DLLs reported.

Aggiornamento della build

FreeCAD è sviluppato molto attivamente. Pertanto il suo codice sorgente cambia quasi quotidianamente. Nuove funzionalità vengono aggiunte e i bug corretti. Per beneficiare di queste modifiche al codice sorgente, è necessario ricostruire FreeCAD. Questo avviene in due fasi:

  1. Aggiornamento del codice sorgente
  2. Ricompilazione

Aggiornamento del codice sorgente

Usando un frontend

Quando si utilizza il Git frontend TortoiseGit:

  1. Fare clic con il tasto destro del mouse sulla cartella del codice sorgente di FreeCAD in Esplora file di Windows e selezionare nel menu di scelta rapida 'Pull' .
  2. Apparirà una finestra di dialogo. Seleziona lì quale ramo di sviluppo vuoi ottenere. master è il ramo principale. Pertanto utilizzare questo a meno che non si desideri compilare una nuova funzionalità speciale da un ramo che non è stato ancora unito a "master". (Per ulteriori informazioni sui rami Git, vedere Git development process.)

Finalmente clicca OK.

Utilizzando la riga di comando

Apri un terminale (prompt dei comandi) e passa alla directory di origine. Quindi digitare:

git pull https://github.com/FreeCAD/FreeCAD.git master

dove master è il nome del ramo di sviluppo principale. Se vuoi ottenere il codice da un altro ramo, usa il suo nome invece di master.

Ricompilazione

  1. Apri l'IDE MSVC facendo doppio clic sul file FreeCAD.sln o sul file ALL_BUILD.vcxproj nella cartella di compilazione.
  2. Continua con il passaggio 2 dalla sezioneBuilding with Visual Studio 15 2017.

Tools

In order to join the FreeCAD development you should compile and install the following tools:

Qt Designer plugin

FreeCAD uses Qt as toolkit for its user interface. All dialogs are setup in UI-files that can be edited using the program Qt Designer that is part of any Qt installation and also included in the LibPack. FreeCAD has its own set of Qt widgets to provide special features like adding a unit to input fields and to set preferences properties.

Compilation

The plugin cannot be loaded by the Qt Designer if it was compiled using another Qt version than the one your Qt Designer/Qt Creator is based on. Therefore the plugin must be compiled together with FreeCAD:

  • In the CMake options (see this section above) enable the option BUILD_DESIGNER_PLUGIN and reconfigure.
  • open MSVC and build the target FreeCAD_widgets

As result you will get the plugin file 'FreeCAD_widgets.dll in the folder
~\src\Tools\plugins\widget\Release

Installation

To install the plugin, copy it to either:

  • If you use the LibPack: to the folder
    ~\FreeCADLibs_12.5.4_x64_VC17\bin\designer
    Since there will only be a bin folder and you must first create the designer subfolder.
  • If you have a full Qt installation: you can choose between the folder
    C:\Qt\5.15.2\msvc2019_64\plugins\designer
    or
    C:\Qt\5.15.2\msvc2019_64\bin\designer (you must first create the designer subfolder.)
    (adapt the paths to your installation!).

Finally (re)start Qt Designer and check its menu Help → Plugins. If the plugin FreeCAD_widgets.dll is listed as being loaded, you can now design and change FreeCAD's .ui files. If not, you must compile the DLL by yourself.

If you prefer using Qt Creator instead of Qt Designer, the plugin file must be placed in this folder:
C:\Qt\Qt5.15.2\Tools\QtCreator\bin\plugins\designer
Then (re)start Qt Creator, switch to the mode Design and then check the menu Tools → Form Editor → About Qt Designer Plugins. If the plugin FreeCAD_widgets.dll is listed as being loaded, you can now design and change FreeCAD's .ui files. If not, you must compile the DLL by yourself.

Thumbnail Provider

FreeCAD has the feature to provide preview thumbnails for *.FCStd files. That means that in the Windows file explorer *.FCStd files are shown with a screenshot of the model it contains. To provide this feature, FreeCAD needs to have the file FCStdThumbnail.dll installed to Windows.

Installation

The DLL is installed this way:

  1. Download this ZIP file and extract it.
  2. Open a Windows command prompt with administrator privileges (these privileges are a requirement).
  3. Change to the folder where the DLL is.
  4. Execute this command
    regsvr32 FCStdThumbnail.dll
    

So check if it works, assure that in FreeCAD the preferences option Save thumbnail into project file when saving document is enabled and save a model. Then view in Windows Explorer the folder of the saved model using a symbol view. You should now see a screenshot of the model in the folder view.

Compilation

To compile the FCStdThumbnail.dll

  1. Change to the FreeCAD source folder
    ~\src\Tools\thumbs\ThumbnailProvider
  2. Open the CMake GUI
  3. Specify there as source folder the one you are currently in.
  4. Use the same folder as build folder.
  5. Click Configure
  6. In the appearing dialog, specify the generator according to the one you want to use. For the standard MS Visual Studio use Visual Studio xx 2yyy where xx is the compiler version and 2yyy the year of its release. It is recommended to use the default option Use default native compilers.
    Note: It is important to specify the correct bit variant. If you have the 64bit variant of LibPack you must also use the x64 compiler.
  7. Click on Generate.
  8. You should now have the file ALL_BUILD.vcxproj in the folder ~\src\Tools\thumbs\ThumbnailProvider. Double-click on it and the MSVC IDE will open.
  9. In the toolbar of the MSVC IDE assure that you use the compilation target Release.
  10. There is a window called Solution Explorer. Right-click there on ALL_BUILD and then choose Build.
  11. As result you should now have a FCStdThumbnail.dll in the folder ~\src\Tools\thumbs\ThumbnailProvider\release that you can install as described above.

Compiling Open Cascade

The LibPack comes with a version of Open Cascade that is suitable for general use. However, under some circumstances you may wish to compile against an alternate version of Open Cascade, such as one of their official releases, or a patched fork.

When compiling Open Cascade for FreeCAD note that there is no guarantee that FreeCAD will work with all versions of Open Cascade. Note also that when you are using the Netgen library, you must use the a NetGen version that it approved to compile with the Open Cascade version you like to compile.

To compile:

  • Then open the CMake GUI to configure the build system in a similar manner to building FreeCAD. These CMake options have to be set (or explicitly not set):
Variable name Description Default
3RDPARTY_DIR The path to 3rdparty components. It is recommended to use the folder as input where your used LibPack is. Explicitly leave this field empty. empty
3RDPARTY_DOXYGEN_EXECUTABLE The path to the executable of the 3rdparty component Doxygen. It is recommended to install Doxygen. CMake will then find it automatically. empty
3RDPARTY_FREETYPE_DIR The path to the necessary 3rdparty component Freetype. It is recommended to use the folder as input where your used LibPack is. empty
3RDPARTY_RAPIDJSON_DIR Only available if USE_RAPIDJSON is used. The path to the 3rdparty component RapidJSON. It is recommended NOT to use an existing LibPack folder as input. You can use the RapidJSOn folder from a LibPack, but copy it to a new folder and use this new folder as input. empty
3RDPARTY_TCL_DIR The path to the necessary 3rdparty component TCL. It is recommended NOT to use an existing LibPack folder as input. Take for example one of these releases, extract it and take this as input folder for CMake. empty
3RDPARTY_TK_DIR The path to the necessary 3rdparty component TK. It is recommended NOT to use an existing LibPack folder as input. Take for example one of these releases, extract it and take this as input folder for CMake. empty
3RDPARTY_VTK_DIR Only available if USE_VTK is used. The path to the necessary 3rdparty component VTK. It is recommended to use the folder as input where your used LibPack is. If you use another folder please assure that you don't use VTK 9.x or newer. empty
BUILD_RELEASE_DISABLE_EXCEPTIONS Disables exception handling for release builds. For FreeCAD you must set it to OFF. ON
INSTALL_DIR The output folder when building the target INSTALL. If the build was successful, take the files from this folder to update your LibPack. Windows default program installation folder
INSTALL_DIR_BIN The output subfolder for the DLL when building the target INSTALL. You must change it to bin win64/vc14/bin
INSTALL_DIR_LIB The output subfolder for the .lib files when building the target INSTALL. You must change it to lib win64/vc14/lib
USE_RAPIDJSON To compile Open Cascade with support for RapidJSON. Enabling this is mandatory in order to get support for the file format glTF. OFF
USE_VTK To compile Open Cascade with support for VTK. Enabling this is optimal. You can use this to build Open Cascade's VTK bridge. OFF
  • Open the project in Visual Studio and first build the ALL_BUILD and then INSTALL targets in the Release mode.
  • Repeat building the two targets in the Debug mode.

To build FreeCAD using the self-compiled Open Cascade, you must do the following:

  • Copy all folders from the INSTALL_DIR to your LibPack folder (overwrite the existing files)
  • Switch to the LibPack folder and go there to the subfolder cmake
  • Open there the file OpenCASCADEDrawTargets.cmake with a text editor
  • Search there for absolute paths to your LibPack folder and remove them. So e.g. the absolute path
    D:/FreeCADLibs_12.5.4_x64_VC17/lib/freetype.lib
    becomes just
    freetype.lib
  • Do the same for the file OpenCASCADEVisualizationTargets.cmake

Compiling Netgen

The LibPack comes with a version of Netgen that will was tested to be build with the Open Cascade version of the LibPack. The problem is that every new release of Netgen changes the API. Also every new release of Open Cascade does the same. Therefore one cannot just easily change the Netgen version.

However, you might build Netgen nevertheless. This is an easy task:

  • First obtain the Netgen source code, either directly from Netgen 's git repository.
  • Then open the CMake GUI to configure the build system in a similar manner to building FreeCAD. These CMake options have to be set:
Variable name Description Default
CMAKE_INSTALL_PREFIX The output folder when building the target INSTALL. If the build was successful, take the files from this folder to update your LibPack. C:/netgen
OpenCasCade_DIR The path to the CMake files of Open Cascade. If you built Open Cascade as described in section Compiling Open Cascade you can use the subfolder cmake of there folder you used as INSTALL_DIR. If not, use the subfolder cmake of your LibPack. Note hereby that the LibPack must then already contain a proper Open Cascade build. Independent what folder you use, you must now also create there a subfolder lib and copy in the files freetype.lib and freetyped.lib from your LibPack. empty
USE_GUI set it to OFF ON
USE_NATIVE_ARCH set it to OFF; this is only necessary important to support older CPU that don't have the AVX2 instruction set ON
USE_OCC set it to ON OFF
USE_PYTHON set it to OFF ON
USE_SUPERBUILD set it to OFF ON
ZLIB_INCLUDE_DIR The path to the necessary 3rdparty component zlib. It is recommended to use the folder as input where your used LibPack is. empty
ZLIB_LIBRARY_DEBUG The path to the ZLib file zlibd.lib. It is located in the subfolder lib of your LibPack folder. empty
ZLIB_LIBRARY_RELEASE The path to the ZLib file zlib.lib. It is located in the subfolder lib of your LibPack folder. empty
  • Additionally you need to add a new CMake entry:

name: CMAKE_DEBUG_POSTFIX, type: string, content: _d
This assures that he file names of the debug libraries get another name than the release libraries and can later not be accidentally exchanged.

  • Press the Configure button in CMake to generate the *.cmake files.
  • Only necessary if older CPU should be supported that don't have the AVX2 instruction set:
    • Search your Netgen build folder for the file netgen-targets.cmake and open it with a text editor. Remove the setting ;/arch:AVX2 in the Option INTERFACE_COMPILE_OPTIONS.
    • Press the Configure button in CMake again.
  • Press the Generate button in CMake.
  • Open the project in Visual Studio and first build the ALL_BUILD and then INSTALL targets in the Release mode.
  • Repeat building the two targets in the Debug mode.

To build FreeCAD using the self-compiled Netgen, you must do the following:

  • Copy all folders from the CMAKE_INSTALL_PREFIX to your LibPack folder (overwrite the existing files)

Riferimenti