Compile on MinGW: Difference between revisions
((2019) The contents of this page are obsolete. Please help us to keep it updated!<br/> Meanwhile, try other compilation options.) |
m (Fix typo in pacman dependencies command) |
||
(20 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
{{TOCright}} |
|||
<translate> |
<translate> |
||
<!--T:2--> |
|||
{{VeryImportantMessage|(2019) The contents of this page are obsolete. Please help us to keep it updated!<br/> Meanwhile, try other [[Compiling|compilation options]].}} |
|||
<!--T:81--> |
|||
==How to build and run FreeCAD under MSYS/MinGW== <!--T:3--> |
|||
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. |
|||
===Prerequisites=== <!--T:4--> |
|||
<!--T:5--> |
|||
Here comes a short introduction how to setup a MSYS/MinGW environment |
|||
on a Windows system, to build all needed libraries and finally to build |
|||
the FreeCAD sources. |
|||
==== MSYS/MinGW==== <!--T:6--> |
|||
<!--T:7--> |
|||
If not already installed get a MinGW installer from the Sourceforge page at |
|||
http://sourceforge.net/projects/mingw. When writing this tutorial the latest |
|||
version was mingw-get-inst-20100831.exe. Download and just double-click the |
|||
excutable. This installs the compiler and a minimal Windows developer environment. |
|||
Make sure to also install the Fortran compiler because there is a single Fortran |
|||
file in the 3rd party folder of the FreeCAD sources. |
|||
<!--T:8--> |
|||
Then as second step MSYS needs to be installed to have an environment to run |
|||
./configure scripts which we make heavy use of in order to build all needed |
|||
libraries. From the Soureforge page the file MSYS-1.0.11.exe was taken. |
|||
<!--T:9--> |
|||
A virginal MSYS/MinGW installation lacks of a few modules we later need. |
|||
First, we need the utility pexport which can be found in the file |
|||
pexports-0.44-1-mingw32-bin.tar.lzma. I don't know where to put this file |
|||
and how to make MSYS to install the stuff inside. But the file can be opened |
|||
with a ZIP program and the content can be copied to their destination manually. |
|||
Here, the pexports utility can go to the bin directory of your MinGW installation. |
|||
<!--T:10--> |
|||
Then, we also need the development files for the pthreads module which is part |
|||
of the file pthreads-w32-2.8.0-3-mingw32-dev.tar.lzma. Just download and copy |
|||
the files inside to your MinGW installation. |
|||
==== CMake==== <!--T:11--> |
|||
<!--T:12--> |
|||
Download the CMake utility from http://www.cmake.org/cmake/resources/software.html. |
|||
Get the archive with the binaries for the Windows platform and unpack whereever you |
|||
want. There is nothing further to do for this. |
|||
==== SWIG==== <!--T:13--> |
|||
<!--T:14--> |
|||
Download the SWIG utility from www.swig.org and extract it somewhere on your harddisk. |
|||
===Third party libraries=== <!--T:15--> |
|||
<!--T:16--> |
|||
Here is a description which libraries we need for FreeCAD and how to build them from |
|||
the sources. In order not to pollute our MinGW installation with too many files from |
|||
the 3rd party libraries we have to build you can e.g. create a sub-directory "local" |
|||
in your MSYS installation. If you have installed MSYS under C:\MSYS then simply create |
|||
the directory C:\MSYS\1.0\local. |
|||
==== zlib==== <!--T:17--> |
|||
<!--T:18--> |
|||
For zlib there is already a ready package for MinGW. So, therefore simply download |
|||
the file libz-1.2.3-1-mingw32-dev.tar.gz from the Sourceforge site and extract the |
|||
two directories lib and include to C:\MSYS\1.0\local. |
|||
==== Python==== <!--T:19--> |
|||
<!--T:20--> |
|||
It seems to be nearly impossible to build the Python sources directly with the MinGW |
|||
compiler. This is because some Python modules require some features which are not |
|||
implemented on the MinGW platform. Fortunately, the Python sources are plain C code |
|||
and instead of trying to build it with MinGW you can get a ready binary package built |
|||
with the MSVC compiler. You can install the Python stuff whereever you want. Afterwards |
|||
copy the include folder to C:\MSYS\1.0\local, the DLL can go to C:\MSYS\1.0\local\bin. |
|||
<!--T:21--> |
|||
Now we also need the so called import library. There we cannot use the .lib file which |
|||
comes together with the installer. But it's easy to create one with the pexports/dlltool |
|||
utilities. Assuming the Python version is 2.6 do these two steps: |
|||
</translate> |
|||
pexports python26.dll > python26.def |
|||
dlltool -D python26.dll -d python26.def -l libpython26.dll.a |
|||
<translate> |
|||
<!--T:22--> |
|||
The file libpython26.dll.a can now be moved to C:\MSYS\1.0\local\lib. |
|||
=== 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. |
|||
<!--T:24--> |
|||
For this library we don't need any header files but only the import library to build the |
|||
Salome SMESH sources. The easiest way to build this file is: |
|||
</translate> |
</translate> |
||
<pre> |
|||
pexports libgfortran-3.dll > f2c.def |
|||
pacman -Syu |
|||
dlltool -D libgfortran-3.dll -d f2c.def -l libf2c.dll.a |
|||
</pre> |
|||
<translate> |
<translate> |
||
<!--T:25--> |
|||
The file libf2c.dll.a can now be moved to C:\MSYS\1.0\local\lib. |
|||
<!--T:84--> |
|||
and then relaunching and running |
|||
====xerces-c==== <!--T:26--> |
|||
<!--T:27--> |
|||
Download a source archive from http://xml.apache.org/dist/xerces-c/ and extract it. |
|||
Open a MSYS command line window and change to the xerces-c sources. From there run |
|||
</translate> |
</translate> |
||
<pre> |
|||
./configure LDFLAGS=-no-undefined |
|||
pacman -Su |
|||
</pre> |
|||
<translate> |
<translate> |
||
<!--T:28--> |
|||
Once ./configure has finished it's best to move to the source directory because we |
|||
don't need to build the dozens of test applications and other stuff. So, do this: |
|||
</translate> |
|||
cd src |
|||
make |
|||
make install |
|||
<translate> |
|||
<!--T:29--> |
|||
This takes a few minutes to be done. |
|||
<!--T:85--> |
|||
before proceeding. |
|||
=== |
=== Install basic development tools === <!--T:86--> |
||
<!--T: |
<!--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. |
|||
For boost there exists a testing package with cmake support. This, however, seems to be |
|||
stable enough to build with the MinGW compiler. So, get the file boost-1.41.0.cmake0.zip |
|||
from http://sodium.resophonic.com/boost-cmake/1.41.0.cmake0/ and unpack it. |
|||
<!--T: |
<!--T:88--> |
||
First, install the mingw-w64 GCC toolchain: |
|||
Now, start the cmake-gui.exe from within the MSYS command line. This is necessary for cmake |
|||
in order to find the compiler and other stuff. Select the folder of the boost sources with |
|||
the CMakeLists.txt file, select a build directory and start Configure. You'll be asked for |
|||
which system you want to generate the Makefiles. Select MSYS/Makefiles, not MinGW/Makefiles. |
|||
<!--T:33--> |
|||
When the configuration step has finished go to the options and search for WINMANGLE_LIBNAMES. |
|||
Switch this off because otherwise the boost library names contain the compiler name. This |
|||
causes the boost cmake check to fail later when we try to build the FreeCAD sources. And for |
|||
the installtion folder choose the directory C:\MSYS\1.0\local. |
|||
<!--T:34--> |
|||
So, reconfigure boost and press on Generate once it has finished. Close the CMake GUI window |
|||
and enter |
|||
</translate> |
</translate> |
||
<pre> |
|||
make |
|||
pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja |
|||
make install |
|||
</pre> |
|||
<translate> |
<translate> |
||
<!--T:35--> |
|||
into the command line. This will take a couple of minutes. |
|||
<!--T:89--> |
|||
This will probably take several minutes to complete, as the compiler toolchain is quite large. |
|||
<!--T:90--> |
|||
Install git: |
|||
<!--T:37--> |
|||
Download eigen-2.0.15.tar.gz or any later version from http://eigen.tuxfamily.org/index.php?title=Main_Page. |
|||
Unpack the files and start again cmake-gui. Set the installation directory to C:\MSYS\1.0\local |
|||
and press on Configure and Generate. Close the window and start the installation with |
|||
</translate> |
</translate> |
||
<pre> |
|||
make |
|||
pacman -S git |
|||
make install |
|||
</pre> |
|||
<translate> |
<translate> |
||
<!--T: |
<!--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). |
|||
o Qt4 |
|||
From the Qt website at ftp://ftp.trollech.com you can download already prebuilt packages for the |
|||
MinGW platform. But depending on the version you have installed it can happen that they don't fit |
|||
together. In this case the source tarball must be downloaded. Use version 4.5.3 or higher. Unpack |
|||
the sources and start the configure.exe you'll find inside the sources. |
|||
</translate> |
|||
./configure |
|||
<translate> |
|||
<!--T:39--> |
|||
By default the build the debug and release version. If you only want the release version use the |
|||
option "-release". |
|||
Configure will ask you some questions under which license you want to use Qt. Choose LGPL here. |
|||
Now run the build with |
|||
</translate> |
|||
make |
|||
<translate> |
|||
<!--T:40--> |
|||
This can take quite some time because Qt has become a really huge library over the years. Once the |
|||
build has finished run a |
|||
</translate> |
|||
make install |
|||
<translate> |
|||
<!--T:41--> |
|||
to copy the header files to their right place. All the binaries and header files are still inside |
|||
the source folder. If you like you can copy all the .dll, .a, and the direcories under "include" to |
|||
the subdirectories of C:\MSYS\1.0\local. |
|||
=== Check out the FreeCAD sources === <!--T:92--> |
|||
<!--T:93--> |
|||
To get the FreeCAD source code, clone it from the main git repository: |
|||
<!--T:43--> |
|||
Get a source archive from www.coin3d.org. Unpack the sources and run |
|||
</translate> |
</translate> |
||
<pre> |
|||
./confiure |
|||
git clone https://github.com/FreeCAD/FreeCAD |
|||
make |
|||
</pre> |
|||
make install |
|||
<translate> |
<translate> |
||
<!--T:44--> |
|||
It may happen that a message dialog pops up due to a missing cygwin1.dll. You simply ignore this. |
|||
<!--T:94--> |
|||
If you do not want to compile the latest HEAD, once you have the source you can check out a specific tag: |
|||
</translate> |
|||
====SoQt==== <!--T:45--> |
|||
<pre> |
|||
cd FreeCAD |
|||
git checkout tags/1.0 -b releases/FreeCAD-1-0 |
|||
</pre> |
|||
<translate> |
|||
<!--T:95--> |
|||
Or a specific pull request (in this example, PR 1234): |
|||
<!--T:46--> |
|||
Get a source archive from www.coin3d.org. Unpack the sources and run |
|||
</translate> |
</translate> |
||
<pre> |
|||
./configure CXXFLAGS="-DCOIN_DLL" --with-qt=/usr/local |
|||
cd FreeCAD |
|||
make |
|||
git fetch origin pull/1234/head:pr/1234 |
|||
make install |
|||
git checkout pr/1234 |
|||
</pre> |
|||
<translate> |
<translate> |
||
<!--T:47--> |
|||
In case your Qt development files are not under /usr/local choose the correct directory there. |
|||
Again a message dialog may pop up due to the missing cygwin1.dll. |
|||
<!--T:108--> |
|||
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--> |
||
<!--T: |
<!--T:97--> |
||
FreeCAD depends on many 3rd-party libraries for its functionality. They may be installed individually, or as a single unified command. |
|||
Warning: the following is obsoleted from version 0.14, since FreeCAD is now using |
|||
pySide instead of PyQt. At the moment, PySide suport for MingW seems still not complete: |
|||
https://bugreports.qt-project.org/browse/PYSIDE-113?page=com.atlassian.jira.plugin.system.issuetabpanels%3aall-tabpanel |
|||
<!--T: |
<!--T:101--> |
||
Now, install the following required dependencies using pacman: |
|||
Download the sources archives for sip and PyQt4 from www.riverbankcomputing.co.uk. |
|||
<!--T:51--> |
|||
In order to build sip extract the archive and open a MSYS command line. From within |
|||
its source archive call |
|||
</translate> |
</translate> |
||
* mingw-w64-x86_64-opencascade |
|||
python configure.py --platform win32-g++ --destdir=/usr/local |
|||
* mingw-w64-x86_64-xerces-c |
|||
make |
|||
* 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 |
|||
<translate> |
<translate> |
||
<!--T:52--> |
|||
It may happen that this step aborts because the Python include headers cannot be found. |
|||
In this case edit the Makefile and add the include path for the ython headers and also |
|||
the path and filename of the Python library. |
|||
<!--T: |
<!--T:103--> |
||
The following is a single command to install everything in the list above: |
|||
Unfortunately, the 'make install' command doesn't work because the Makefile was generated |
|||
to use Windows batch commands instead of bash commands. Thus, copy the following files to |
|||
a path where Python can find it, e.g. /usr/local/bin. |
|||
</translate> |
</translate> |
||
<pre> |
|||
sipconfig.py |
|||
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 |
|||
sipdistutils.py |
|||
</pre> |
|||
siputils.py |
|||
sip.pyd |
|||
sip.exe |
|||
<translate> |
<translate> |
||
<!--T:54--> |
|||
In order to build PyQt4 extract the source archive and open a MSYS command line. Go to the |
|||
directory and start |
|||
</translate> |
|||
export PATH=/usr/local/lib/:$PATH |
|||
python configure.py --destdir=/usr/local/lib/site-packages |
|||
make |
|||
<translate> |
|||
<!--T:55--> |
|||
Since the Makefile doesn't find the Python header files copy them all and also the file sip.h |
|||
to a directory where they can be found. A good place seems to be the directory of the Qt sources. |
|||
There copy the files to $QTDIR/include. The Python library file python26.dll.a can go $QTDIR/lib. |
|||
<!--T: |
=== Build FreeCAD === <!--T:104--> |
||
After the build has finished you have to copy all files that end with .pyd to their destination, |
|||
e.g. /usr/local/lib/site-packages/PyQt4. Lateron when you have built the FreeCAD sources you have |
|||
to copy the PyQt4 directory and sip.pyd to the FreeCAD bin directory or set a symlink. |
|||
<!--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). |
|||
</translate> |
|||
====ODE==== <!--T:57--> |
|||
<pre> |
|||
mkdir FreeCAD-build |
|||
cd FreeCAD-build |
|||
</pre> |
|||
<translate> |
|||
<!--T: |
<!--T:106--> |
||
Run cMake: |
|||
TODO: Still not clear if this will be used. (http://www.ode.org), >= 0.10.x |
|||
====OpenCASCADE==== <!--T:59--> |
|||
<!--T:60--> |
|||
For the build of the OpenCASCADE libraries get the sources from www.opencascade.org or alternatively |
|||
it is also possible to download a stripped source tarball from the Debian mirrors which don't include |
|||
any fonts and other resource files. |
|||
<!--T:61--> |
|||
Unpack the sources and download a CMake script from http://opencascade-cmake.googlecode.com/svn/trunk/ |
|||
and the file occ_config.h.cmake. Copy both files into the 'ros' directory, start cmake-gui from |
|||
within a MSYS command line and select MSYS Makefiles. In the options the following switches can be |
|||
disabled: |
|||
</translate> |
</translate> |
||
<pre> |
|||
OPENCASCADE_WRAPPERS |
|||
cmake ../FreeCAD |
|||
OPENCASCADE_VISUALISATION |
|||
</pre> |
|||
OPENCASCADE_OCAF |
|||
OPENCASCADE_DRAW |
|||
<translate> |
|||
<!--T:62--> |
|||
Then specify for OPENCASCADE_INSTALL_PREFIX C:/MSYS/1.0/local as destination directory- |
|||
<!--T:63--> |
|||
Now click the Configure button which takes a while and afterwards the Generate button. |
|||
====Note 1==== <!--T:64--> |
|||
<!--T:65--> |
|||
The original sources don't completely compile with MinGW. Therefore you have to apply the patch |
|||
OpenCASCADE6.3.0-MinGW.patch from http://code.google.com/p/opencascade-cmake/source/browse/trunk |
|||
====Note 2==== <!--T:66--> |
|||
<!--T:67--> |
|||
The original sources includes also a configure script and the Makefile.am files. |
|||
But it appeared to be very hard to build the libraries this way. Thus, it highly |
|||
recommended to do it the CMake way. |
|||
====Note 3==== <!--T:68--> |
|||
<!--T:69--> |
|||
For a couple of libraries the arguments passed to the linker exceeds the number of |
|||
allowed characters and thus the linker stops with an error: "Bad file number". |
|||
To solve this issue you can open the file build.make of the according library and |
|||
split the block (e.g. TKGeomAlgo_OBJECTS) into several smaller ones and modify the |
|||
build rule this way that you create first a static library, add the other object |
|||
files to the group and then unpack the static archive into one directory. This |
|||
trick solves the problem to reduce the whole number of characters. |
|||
Afterwards the shared library can be built out of these object files. |
|||
<!--T:70--> |
|||
Example: |
|||
If the build.make file has a line of the form |
|||
g++ <options> -shared -o libTKGeomAlgo.dll $(TKGeomAlgo_OBJECTS) <libs> |
|||
then change it into |
|||
ar rcs win32/libTKGeomAlgo.a $(TKGeomAlgo_OBJECTS1) |
|||
ar q win32/libTKGeomAlgo.a $(TKGeomAlgo_OBJECTS2) |
|||
... |
|||
ar x win32/libTKGeomAlgo.a |
|||
g++ <options> -shared -o libTKGeomAlgo.dll *.obj <libs> |
|||
rm -f *.obj |
|||
====Netgen==== <!--T:71--> |
|||
<!--T:72--> |
|||
Modify the following files: |
|||
* libsrc/meshing/improve2.hpp |
|||
Add DLL_HEADER to class MeshOptimize2d |
|||
* libsrc/meshing/meshclass.hpp |
|||
Add DLL_HEADER to CalcSurfacesOfNode |
|||
* libsrc/meshing/meshtype.hpp |
|||
Add DLL_HEADER to classes SurfaceElementIndex, MeshPoint, Element2d (int anp), |
|||
* libsrc/occ/occgeom.hpp |
|||
Add DLL_HEADER to classes Line, OCCGeometry, OCCParameters, OCCGenerateMesh |
|||
* libsrc/occ/occmeshsurf.hpp |
|||
Add DLL_HEADER to classes OCCSurface, Meshing2OCCSurfaces, MeshOptimize2dOCCSurfaces, OCCRefinementSurfaces |
|||
Run the configure script with these arguments </translate> |
|||
./configure --prefix=/usr/local --enable-shared --enable-occ --with-occ=/usr/local --with-tcl=/usr/local/lib --enable-nglib CXXFLAGS="-DNGLIB_EXPORTS -DWNT" |
|||
make && make install |
|||
<translate> |
<translate> |
||
<!--T:107--> |
|||
===Building the FreeCAD sources=== <!--T:73--> |
|||
And finally: |
|||
<!--T:74--> |
|||
In order build the FreeCAD sources either get the developer sources from the SVN repository |
|||
or get one of the .tar.gz tarballs and extract it. |
|||
Now start cmake-gui.exe from within a MSYS command line window and browse to the FreeCAD |
|||
sources and also define the build directory. Now run Configure. It may happen that cmake |
|||
complains about some not found libraries. In this case go through the listed libraries and |
|||
choose the include directory and/or the path to the library where needed. Once Confgiure |
|||
accepts all your input create the Makefiles by clicking on Generate. Now close the window |
|||
and enter |
|||
</translate> |
</translate> |
||
<pre> |
|||
make |
|||
cmake --build ./ |
|||
make install |
|||
</pre> |
|||
<translate> |
<translate> |
||
<!--T:75--> |
|||
This will take a couple of minutes. From the command line window change to the FreeCAD bin |
|||
folder and start the application with ./FreeCAD. In case it complains about some DLLs it cannot |
|||
find you have to extend your PATH environment variable with |
|||
</translate> |
|||
export PATH=$PATH:/usr/local/bin:/usr/local/lib |
|||
<translate> |
|||
<!--T:76--> |
|||
If no grave problems remains repeating ./FreeCAD should start the application now. |
|||
====Note==== <!--T:77--> |
|||
<!--T:78--> |
|||
In order to let CMake detect the boost libraries you must make sure that the |
|||
DLLs are in the system path because the check builds some test applications |
|||
and tries to start them. If the DLLs are not in path CMake says that it cannot |
|||
find boost. In this case do a export PATH=/usr/local/lib:$PATH |
|||
<!--T:79--> |
|||
Have fun! |
|||
<!--T:1--> |
|||
[[Category:Developer_Documentation]] |
|||
[[Category:Developer]] |
|||
</translate> |
</translate> |
||
{{Userdocnavi{{#translation:}}}} |
|||
{{clear}} |
|||
[[Category:Developer_Documentation{{#translation:}}]] |
|||
[[Category:Developer{{#translation:}}]] |
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 ./
- Getting started
- Installation: Download, Windows, Linux, Mac, Additional components, Docker, AppImage, Ubuntu Snap
- Basics: About FreeCAD, Interface, Mouse navigation, Selection methods, Object name, Preferences, Workbenches, Document structure, Properties, Help FreeCAD, Donate
- Help: Tutorials, Video tutorials
- Workbenches: Std Base, Arch, Assembly, CAM, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test Framework
- Hubs: User hub, Power users hub, Developer hub