Compile on MinGW: Difference between revisions

From FreeCAD Documentation
(→‎Install required libraries: Update from @wwmayer)
m (Fix typo in pacman dependencies command)
 
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
<translate>


<!--T:2-->
{{VeryImportantMessage|(2021) The re-write of this page is an early draft, and work is still in progress. Please help us to finish it!<br>Meanwhile, try other [[Compiling|compilation options]].}}

</translate>
{{TOCright}}
{{TOCright}}
<translate>
<translate>


<!--T:81-->
This guide will walk through the steps necessary to build FreeCAD on Windows using the MSYS2/MinGW environment. Basic familiarity with Bash shell commands will be useful for understanding what each step does, but following the guide by rote should result in a working build even if you don't understand exactly what you did to get it.
This guide will walk through the steps necessary to build FreeCAD on Windows using the MSYS2/MinGW environment. Basic familiarity with Bash shell commands will be useful for understanding what each step does, but following the guide by rote should result in a working build even if you don't understand exactly what you did to get it.


=== Before you start ===
=== Before you start === <!--T:82-->


<!--T:83-->
Download and install [https://www.msys2.org MSYS2] if you have not already. When launching MSYS2, use the "MSYS2 MinGW 64-bit" runtime unless you know what you are doing and have a specific reason not to. If you use the UCRT console, make sure to adapt your installation to use the UCRT packages instead.
Download and install [https://www.msys2.org MSYS2] if you have not already. When launching MSYS2, use the "MSYS2 MinGW 64-bit" runtime unless you know what you are doing and have a specific reason not to. If you use the UCRT console, make sure to adapt your installation to use the UCRT packages instead.


Line 21: Line 18:
<translate>
<translate>


<!--T:84-->
and then relaunching and running
and then relaunching and running


Line 29: Line 27:
<translate>
<translate>


<!--T:85-->
before proceeding.
before proceeding.


=== Install basic development tools ===
=== Install basic development tools === <!--T:86-->


<!--T:87-->
In all of the following steps, when prompted by MSYS2's shell, accept the default installations of everything by pressing "Enter" when asked.
In all of the following steps, when prompted by MSYS2's shell, accept the default installations of everything by pressing "Enter" when asked.


<!--T:88-->
First, install the mingw-w64 GCC toolchain:
First, install the mingw-w64 GCC toolchain:


Line 43: Line 44:
<translate>
<translate>


<!--T:89-->
This will probably take several minutes to complete, as the compiler toolchain is quite large.
This will probably take several minutes to complete, as the compiler toolchain is quite large.


<!--T:90-->
Install git:
Install git:


Line 53: Line 56:
<translate>
<translate>


<!--T:91-->
Close your current console window and relaunch the MSYS2 MinGW 64 console (in a standard installation this will be in your Start menu in the MSYS2 folder).
Close your current console window and relaunch the MSYS2 MinGW 64 console (in a standard installation this will be in your Start menu in the MSYS2 folder).


=== Check out the FreeCAD sources ===
=== Check out the FreeCAD sources === <!--T:92-->


<!--T:93-->
To get the FreeCAD source code, clone it from the main git repository:
To get the FreeCAD source code, clone it from the main git repository:


Line 65: Line 70:
<translate>
<translate>


<!--T:94-->
If you do not want to compile the latest HEAD, once you have the source you can check out a specific tag:
If you do not want to compile the latest HEAD, once you have the source you can check out a specific tag:


Line 70: Line 76:
<pre>
<pre>
cd FreeCAD
cd FreeCAD
git checkout tags/0.19.2 -b releases/FreeCAD-0-19
git checkout tags/1.0 -b releases/FreeCAD-1-0
</pre>
</pre>
<translate>
<translate>


<!--T:95-->
Or a specific pull request (in this example, PR 1234):
Or a specific pull request (in this example, PR 1234):


Line 84: Line 91:
<translate>
<translate>


<!--T:108-->
=== Install required libraries ===
Note that not all versions can be compiled on MSYS2, several changes were required to enable it and these were not present in the 0.19 or earlier versions. For example, the 0.19.3 tag will not be compilable.


=== Install required libraries === <!--T:96-->
FreeCAD depends on many 3rd-party libraries for its functionality. They may be installed individually, or as a single unified command. Updating this list is the current ongoing work of this documentation: to help, repeatedly run the cmake command from the next section, and install whatever the next package is that it errors on. As of this writing there is a problem with the pacman-installed OpenCASCADE package.


<!--T:97-->
* mingw-w64-x86_64-opencascade
FreeCAD depends on many 3rd-party libraries for its functionality. They may be installed individually, or as a single unified command.


<!--T:101-->
To resolve the current (9/11/2021) problem with the OpenCASCADE installation, it is necessary to modify the installed cMake configuration files for the library. In the files /mingw64/lib/cmake/opencascade/*-release.cmake, remove all occurrences of the string
Now, install the following required dependencies using pacman:


</translate>
</translate>
* mingw-w64-x86_64-opencascade
<pre>
\${OCCT_INSTALL_BIN_LETTER}
</pre>
<translate>

(Note the leading backslash -- that character must be removed along with the variable reference).

Now, install the following required dependencies using pacman:

* mingw-w64-x86_64-xerces-c
* mingw-w64-x86_64-xerces-c
* mingw-w64-x86_64-qt5
* mingw-w64-x86_64-qt5
Line 115: Line 117:
* mingw-w64-x86_64-python-matplotlib
* mingw-w64-x86_64-python-matplotlib
* mingw-w64-x86_64-pyside2-qt5
* mingw-w64-x86_64-pyside2-qt5
* mingw-w64-x86_64-python-markdown
* mingw-w64-x86_64-python-pygit2
<translate>


<!--T:103-->
The following is a single command to install everything but OpenCASCADE:
The following is a single command to install everything in the list above:


</translate>
</translate>
<pre>
<pre>
pacman -S mingw-w64-x86_64-xerces-c mingw-w64-x86_64-qt5 mingw-w64-x86_64-med mingw-w64-x86_64-swig mingw-w64-x86_64-qtwebkit mingw-w64-x86_64-coin mingw-w64-x86_64-python-pivy mingw-w64-x86_64-pyside2-qt5 mingw-w64-x86_64-ply mingw-w64-x86_64-six mingw-w64-x86_64-yaml mingw-w64-x86_64-numpy mingw-w64-x86_64-matplotlib
pacman -S mingw-w64-x86_64-opencascade mingw-w64-x86_64-xerces-c mingw-w64-x86_64-qt5 mingw-w64-x86_64-med mingw-w64-x86_64-swig mingw-w64-x86_64-qtwebkit mingw-w64-x86_64-coin mingw-w64-x86_64-python-pivy mingw-w64-x86_64-pyside2-qt5 mingw-w64-x86_64-python-ply mingw-w64-x86_64-python-six mingw-w64-x86_64-python-yaml mingw-w64-x86_64-python-numpy mingw-w64-x86_64-python-matplotlib mingw-w64-x86_64-python-markdown mingw-w64-x86_64-python-pygit2
</pre>
</pre>
<translate>
<translate>


=== Build FreeCAD ===
=== Build FreeCAD === <!--T:104-->


<!--T:105-->
Make a directory for the build: note this is typically not a subdirectory of the source directory (it is often useful to be able to delete either the source or the build directory independently).
Make a directory for the build: note this is typically not a subdirectory of the source directory (it is often useful to be able to delete either the source or the build directory independently).


Line 132: Line 139:
mkdir FreeCAD-build
mkdir FreeCAD-build
cd FreeCAD-build
cd FreeCAD-build
<pre>
</pre>
<translate>
<translate>


<!--T:106-->
Run cMake:
Run cMake:


Line 143: Line 151:
<translate>
<translate>


<!--T:107-->
And finally:
And finally:



Latest revision as of 04:35, 7 March 2022

This guide will walk through the steps necessary to build FreeCAD on Windows using the MSYS2/MinGW environment. Basic familiarity with Bash shell commands will be useful for understanding what each step does, but following the guide by rote should result in a working build even if you don't understand exactly what you did to get it.

Before you start

Download and install MSYS2 if you have not already. When launching MSYS2, use the "MSYS2 MinGW 64-bit" runtime unless you know what you are doing and have a specific reason not to. If you use the UCRT console, make sure to adapt your installation to use the UCRT packages instead.

pacman -Syu

and then relaunching and running

pacman -Su

before proceeding.

Install basic development tools

In all of the following steps, when prompted by MSYS2's shell, accept the default installations of everything by pressing "Enter" when asked.

First, install the mingw-w64 GCC toolchain:

pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja

This will probably take several minutes to complete, as the compiler toolchain is quite large.

Install git:

pacman -S git

Close your current console window and relaunch the MSYS2 MinGW 64 console (in a standard installation this will be in your Start menu in the MSYS2 folder).

Check out the FreeCAD sources

To get the FreeCAD source code, clone it from the main git repository:

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

If you do not want to compile the latest HEAD, once you have the source you can check out a specific tag:

cd FreeCAD
git checkout tags/1.0 -b releases/FreeCAD-1-0

Or a specific pull request (in this example, PR 1234):

cd FreeCAD
git fetch origin pull/1234/head:pr/1234
git checkout pr/1234

Note that not all versions can be compiled on MSYS2, several changes were required to enable it and these were not present in the 0.19 or earlier versions. For example, the 0.19.3 tag will not be compilable.

Install required libraries

FreeCAD depends on many 3rd-party libraries for its functionality. They may be installed individually, or as a single unified command.

Now, install the following required dependencies using pacman:

  • mingw-w64-x86_64-opencascade
  • mingw-w64-x86_64-xerces-c
  • mingw-w64-x86_64-qt5
  • mingw-w64-x86_64-med
  • mingw-w64-x86_64-swig
  • mingw-w64-x86_64-qtwebkit
  • mingw-w64-x86_64-coin
  • mingw-w64-x86_64-python-pivy
  • mingw-w64-x86_64-python-ply
  • mingw-w64-x86_64-python-six
  • mingw-w64-x86_64-python-yaml
  • mingw-w64-x86_64-python-numpy
  • mingw-w64-x86_64-python-matplotlib
  • mingw-w64-x86_64-pyside2-qt5
  • mingw-w64-x86_64-python-markdown
  • mingw-w64-x86_64-python-pygit2

The following is a single command to install everything in the list above:

pacman -S mingw-w64-x86_64-opencascade mingw-w64-x86_64-xerces-c mingw-w64-x86_64-qt5 mingw-w64-x86_64-med mingw-w64-x86_64-swig mingw-w64-x86_64-qtwebkit mingw-w64-x86_64-coin mingw-w64-x86_64-python-pivy mingw-w64-x86_64-pyside2-qt5 mingw-w64-x86_64-python-ply mingw-w64-x86_64-python-six mingw-w64-x86_64-python-yaml mingw-w64-x86_64-python-numpy mingw-w64-x86_64-python-matplotlib mingw-w64-x86_64-python-markdown mingw-w64-x86_64-python-pygit2

Build FreeCAD

Make a directory for the build: note this is typically not a subdirectory of the source directory (it is often useful to be able to delete either the source or the build directory independently).

mkdir FreeCAD-build
cd FreeCAD-build

Run cMake:

cmake ../FreeCAD

And finally:

cmake --build ./