Compile on Windows: Difference between revisions

From FreeCAD Documentation
(Marked this version for translation)
mNo edit summary
(164 intermediate revisions by 14 users not shown)
Line 1: Line 1:
<languages/>
<translate>
<translate>
<!--T:109-->
{{Docnav
|[[Bug_Triage|Bug Triage]]
|[[Compile_on_Linux|Compile on Linux]]
}}

<!--T:1-->
<!--T:1-->
This article explains step by step '''how to compile FreeCAD on Windows'''.
This page explains step by step '''how to compile FreeCAD 0.18 or newer on Windows'''. For other platforms see [[Compiling|Compiling]].
</translate>

{{TOCright}}
<!--T:74-->
<translate>
See also [[Compile_on_Windows_with_VS2013|Compile on Windows with Visual Studio 2013]]


== Prerequisites == <!--T:2-->
== Prerequisites == <!--T:2-->


<!--T:70-->
<!--T:136-->
At first you must install the following required programs ad libraries:
{{Note|Note|Please be aware that:

*The new LibPack (FreeCADLibs_10.0_x64_VC11.7z) requires Visual Studio 2012.
===Required=== <!--T:100-->
*Currently FreeCAD supports both Cmake version 2.x.x and Cmake 3.x.x}}

<!--T:116-->
* [http://git-scm.com/ Git] (There are also a GUI frontends available for Git, see the next section.)

<!--T:170-->
* [http://www.cmake.org/cmake/resources/software.html CMake] version 3.11.x - 3.17.x. '''Note:''' Usually one cannot take the latest CMake version. Therefore only use a CMake version in the range specified on this page!

<!--T:171-->
It is recommended to use the option ''Add CMake to the system PATH for all users'' when installing CMake. Then you can later easily access CMake also from the command line/powershell.

<!--T:172-->
* LibPack (also called FreeCADLibs). This is a set of libraries necessary to compile FreeCAD on Windows. Depending on the FreeCAD version you want to compile, you must download the corresponding LibPack. For example to compile FreeCAD 0.18, download either the 32bit or the 64bit version of the [https://github.com/FreeCAD/FreeCAD-ports-cache/releases/tag/v0.18 LibPack for 0.18], to compile the latest development version 0.19, download the [https://github.com/FreeCAD/FreeCAD/releases/tag/0.19_pre LibPack for 0.19] (there is only a 64bit version).

<!--T:173-->
Just download the LibPack, you will unpack and set it up later.

<!--T:174-->
'''Note''': It is recommended to use the same compiler ''MS Visual Studio'' (MSVC) version the LibPack is designed for. This assures that the compilation and the execution of the compiled FreeCAD.exe succeeds. So you should for example be able to compile FreeCAD 0.18 using the LibPack for 0.19 and MSVC 15 but you you might get problems compiling FreeCAD 0.18 using the LibPack for 0.18 and MSVC 15 because the LibPack for 0.18 is designed to be built with MSVC&nbsp;12.

===Optional programs=== <!--T:137-->

<!--T:175-->
* [https://www.python.org/downloads/ Python 3.x]. A separate python installation is not mandatory since the LibPack contains Python. However, to be able to test later your FreeCAD build it is useful to have a standalone Python installation. It is recommended to use not the latest version, but the prior version (e.g. not Python 3.8 but 3.7).

<!--T:176-->
* A GUI frontend for Git. There are several frontends available, see [https://en.wikipedia.org/wiki/Comparison_of_Git_GUIs this list]. The main benefit of a frontend is that you don't have to learn the Git commands to get the source code of FreeCAD or to send patches to the GitHub repository of FreeCAD.

<!--T:177-->
In the following we describe source code handling using the frontend [https://tortoisegit.org/ TortoiseGit]. This frontend integrates directly to Windows file explorer and has a large user community to get help in case you have problems.

<!--T:178-->
* [http://sourceforge.net/projects/nsis/ NSIS] This is the program to generate the Windows installer of FreeCAD. (Information: For FreeCAD 0.17 and older the program [http://wixtoolset.org/ WiX] was used to create the installer.)

===Source code=== <!--T:98-->

<!--T:143-->
Now you can get the source code of FreeCAD:

====Using a frontend==== <!--T:144-->

<!--T:145-->
When using the [https://en.wikipedia.org/wiki/Comparison_of_Git_GUIs Git frontend] TortoiseGit:
# Create a new folder where the source code should be.
# Right-click on this folder in the Windows file explorer and select in the context menu '''Git Clone'''.
# A dialog will appear. Use there as URL for the FreeCAD repository

</translate>
''https://github.com/FreeCAD/FreeCAD.git''
<translate>

<!--T:179-->
and click '''OK'''.

<!--T:180-->
Now the source code is downloaded and its folder becomes a folder tracked by Git.

====Using the command line==== <!--T:117-->

<!--T:102-->
To create a local tracking branch and download the source code, open a terminal (command prompt) and switch there to the directory you want the source, then type:

</translate>
{{Code|code=
git clone https://github.com/FreeCAD/FreeCAD.git
}}
<translate>


To compile FreeCAD in Windows you will require:
===Compiler=== <!--T:71-->
===Compiler=== <!--T:71-->
On Windows, the default compiler is M$ Visual Studio, be it the Express or Full 2012 versions. You will also need to install the Windows Platform SDK to get several required libraries (e.g. Windows.h), though they may not be required with M$ compilers (either full or express).


<!--T:118-->
{{Note|Note|Though it may be possible to use Cygwin or MinGW gcc it's not tested or ported so far.}}
The default (recommended) compiler is MS Visual Studio (MSVC). Though it may be possible to use other compilers using Cygwin or MinGW gcc it is not tested or ported so far.
===Third Party Libraries=== <!--T:3-->
You will need all of the [[Third Party Libraries]] to successfully compile FreeCAD. If you use the M$ compilers it is recommended to install the FreeCAD LibPack, which provides all of the required libraries to build FreeCAD in Windows.
===Required programs===
* CMake version 2.x.x or cmake 3.x.x
* TortoiseGit
* Python 2.6
===Optional programs===
* [http://sourceforge.net/projects/nsis/ NSIS] Windows installer (note: formerly, [http://wixtoolset.org/ WiX] installer was used - now under transition to NSIS) - if you want to make msi installer


===System Path Configuration=== <!--T:5-->
<!--T:146-->
You can get a free version of MSVC (for OpenSource usage) by downloading the ''Community'' edition of MS Visual Studio. To do so, use this URL
Inside your system path be sure to set the correct paths to the following programs:
* Libpack
* git (not tortoiseGit, but git.exe)
* python


== Configuration with CMake == <!--T:6-->
<!--T:181-->
<nowiki>https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=xx</nowiki>
{{Note|Note|Be sure to [http://www.cmake.org/cmake/resources/software.html download CMake]
and install it on your build machine.}}


=== The switch to CMake === <!--T:7-->
<!--T:182-->
where xx is the version number. So to get MSVC 15 (calso called MSVC 2017), use this URL:
{{Note|Warning|Since FreeCAD version 0.9 we have stopped providing .vcproj files.}}
Currently, FreeCAD uses the CMake build system to generate build and make files that can be used between different operating systems and compilers.
If you want build former versions of FreeCAD (0.8 and older) see
[[#Building older versions|Building older versions]] later in this article.


<!--T:8-->
<!--T:183-->
https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=15
We switched because it became more and more painful to maintain project files for 30+
build targets and x compilers. CMake gives us the possibility to support alternative
IDEs, like Code::Blocks, Qt Creator and Eclipse CDT.
The main compiler is still M$ VC9 Express, though. But we plan for the future a build process on
Windows without proprietary compiler software.


=== CMake === <!--T:52-->
<!--T:106-->
For those who want to avoid installing the huge MSVC for the mere purpose of having a compiler, see [[CompileOnWindows - Reducing Disk Footprint]].
The first step to build FreeCAD with CMake is to configure the environment. There
are two ways to do it:
* Using the LibPack
* Installing all the needed libraries and let CMake find them


<!--T:147-->
'''Note:''' Despite that the ''Community'' edition of MSVC is free, you must create a Microsoft account from within the MSVC IDE that you can use the IDE for more than 30 days. If you will only compile using the command line, you don't need the IDE and thus no Microsoft account.


<!--T:53-->
<!--T:184-->
As a free and OpenSource alternative IDE you can use [https://www.kdevelop.org/download KDevelop]. You can use KDevelop to modify and write C++ code but must use the command line to compile.
The following process will assume you are using the LipPack. The second option may be discussed
in [[#Options for the Build Process|Options for the Build Process]].


===Optional system path configuration=== <!--T:5-->
<!--T:54-->
Add LibPack to the system path:
* Start menu -> Right click on Computer -> Properties -> Advanced system settings
* Advanced tab -> Environment Variables...
* Add the libpack folder location to the '''PATH'''
* It should be separated from the others with a semicolon `;`


<!--T:121-->
Optionally you can include the paths to some folders to the system PATH variable. This is helpful if you want to access programs in these folders from the command line/powershell or if you want special programs to be found by the compiler or CMake. Besides this, adding folders to the PATH might be necessary if you did not use the corresponding options when installing the program.


<!--T:148-->
=== Configure CMake using GUI === <!--T:75-->
* You can include the folder of your LibPack in your system PATH variable. This is useful if you plan to build multiple configurations/versions of FreeCAD.
[[File:CMake_Screen.png|500px]]
* If you did not use the option to add CMake to the PATH while installing it, add its installation folder
* Open the CMake GUI
* Specify the source folder
* Specify the build folder
* Click '''Configure'''
* Specify the generator according to the IDE that you'll use.


<!--T:185-->
''C:\Program Files\CMake\bin'' to the PATH.
* If you did not use the option to add TortoiseGit to the PATH while installing it, add its installation folder

<!--T:186-->
''C:\Program Files\TortoiseGit\bin'' to the PATH.

<!--T:104-->
To add folder paths to the PATH variable:
# In the Windows Start menu Right click on ''Computer'' and choose ''Properties''.
# In the appearing dialog click on ''Advanced system settings''.
# Another dialog will open. Click there in the tab ''Advanced'' on '''Environment Variables'''.
# Again another dialog will open. Select then the variable ''Path'' and click on '''Edit'''.
# And again another dialog will open. Click there on '''New''' and add to path to the folder of Git or the LibPack.
# Finally press '''OK''' and close all dialogs by pressing '''OK''' as well.

== Configuration == <!--T:6-->

===LibPack=== <!--T:149-->

<!--T:150-->
At first you need to setup a build folder:
# Create a new folder where the compiled FreeCAD should be. It is highly recommended that this folder is not inside the source code folder of FreeCAD.
# Create there a new subfolder for the LibPack. '''Note:''' The name of this subfolder must be the same as the LibPack file name. If e.g. the LibPack has the filename ''FreeCADLibs_12.1.4_x64_VC15.7z'', you must name the subfolder ''FreeCADLibs_12.1.4_x64_VC15''.
# Extract the LibPack to this subfolder.

===CMake=== <!--T:151-->

<!--T:123-->
Now you need to configure the build environment using CMake:
# Open the CMake GUI
# Specify there the source folder of FreeCAD
# Specify the build folder you just created in the previous step.
# Click '''Configure'''
# 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''.

<!--T:187-->
'''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.


<!--T:76-->
<!--T:76-->
This will begin configuration and should fail because the location of
This will begin the configuration and will fail because of missing settings.
'''FREECAD_LIBPACK_DIR''' is unset.
* Expand the '''FREECAD''' category and set '''FREECAD_LIBPACK_DIR''' to the correct location
* Click '''Configure''' again
* There should be no errors
* Click '''Generate'''
* Close CMake
* Copy '''libpack\bin''' folder into the new build folder CMake created


<!--T:152-->
If it fails with the message that Visual Studio could not be found the CMake support in MSVC is not yet installed. To do this:
# Open the MSVC IDE
# Use the menu Tools → Get Tools and Features
# In the ''Workloads'' tab enable ''Desktop development with C++''
# On the right side you should now see that the component ''Visual C++ tools for CMake'' will be installed.
# Install it.


<!--T:219-->
=== Options for the Build Process === <!--T:77-->
If it fails with a message about the wrong Python version or missing Python, then:
# Search in the CMake GUI for "Python"
# If you see there a path like ''C:/Program Files/Python38/python.exe'', CMake recognized the Python that is already installed on your PC. Since the Python installation is important for different programs on your PC you should keep it as it is and adapt only the 4 different Python settings in CMake to these paths (assuming the LibPack is in the folder ''D:\FreeCAD-build\FreeCADLibs_12.3.2_x64_VC15''):
[[File:CMake_Python_settings.png]]

<!--T:153-->
If there is no error about Visual Studio or Python, everything is fine, but CMake does not yet know all necessary settings. Therefore now:
# Assure that the search option ''Advanced'' is checked.
# Search in CMake for the variable '''FREECAD_LIBPACK_DIR''' and specify there the correct location to the LibPack folder.
# Search for the variable '''BUILD_QT5''' and enable this option.
# Click '''Configure''' again

<!--T:138-->
There should now be no errors. If so, click on '''Generate'''. After this is done you could close CMake and continue to start the compilation of FreeCAD. However, for the first compilation keep it open for the case that you want or need to change some options for the build process:

=== Options for the build process === <!--T:77-->


<!--T:78-->
<!--T:78-->
The CMake build system gives us a lot more flexibility over the build process. That means
The CMake build system gives you the flexibility over the build process. That means you can switch on and off some features or modules by CMake variables.
we can switch on and off some features or modules. It's in a way like the Linux kernel build.
You have a lot of switches to determine the build process.


<!--T:79-->
<!--T:79-->
Here is the description of some of these switches. They will most likely change a lot in the future
Here is a description for some of these variables:
because we want to increase the build flexibility a lot more.



<!--T:80-->
<!--T:80-->
{| class="wikitable" style="text-align:left"
{| class="wikitable" style="text-align:left"
|+ Link table
|-
|-
! Variable name !! Description !! Default
! Variable name !! Description !! Default
|-
|-
| BUILD_XXX || Build FreeCAD with the component XXX. If you don't want/need to compile e.g. the workbench ''OpenSCAD'', disable the variable ''BUILD_OPENSCAD''. FreeCAD will then not have this workbench.
| FREECAD_LIBPACK_USE || Switch the usage of the FreeCAD LibPack on or off || On Win32 on, otherwise off

<!--T:188-->
'''Note:''' Some components are required for other components. If you for example uncheck ''BUILD_ROBOT'' CMake will inform you that then the component ''Path'' cannot be compiled correctly. Therefore check the CMake output after you changed a BUILD_XXX option! || depends
|-
|-
| CMAKE_INSTALL_PREFIX || The output folder when building the target ''INSTALL'', see also section [[#Running and installing FreeCAD|Running and installing FreeCAD]] || Windows' default program installation folder
| FREECAD_LIBPACK_DIR || Directory where the LibPack is || FreeCAD SOURCE dir
|-
|-
| FREECAD_COPY_DEPEND_DIRS_TO_BUILD || Copies depending libraries needed to execute the FreeCAD.exe to the build folder. See also section [[#Running and installing FreeCAD|Running and installing FreeCAD]].</br> '''Note:''' the options FREECAD_COPY_XXX only appear if the libraries were not already copied. So when you change to another LibPack version, it is important to delete all folders in your build folder, except of the LibPack folder. In CMake delete the cache and start as if you compile for the first time and you will get the FREECAD_COPY_XXX options. || OFF
| FREECAD_BUILD_GUI || Build FreeCAD with all Gui related modules || ON
|-
|-
| FREECAD_COPY_LIBPACK_BIN_TO_BUILD || Copies the LibPack binaries needed to execute the FreeCAD.exe to the build folder. See also section [[#Running and installing FreeCAD|Running and installing FreeCAD]]. || OFF
| FREECAD_BUILD_CAM || Build the CAM module, experimental! || OFF
|-
|-
| FREECAD_COPY_PLUGINS_BIN_TO_BUILD|| Copies Qt's plugin files needed to execute the FreeCAD.exe to the build folder. See also section [[#Running and installing FreeCAD|Running and installing FreeCAD]]. || OFF
| FREECAD_BUILD_INSTALLER || Create the project files for the Windows installer. || OFF
|-
|-
| FREECAD_LIBPACK_USE || Switch the usage of the FreeCAD LibPack on or off || ON
| FREECAD_BUILD_DOXYGEN_DOCU || Create the project files for source code documentation. || OFF
|-
|-
| FREECAD_LIBPACK_DIR || Directory where the LibPack is || FreeCAD's source code folder
| FREECAD_MAINTAINERS_BUILD || Switch on stuff needed only when you do a Release build. || OFF
|-
| FREECAD_RELEASE_PDB || Create debug libraries also for release builds || ON
|}
|}

<!--T:12-->
If you are building with Qt Creator, jump to
[[#Building with Qt Creator|Building with Qt Creator]],
otherwise proceed to
[[#Building with Visual Studio 9 2008|Building with Visual Studio 9 2008]].


== Building FreeCAD == <!--T:81-->
== Building FreeCAD == <!--T:81-->
Depending on your current setup, the process for building FreeCAD will be slightly different. This is due to the differences in available software and software versions for each operating system.


<!--T:125-->
Depending on your compiler, the process for building FreeCAD will be slightly different. In the following sections you known workflows are described.
If you are building with Qt Creator, jump to [[#Building with Qt Creator|Building with Qt Creator]], otherwise proceed directly:


</translate>
<!--T:82-->
<div class="mw-collapsible mw-collapsed toccolours">
The following procedure will work for compiling on Windows Vista/7/8, for XP an alternate VS tool set is required for VS 2012 and 2013, which has not been tested successfully with the current Libpacks. To target XP(both x32 and x64) it is recommended to use VS2008 and Libpack FreeCADLibs_11.0_x86_VC9.7z
<translate>


=== Building with Visual Studio 15 2017, and Visual Studio 16 2019=== <!--T:154-->

</translate>
<div class="mw-collapsible-content">
<translate>

<!--T:155-->
# 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.
# In the toolbar of the MSVC IDE assure that you use for the first compilation ''Release''.
# There is a window called ''Solution Explorer''. It lists all possible compilation targets.

<!--T:189-->
To start a full compilation, right-click on the target '''ALL_BUILD''' and then choose '''Build'''.
This will now take quite a long time.

<!--T:156-->
To compile a ready-to use FreeCAD, compile the target ''INSTALL'', see section [[#Running and installing FreeCAD|Running and installing FreeCAD]].

<!--T:157-->
If you don't get any errors you are done. '''Congratulations!''' You can exit MSVC or keep it open.

==== Video Resource ==== <!--T:218-->
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 [https://youtu.be/s4pHvlDOSZQ Tutorial: Build FreeCAD from source on Windows 10].
</translate>
</div>
</div>
<div class="mw-collapsible mw-collapsed toccolours">
<div class="mw-collapsible mw-collapsed toccolours">
<translate>
=== Building with Visual Studio 2013 === <!--T:83-->

=== Building with Visual Studio 12 2013 === <!--T:83-->

</translate>
<div class="mw-collapsible-content">
<div class="mw-collapsible-content">
<translate>

<!--T:112-->
Make sure to specify '''Visual Studio 12 x64'''(or the alternate C-Compiler you are using) as the generator in CMake before you continue.
Make sure to specify '''Visual Studio 12 x64'''(or the alternate C-Compiler you are using) as the generator in CMake before you continue.


Line 145: Line 273:
<!--T:91-->
<!--T:91-->
*Open the project by:
*Open the project by:
File -> Open -> Project/Solution
File Open Project/Solution


<!--T:92-->
<!--T:92-->
Line 152: Line 280:
<!--T:93-->
<!--T:93-->
*Switch the Solutions Configuration drop down at the top to '''Release''' '''X64'''
*Switch the Solutions Configuration drop down at the top to '''Release''' '''X64'''
This may take a while depending on your sytem


<!--T:94-->
<!--T:94-->
*Build -> Build Solution
*Build Build Solution


<!--T:95-->
<!--T:95-->
Line 161: Line 290:
<!--T:96-->
<!--T:96-->
If you don't get any errors you are done. Exit Visual Studio and start FreeCAD by double clicking the FreeCAD icon in the bin folder of the build directory.
If you don't get any errors you are done. Exit Visual Studio and start FreeCAD by double clicking the FreeCAD icon in the bin folder of the build directory.
</translate>
</div>
</div>
</div>
</div>

<!--T:97-->
<div class="mw-collapsible mw-collapsed toccolours">
<div class="mw-collapsible mw-collapsed toccolours">
<translate>


=== Building with Visual Studio 9 2008 === <!--T:84-->
=== Building with Qt Creator (outdated) === <!--T:88-->
<div class="mw-collapsible-content">
{{Note|Warning|Visual C++ Express 2008 does not support 64-bit compilation. There is a workaround [http://jenshuebel.wordpress.com/2009/02/12/visual-c-2008-express-edition-and-64-bit-targets/ here]}}

<!--T:85-->
Make sure to specify '''Visual Studio 9 2008''' as the generator in CMake before you continue.
* Open '''Visual Studio 9 2008''' or '''Visual C++ Express 2008'''
* File -> Open -> Project/Solution
* Open '''FreeCAD_Trunk.sln''' from the build folder CMake created
* Switch the '''Solutions Configuration''' dropdown at the top to '''Release'''
* Build -> Build Solution to build
* Wait until the Build is finished (will take a while)

==== After Building ==== <!--T:86-->
* Debug -> Start without Debugging
* Click popup menu under '''Executable File Name''' and choose '''Browse'''
* Go to the build\bin folder and choose '''FreeCAD.exe'''
* You are done!
</div>
</div>


</translate>
<!--T:87-->
<div class="mw-collapsible mw-collapsed toccolours">

=== Building with Qt Creator === <!--T:88-->
<div class="mw-collapsible-content">
<div class="mw-collapsible-content">
<translate>


==== Installation and configuration of Qt Creator ==== <!--T:61-->
==== Installation and configuration of Qt Creator ==== <!--T:61-->

* Download and install [https://qt-project.org/downloads Qt Creator]
<!--T:126-->
* Tools -> Options -> Text Editor -> Behavior tab:
* Download and install [https://www.qt.io/offline-installers Qt Creator]
** File Encodings -> Default Encodings:
* Tools → Options → Text Editor → Behavior tab:
** File Encodings → Default Encodings:
** Set to: '''ISO-8859-1 /...csISOLatin1''' (Certain characters create errors/warnings with Qt Creator if left set to UTF-8. This seems to fix it.)
** Set to: '''ISO-8859-1 /...csISOLatin1''' (Certain characters create errors/warnings with Qt Creator if left set to UTF-8. This seems to fix it.)
* Tools -> Options -> Build & Run:
* Tools Options Build & Run:
** CMake tab
** CMake tab
*** Fill Executable box with path to cmake.exe
*** Fill Executable box with path to cmake.exe
Line 211: Line 321:
*** Uncheck: Always deploy project before running it
*** Uncheck: Always deploy project before running it


==== Import project and Build ==== <!--T:62-->
====Import project and building==== <!--T:62-->

* File -> Open File or Project
<!--T:127-->
* File → Open File or Project
* Open '''CMakeLists.txt''' which is in the top level of the source
* Open '''CMakeLists.txt''' which is in the top level of the source
* This will start CMake
* This will start CMake
Line 221: Line 333:
<!--T:64-->
<!--T:64-->
Now FreeCAD can be built
Now FreeCAD can be built
* Build -> Build All
* Build Build All
* This will take a long time...
* This will take a long time...


Line 228: Line 340:
There are 2 green triangles at the bottom left. One is debug.
There are 2 green triangles at the bottom left. One is debug.
The other is run. Pick whichever you want.
The other is run. Pick whichever you want.
</translate>

<!--T:89-->
</div>
</div>
</div>
</div>

<div class="mw-collapsible mw-collapsed toccolours">
<div class="mw-collapsible mw-collapsed toccolours">
<translate>
=== Command line build === <!--T:66-->

<div class="mw-collapsible-content">
===Command line build=== <!--T:66-->
Here an example how to build FreeCAD from the Command line:

</translate>
</translate>
<div class="mw-collapsible-content">
<syntaxhighlight>
<translate>
rem @echo off
rem Build script, uses vcbuild to completetly build FreeCAD
rem update trunc
d:
cd "D:\_Projekte\FreeCAD\FreeCAD_0.9"
"C:\Program Files (x86)\Subversion\bin\svn.exe" update
rem set the aprobiated Variables here or outside in the system
set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
set INCLUDE=
set LIB=
rem Register VS Build programms
call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
rem Set Standard include paths
set INCLUDE=%INCLUDE%;%FrameworkSDKDir%\include
set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
rem Set lib Pathes
set LIB=%LIB%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
set LIB=%LIB%;%PROGRAMFILES%\Microsoft Visual Studio\VC98\Lib
rem Start the Visuall Studio build process
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" "D:\_Projekte\FreeCAD FreeCAD_0.9_build\FreeCAD_trunk.sln" /useenv
</syntaxhighlight>
</div>
</div>


<!--T:158-->
The steps how to compile from the command line depends on the compiler. For MSVC 2017 the steps are:
# In Windows' start menu go to {{MenuCommand|Visual Studio 2017 → Visual Studio Tools}} and choose '''Developer Command Prompt for VS 2017'''
# Change to your build folder.
# Execute the command

</translate>
{{Code|code=msbuild ALL_BUILD.vcxproj /p:Configuration=Release}}
<translate>
<translate>


== Building older versions == <!--T:67-->
<!--T:190-->
or


</translate>
=== Using LibPack === <!--T:68-->
{{Code|code=msbuild INSTALL.vcxproj /p:Configuration=Release}}
To make it easier to get FreeCAD compiled, we provide a collection of all
<translate>
needed libraries. It's called the [[Third Party Libraries|LibPack]]. You can find it on the [http://sourceforge.net/project/showfiles.php?group_id=49159 download page] on
sourceforge.


<!--T:26-->
<!--T:114-->
These steps can also be automaized. Here is for example a solution for MSVC 2017:
You need to set the following environment variables:
# Download the script [https://forum.freecadweb.org/download/file.php?id=92135 compile-FC.txt].
# Rename it to ''compile-FC.bat''
# In Winddows' file explorer Shift+Right-click on your build folder and use from the context menu ''Command prompt here''.
# Execute the command


</translate>
<!--T:27-->
{{Code|code=compile-FC install}}
:'''FREECADLIB''' = "D:\Wherever\LIBPACK"
<translate>


<!--T:28-->
<!--T:191-->
Instead of calling '''compile-FC''' with the option ''install'' you can also use ''debug'' or ''release'':
:'''QTDIR''' = "%FREECADLIB%"


<!--T:29-->
<!--T:192-->
''debug'' &nbsp; - compile FreeCAD in debug configuration
Add "%FREECADLIB%\bin" and "%FREECADLIB%\dll" to the system ''PATH'' variable. Keep in mind that you have to replace "%FREECADLIB%" with the path name, since Windows does not recursively replace environment variables.


<!--T:193-->
==== Directory setup in Visual Studio ==== <!--T:30-->
''release'' - compile FreeCAD in release configuration
Some search path of Visual Studio need to be set.
To change them, use the menu ''Tools→Options→Directory


===== Includes ===== <!--T:31-->
<!--T:194-->
''install'' &nbsp;&nbsp; - compile FreeCAD in release configuration and create an install setup
Add the following search path to the include path search list:
* %FREECADLIB%\include
* %FREECADLIB%\include\Python
* %FREECADLIB%\include\boost
* %FREECADLIB%\include\xercesc
* %FREECADLIB%\include\OpenCascade
* %FREECADLIB%\include\OpenCV
* %FREECADLIB%\include\Coin
* %FREECADLIB%\include\SoQt
* %FREECADLIB%\include\QT
* %FREECADLIB%\include\QT\Qt3Support
* %FREECADLIB%\include\QT\QtCore
* %FREECADLIB%\include\QT\QtGui
* %FREECADLIB%\include\QT\QtNetwork
* %FREECADLIB%\include\QT\QtOpenGL
* %FREECADLIB%\include\QT\QtSvg
* %FREECADLIB%\include\QT\QtUiTools
* %FREECADLIB%\include\QT\QtXml
* %FREECADLIB%\include\Gts
* %FREECADLIB%\include\zlib


</translate>
===== Libs ===== <!--T:32-->
</div>
Add the following search path to the lib path search list:
</div>
* %FREECADLIB%\lib
<translate>


===== Executables ===== <!--T:33-->
==Running and installing FreeCAD== <!--T:139-->
Add the following search path to the executable path search list:
* %FREECADLIB%\bin
* TortoiseSVN binary installation directory, usually "C:\Programm Files\TortoiseSVN\bin", this is needed for a distribution build when ''SubWVRev.exe'' is used to extract the version number from Subversion.


==== Python needed ==== <!--T:34-->
<!--T:140-->
There are 2 methods to run the compiled FreeCAD:
During the compilation some Python scripts get executed. So the Python
interpreter has to function on the OS. Use a command box to check it. If
the Python library is not properly installed you will get an error message
like ''Cannot find python.exe''. If you use the LibPack you can also use the
python.exe in the bin directory.


==== Special for VC8 ==== <!--T:35-->
<!--T:195-->
''Method 1'': You execute the FreeCAD.exe that you find in your build folder in the subfolder ''bin''
When building the project with VC8, you have to change the link information for the WildMagic library, since you need a different version for VC6 and VC8. Both versions are supplied in ''LIBPACK/dll''. In the project properties for ''AppMesh'' change the library name for the ''wm.dll'' to the VC8 version. Take care to change it in Debug ''and'' Release configuration.


=== Compile === <!--T:36-->
<!--T:196-->
''Method 2'': You build the target ''INSTALL''


<!--T:37-->
<!--T:141-->
Method 2 is the simpler one because it automatically assures that all libraries needed to run the FreeCAD.exe are in the correct folder. The FreeCAD.exe and the libraries will be output in the folder you specified in the CMake variable ''CMAKE_INSTALL_PREFIX''.
After you conform to all prerequisites the compilation is - hopefully - only a mouse click in VC


=== After Compiling === <!--T:38-->
<!--T:142-->
To get FreeCAD up and running from the compiler environment you need to copy a few files from the [[Third Party Libraries|LibPack]] to the ''bin'' folder where FreeCAD.exe is installed after a successful build:
For Method 1 you need to put the libraries into the ''bin'' folder of your build folder (where the FreeCAD.exe is). This can easily be done:
# Open the CMake GUI.
# Search there for the variable option ''FREECAD_COPY_DEPEND_DIRS_TO_BUILD'' and check it. If there is no such option, the libraries were already copied, see the [[#Options_for_the_build_process|description of the options]].
# Search there for the variable option ''FREECAD_COPY_LIBPACK_BIN_TO_BUILD'' and check it.
# Search there for the variable option ''FREECAD_COPY_PLUGINS_BIN_TO_BUILD'' and check it.
# Click on '''Configure'''. At the end of the configuration CMake will automatically copy the necessary libraries from the LibPack folder.


<!--T:39-->
<!--T:159-->
For FreeCAD 0.19 there is currently only one issue that requires manual action:
* ''python.exe'' and ''python_d.exe'' from ''LIBPACK/bin''
# Download the file [https://forum.freecadweb.org/download/file.php?id=90273 qwindowsvistastyle.zip] from the FreeCAD forum.
* ''python25.dll'' and ''python25_d.dll'' from ''LIBPACK/bin''
# Create a new subfolder named ''styles'' in the ''bin'' folder (where the FreeCAD.exe is).
* ''python25.zip'' from ''LIBPACK/bin''
# Extract the ZIP-file to this folder.
* make a copy of ''Python25.zip'' and rename it to ''Python25_d.zip''
* ''QtCore4.dll'' from ''LIBPACK/bin''
* ''QtGui4.dll'' from ''LIBPACK/bin''
* ''boost_signals-vc80-mt-1_34_1.dll'' from ''LIBPACK/bin''
* ''boost_program_options-vc80-mt-1_34_1.dll'' from ''LIBPACK/bin''
* ''xerces-c_2_8.dll'' from ''LIBPACK/bin''
* ''zlib1.dll'' from ''LIBPACK/bin''
* ''coin2.dll'' from ''LIBPACK/bin''
* ''soqt1.dll'' from ''LIBPACK/bin''
* ''QtOpenGL4.dll'' from ''LIBPACK/bin''
* ''QtNetwork4.dll'' from ''LIBPACK/bin''
* ''QtSvg4.dll'' from ''LIBPACK/bin''
* ''QtXml4.dll'' from ''LIBPACK/bin''


<!--T:40-->
<!--T:197-->
This adds the necessary style to make FreeCAD look like a normal Win 10 program. Otherwise it looks like in Windows 98.
When using a [[Third Party Libraries|LibPack]] with a Python version older than 2.5 you have to copy two further files:
* ''zlib.pyd'' and ''zlib_d.pyd'' from ''LIBPACK/bin/lib''. This is needed by python to open the zipped python library.
* ''_sre.pyd'' and ''_sre_d.pyd'' from ''LIBPACK/bin/lib''. This is needed by python for the built in help system.


<!--T:41-->
==Updating the build== <!--T:160-->
If you don't get it running due to a Python error it is very likely that one of the ''zlib*.pyd'' files is missing.


=== Additional stuff === <!--T:42-->
<!--T:161-->
FreeCAD is very actively developed. Therefore its source code changes almost daily. New features are added and bugs are fixed. To benefit from these source code changes, you must rebuild your FreeCAD. This is done in two steps:
# Updating the source code
# Recompilation


<!--T:43-->
===Updating the source code=== <!--T:162-->
If you whant to build the source code documentation you need [http://www.stack.nl/~dimitri/doxygen/ DoxyGen].


<!--T:44-->
====Using a frontend==== <!--T:163-->
To create an intstaller package you need [http://wix.sourceforge.net/ WIX].


<!--T:164-->
When using the [https://en.wikipedia.org/wiki/Comparison_of_Git_GUIs Git frontend] TortoiseGit:
# Right-click on your FreeCAD source code folder in the Windows file explorer and select in the context menu '''Pull'''.
# A dialog will appear. Select there what development branch you want to get. '''master''' is the main branch. Therefore use this unless you want to compile a special new feature from a branch that has not yet been merged to ''master''. (For more about Git branches, see [[Source_code_management#Git_development_process|Git development process]].)


<!--T:45-->
<!--T:198-->
Finally click '''OK'''.
During the compilation some Python scripts get executed. So the Python interpreter has to work properly.


<!--T:46-->
====Using the command line==== <!--T:165-->

For more details have also a look to ''README.Linux'' in your sources.
<!--T:166-->
Open a terminal (command prompt) and switch there to your source directory. Then type:


<!--T:47-->
First of all you should build the Qt plugin that provides all custom widgets of FreeCAD we need for the Qt Designer. The sources are located under
</translate>
</translate>
{{Code|code=
<pre>
git pull https://github.com/FreeCAD/FreeCAD.git master
//src/Tools/plugins/widget//.
}}
</pre>
<translate>
<translate>
<!--T:48-->
So far we don't provide a makefile -- but calling
</translate>
<pre>
qmake plugin.pro
</pre>
<translate>
<!--T:49-->
creates it. Once that's done, calling ''make'' will create the library
</translate>
<pre>
//libFreeCAD_widgets.so//.
</pre>
<translate>
<!--T:50-->
To make this library known to your ''Qt Designer'' you have to copy the file to
</translate>
<pre>
//$QTDIR/plugin/designer//.
</pre>


<!--T:167-->
== References ==
where ''master'' the the name of the main development branch. If you want to get code from another branch, use its name instead of ''master''.
{{reflist}}


===Recompilation=== <!--T:168-->
<translate>

<!--T:169-->
# Open the MSVC IDE by double-clicking either on the file ''FreeCAD.sln'' or on the file ''ALL_BUILD.vcxproj'' in your build folder.
# Continue with step 2 from section [[#Building_with_Visual_Studio_15_2017|Building with Visual Studio 15 2017]].

==Tools== <!--T:199-->

<!--T:200-->
In order to join the FreeCAD development you should compile and install the following tools:

===Qt Designer plugin=== <!--T:201-->

<!--T:202-->
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==== <!--T:203-->

<!--T:204-->
To make Qt Designer aware of the FreeCAD widgets, you must

<!--T:205-->
# Download [https://forum.freecadweb.org/download/file.php?id=124239 this ZIP] file. (Compiled using Qt 5.12, see [[#Compilation|below]].)
# Extract the DLL file in the ZIP and copy it
* If you use the LibPack: to the folder</br>''~\FreeCADLibs_12.1.4_x64_VC15\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\Qt5.12.5\5.12.5\msvc2017_64\plugins\designer''</br>or</br>''C:\Qt\Qt5.12.5\5.12.5\msvc2017_64\bin\designer''</br>(adapt the paths to your installation!).

<!--T:206-->
(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.


<!--T:207-->
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.12.5\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.

====Compilation==== <!--T:208-->

<!--T:209-->
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:

<!--T:210-->
# Change to the FreeCAD source folder</br>''~\src\Tools\plugins\widget''
# Open a MSVC x64 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 MSVC 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.1.4_x64_VC15\bin\qmake -t vclib plugin.pro''</br>for a full Qt installation it is</br>''C:\Qt\Qt5.12.5\5.12.5\msvc2017_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=== <!--T:211-->

<!--T:212-->
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==== <!--T:213-->

<!--T:214-->
The DLL is installed this way:
# Download [https://forum.freecadweb.org/download/file.php?id=13404 this ZIP file] and extract it.
# Open a Windows command prompt with administrator privileges (these privileges are a requirement).
# Change to the folder where the DLL is.
# Execute this command {{Code|code=regsvr32 FCStdThumbnail.dll}}

<!--T:215-->
So check if it works, assure that in FreeCAD the preferences option '''[[Preferences_Editor#Document|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==== <!--T:216-->

<!--T:217-->
To compile the FCStdThumbnail.dll
# Change to the FreeCAD source folder</br>''~\src\Tools\thumbs\ThumbnailProvider''
# Open the CMake GUI
# Specify there as source folder the one you are currently in.
# Use the same folder as build folder.
# Click '''Configure'''
# 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''.</br>'''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.
# Click on '''Generate'''.
# 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.
# 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 '''ALL_BUILD''' and then choose '''Build'''.
# As result you should now have a '''FCStdThumbnail.dll''' in the folder ''~\src\Tools\thumbs\ThumbnailProvider\release'' that you can install as described above.

== References == <!--T:115-->

<!--T:74-->
See also
* [[Compile_on_Windows_with_VS2013|Compile on Windows with Visual Studio 2013]]
* [[Compiling_(Speeding_up)|Compiling - Speeding up]]


<!--T:69-->
<!--T:69-->
{{Docnav
{{docnav|Tracker|CompileOnUnix}}
|[[Bug_Triage|Bug Triage]]
[[Category:Developer Documentation]]
|[[Compile_on_Linux|Compile on Linux]]
}}


</translate>
</translate>
{{Userdocnavi{{#translation:}}}}
{{clear}}
[[Category:Developer_Documentation{{#translation:}}]]
<languages/>
[[Category:Developer{{#translation:}}]]

Revision as of 15:13, 22 November 2020

This page explains step by step how to compile FreeCAD 0.18 or newer on Windows. For other platforms see Compiling.

Prerequisites

At first you must install the following required programs ad libraries:

Required

  • Git (There are also a GUI frontends available for Git, see the next section.)
  • CMake version 3.11.x - 3.17.x. Note: Usually one cannot take the latest CMake version. Therefore only use a CMake version in the range specified on this page!

It is recommended to use the option Add CMake to the system PATH for all users when installing CMake. Then you can later easily access CMake also from the command line/powershell.

  • LibPack (also called FreeCADLibs). This is a set of libraries necessary to compile FreeCAD on Windows. Depending on the FreeCAD version you want to compile, you must download the corresponding LibPack. For example to compile FreeCAD 0.18, download either the 32bit or the 64bit version of the LibPack for 0.18, to compile the latest development version 0.19, download the LibPack for 0.19 (there is only a 64bit version).

Just download the LibPack, you will unpack and set it up later.

Note: It is recommended to use the same compiler MS Visual Studio (MSVC) version the LibPack is designed for. This assures that the compilation and the execution of the compiled FreeCAD.exe succeeds. So you should for example be able to compile FreeCAD 0.18 using the LibPack for 0.19 and MSVC 15 but you you might get problems compiling FreeCAD 0.18 using the LibPack for 0.18 and MSVC 15 because the LibPack for 0.18 is designed to be built with MSVC 12.

Optional programs

  • Python 3.x. A separate python installation is not mandatory since the LibPack contains Python. However, to be able to test later your FreeCAD build it is useful to have a standalone Python installation. It is recommended to use not the latest version, but the prior version (e.g. not Python 3.8 but 3.7).
  • A GUI frontend for Git. There are several frontends available, see this list. The main benefit of a frontend is that you don't have to learn the Git commands to get the source code of FreeCAD or to send patches to the GitHub repository of FreeCAD.

In the following we describe source code handling using the frontend TortoiseGit. This frontend integrates directly to Windows file explorer and has a large user community to get help in case you have problems.

  • NSIS This is the program to generate the Windows installer of FreeCAD. (Information: For FreeCAD 0.17 and older the program WiX was used to create the installer.)

Source code

Now you can get the source code of FreeCAD:

Using a frontend

When using the Git frontend TortoiseGit:

  1. Create a new folder where the source code should be.
  2. Right-click on this folder in the Windows file explorer and select in the context menu Git Clone.
  3. A dialog will appear. Use there as URL for the FreeCAD repository

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

and click OK.

Now the source code is downloaded and its folder becomes a folder tracked by Git.

Using the command line

To create a local tracking branch and download the source code, open a terminal (command prompt) and switch there to the directory you want the source, then type:

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

Compiler

The default (recommended) compiler is MS Visual Studio (MSVC). Though it may be possible to use other compilers using Cygwin or MinGW gcc it is not tested or ported so far.

You can get a free version of MSVC (for OpenSource usage) by downloading the Community edition of MS Visual Studio. To do so, use this URL

https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=xx

where xx is the version number. So to get MSVC 15 (calso called MSVC 2017), use this URL:

https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=15

For those who want to avoid installing the huge MSVC for the mere purpose of having a compiler, see CompileOnWindows - Reducing Disk Footprint.

Note: Despite that the Community edition of MSVC is free, you must create a Microsoft account from within the MSVC IDE that you can use the IDE for more than 30 days. If you will only compile using the command line, you don't need the IDE and thus no Microsoft account.

As a free and OpenSource alternative IDE you can use KDevelop. You can use KDevelop to modify and write C++ code but must use the command line to compile.

Optional system path configuration

Optionally you can include the paths to some folders to the system PATH variable. This is helpful if you want to access programs in these folders from the command line/powershell or if you want special programs to be found by the compiler or CMake. Besides this, adding folders to the PATH might be necessary if you did not use the corresponding options when installing the program.

  • You can include the folder of your LibPack in your system PATH variable. This is useful if you plan to build multiple configurations/versions of FreeCAD.
  • If you did not use the option to add CMake to the PATH while installing it, add its installation folder

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

  • If you did not use the option to add TortoiseGit to the PATH while installing it, add its installation folder

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

To add folder paths to the PATH variable:

  1. In the Windows Start menu Right click on Computer and choose Properties.
  2. In the appearing dialog click on Advanced system settings.
  3. Another dialog will open. Click there in the tab Advanced on Environment Variables.
  4. Again another dialog will open. Select then the variable Path and click on Edit.
  5. And again another dialog will open. Click there on New and add to path to the folder of Git or the LibPack.
  6. Finally press OK and close all dialogs by pressing OK as well.

Configuration

LibPack

At first you need to setup a build folder:

  1. Create a new folder where the compiled FreeCAD should be. It is highly recommended that this folder is not inside the source code folder of FreeCAD.
  2. Create there a new subfolder for the LibPack. Note: The name of this subfolder must be the same as the LibPack file name. If e.g. the LibPack has the filename FreeCADLibs_12.1.4_x64_VC15.7z, you must name the subfolder FreeCADLibs_12.1.4_x64_VC15.
  3. Extract the LibPack to this subfolder.

CMake

Now you need to configure the build environment using CMake:

  1. Open the CMake GUI
  2. Specify there the source folder of FreeCAD
  3. Specify the build folder you just created in the previous step.
  4. Click Configure
  5. 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.

This will begin the configuration and will fail because of missing settings.

If it fails with the message that Visual Studio could not be found the CMake support in MSVC is not yet installed. To do this:

  1. Open the MSVC IDE
  2. Use the menu Tools → Get Tools and Features
  3. In the Workloads tab enable Desktop development with C++
  4. On the right side you should now see that the component Visual C++ tools for CMake will be installed.
  5. Install it.

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

  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 already installed on your PC. Since the Python installation is important for different programs on your PC you should keep it as it is and adapt only the 4 different Python settings in CMake to these paths (assuming the LibPack is in the folder D:\FreeCAD-build\FreeCADLibs_12.3.2_x64_VC15):

If there is no error about Visual Studio or Python, everything is fine, but CMake does not yet know all necessary settings. Therefore now:

  1. Assure that the search option Advanced is checked.
  2. Search in CMake for the variable FREECAD_LIBPACK_DIR and specify there the correct location to the LibPack folder.
  3. Search for the variable BUILD_QT5 and enable this option.
  4. Click Configure again

There should now be no errors. If so, click on Generate. After this is done you could close CMake and continue to start the compilation of FreeCAD. However, for the first compilation keep it open for the case that you want or need to change some options for the build process:

Options for the build process

The CMake build system gives you the flexibility over the build process. That means you can switch on and off some features or modules by CMake variables.

Here is a description for some of these variables:

Variable name Description Default
BUILD_XXX Build FreeCAD with the component XXX. If you don't want/need to compile e.g. the workbench OpenSCAD, disable the variable BUILD_OPENSCAD. FreeCAD will then not have this workbench.

Note: Some components are required for other components. If you for example uncheck BUILD_ROBOT CMake will inform you that then the component Path cannot be compiled correctly. Therefore check the CMake output after you changed a BUILD_XXX option! || depends

CMAKE_INSTALL_PREFIX The output folder when building the target INSTALL, see also section Running and installing FreeCAD Windows' default program installation folder
FREECAD_COPY_DEPEND_DIRS_TO_BUILD Copies depending libraries needed to execute the FreeCAD.exe to the build folder. See also section Running and installing FreeCAD.
Note: the options FREECAD_COPY_XXX only appear if the libraries were not already copied. So when you change to another LibPack version, it is important to delete all folders in your build folder, except of the LibPack folder. In CMake delete the cache and start as if you compile for the first time and you will get the FREECAD_COPY_XXX options.
OFF
FREECAD_COPY_LIBPACK_BIN_TO_BUILD Copies the LibPack binaries needed to execute the FreeCAD.exe to the build folder. See also section Running and installing FreeCAD. OFF
FREECAD_COPY_PLUGINS_BIN_TO_BUILD Copies Qt's plugin files needed to execute the FreeCAD.exe to the build folder. See also section Running and installing FreeCAD. OFF
FREECAD_LIBPACK_USE Switch the usage of the FreeCAD LibPack on or off ON
FREECAD_LIBPACK_DIR Directory where the LibPack is FreeCAD's source code folder
FREECAD_RELEASE_PDB Create debug libraries also for release builds ON

Building FreeCAD

Depending on your compiler, the process for building FreeCAD will be slightly different. In the following sections you known workflows are described. If you are building with Qt Creator, jump to Building with Qt Creator, otherwise proceed directly:

Building with Visual Studio 15 2017, and Visual Studio 16 2019

  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 Release.
  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. This will now take quite a long time.

To compile a ready-to use FreeCAD, compile the target INSTALL, see section Running and installing FreeCAD.

If you don't get any errors you are done. Congratulations! You can exit MSVC or keep it open.

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.

Building with Visual Studio 12 2013

Make sure to specify Visual Studio 12 x64(or the alternate C-Compiler you are using) as the generator in CMake before you continue.

  • Start Visual Studio 12 2013 by clicking on the desktop icon created at installation.
  • Open the project by:

File → Open → Project/Solution

  • Open FreeCAD_Trunk.sln from the build folder CMake created
  • Switch the Solutions Configuration drop down at the top to Release X64

This may take a while depending on your sytem

  • Build → Build Solution
  • This will take a long time...

If you don't get any errors you are done. Exit Visual Studio and start FreeCAD by double clicking the FreeCAD icon in the bin folder of the build directory.

Building with Qt Creator (outdated)

Installation and configuration of Qt Creator

  • Download and install Qt Creator
  • Tools → Options → Text Editor → Behavior tab:
    • File Encodings → Default Encodings:
    • Set to: ISO-8859-1 /...csISOLatin1 (Certain characters create errors/warnings with Qt Creator if left set to UTF-8. This seems to fix it.)
  • Tools → Options → Build & Run:
    • CMake tab
      • Fill Executable box with path to cmake.exe
    • Kits tab
      • Name: MSVC 2008
      • Compiler: Microsoft Visual C++ Compiler 9.0 (x86)
      • Debugger: Auto detected...
      • Qt version: None
    • General tab
      • Uncheck: Always build project before deploying it
      • Uncheck: Always deploy project before running it

Import project and building

  • File → Open File or Project
  • Open CMakeLists.txt which is in the top level of the source
  • This will start CMake
  • Choose build directory and click next
  • Set generator to NMake Generator (MSVC 2008)
  • Click Run CMake. Follow the instructions depicted above to configure CMake to your liking.

Now FreeCAD can be built

  • Build → Build All
  • This will take a long time...

Once complete, it can be run: There are 2 green triangles at the bottom left. One is debug. The other is run. Pick whichever you want.

Command line build

The steps how to compile from the command line depends on the compiler. For MSVC 2017 the steps are:

  1. In Windows' start menu go to Visual Studio 2017 → Visual Studio Tools and choose Developer Command Prompt for VS 2017
  2. Change to your build folder.
  3. Execute the command
msbuild ALL_BUILD.vcxproj /p:Configuration=Release

or

msbuild INSTALL.vcxproj /p:Configuration=Release

These steps can also be automaized. Here is for example a solution for MSVC 2017:

  1. Download the script compile-FC.txt.
  2. Rename it to compile-FC.bat
  3. In Winddows' file explorer Shift+Right-click on your build folder and use from the context menu Command prompt here.
  4. Execute the command
compile-FC install

Instead of calling compile-FC with the option install you can also use debug or release:

debug   - compile FreeCAD in debug configuration

release - compile FreeCAD in release configuration

install    - compile FreeCAD in release configuration and create an install setup

Running and installing FreeCAD

There are 2 methods to run the compiled FreeCAD:

Method 1: You execute the FreeCAD.exe that you find in your build folder in the subfolder bin

Method 2: You build the target INSTALL

Method 2 is the simpler one because it automatically assures that all libraries needed to run the FreeCAD.exe are in the correct folder. The FreeCAD.exe and the libraries will be output in the folder you specified in the CMake variable CMAKE_INSTALL_PREFIX.

For Method 1 you need to put the libraries into the bin folder of your build folder (where the FreeCAD.exe is). This can easily be done:

  1. Open the CMake GUI.
  2. Search there for the variable option FREECAD_COPY_DEPEND_DIRS_TO_BUILD and check it. If there is no such option, the libraries were already copied, see the description of the options.
  3. Search there for the variable option FREECAD_COPY_LIBPACK_BIN_TO_BUILD and check it.
  4. Search there for the variable option FREECAD_COPY_PLUGINS_BIN_TO_BUILD and check it.
  5. Click on Configure. At the end of the configuration CMake will automatically copy the necessary libraries from the LibPack folder.

For FreeCAD 0.19 there is currently only one issue that requires manual action:

  1. Download the file qwindowsvistastyle.zip from the FreeCAD forum.
  2. Create a new subfolder named styles in the bin folder (where the FreeCAD.exe is).
  3. Extract the ZIP-file to this folder.

This adds the necessary style to make FreeCAD look like a normal Win 10 program. Otherwise it looks like in Windows 98.

Updating the build

FreeCAD is very actively developed. Therefore its source code changes almost daily. New features are added and bugs are fixed. To benefit from these source code changes, you must rebuild your FreeCAD. This is done in two steps:

  1. Updating the source code
  2. Recompilation

Updating the source code

Using a frontend

When using the Git frontend TortoiseGit:

  1. Right-click on your FreeCAD source code folder in the Windows file explorer and select in the context menu Pull.
  2. A dialog will appear. Select there what development branch you want to get. master is the main branch. Therefore use this unless you want to compile a special new feature from a branch that has not yet been merged to master. (For more about Git branches, see Git development process.)

Finally click OK.

Using the command line

Open a terminal (command prompt) and switch there to your source directory. Then type:

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

where master the the name of the main development branch. If you want to get code from another branch, use its name instead of master.

Recompilation

  1. Open the MSVC IDE by double-clicking either on the file FreeCAD.sln or on the file ALL_BUILD.vcxproj in your build folder.
  2. Continue with step 2 from section Building 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.

Installation

To make Qt Designer aware of the FreeCAD widgets, you must

  1. Download this ZIP file. (Compiled using Qt 5.12, see below.)
  2. Extract the DLL file in the ZIP and copy it
  • If you use the LibPack: to the folder
    ~\FreeCADLibs_12.1.4_x64_VC15\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\Qt5.12.5\5.12.5\msvc2017_64\plugins\designer
    or
    C:\Qt\Qt5.12.5\5.12.5\msvc2017_64\bin\designer
    (adapt the paths to your installation!).

(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 DLL must be placed in this folder:
C:\Qt\Qt5.12.5\Tools\QtCreator\bin\plugins\designer
(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.

Compilation

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:

  1. Change to the FreeCAD source folder
    ~\src\Tools\plugins\widget
  2. Open a MSVC x64 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 MSVC command prompt!
  3. Execute this command
    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):
    D:\FreeCAD-build\FreeCADLibs_12.1.4_x64_VC15\bin\qmake -t vclib plugin.pro
    for a full Qt installation it is
    C:\Qt\Qt5.12.5\5.12.5\msvc2017_64\bin\qmake -t vclib plugin.pro
    (adapt the paths to your installation!)
  4. 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.
  5. In the toolbar of the MSVC IDE assure that you use the compilation target Release.
  6. There is a window called Solution Explorer. Right-click there on FreeCAD_widgets and then choose Build.
  7. 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

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.

References

See also