Compile on Windows

From FreeCAD Documentation
Revision as of 08:57, 7 August 2009 by Jriegel (talk | contribs)

This article explains step by step how to compile FreeCAD on Windows.

Prerequisits

What you need is mainly the compiler. On Windows we use the M$ VisualStudio 8 Compiler with the highest service pack. Although it's probably possible to use Cygwin or MingW gcc it's not tested or ported so far. We have also ported to use VC8 Express Edition. You need to download the Windows Platform SDK to get e.g. the Windows.h. Also you need all the Third Party Libraries to successfully compile FreeCAD.

If you use the M$ compilers you want most likely download the FreeCAD LibPack which provides you with all needed libs to build FreeCAD on Windows.

Building with cMake

The switch to cMake

Since Version 0.9 we use the cMake build system to generate the build/make files for various compilers. We do not longer delifer .vcproj files. If you want build older Versions of FreeCAD (0.8 and older) see "Building older Versions" later in this article.

We switched because it becomes more and more painfull to maintain project files for 30+ build targets and n compilers. cMake gives us the posibility to support alternative compilers, like CodeBlocks, QTCreator and Ecplipse CDT. Thought the main compiler we use is still M$ VC9 Express. But we plan for the future a build process on Windows without proprarity compiler software.

configure the Build process

The first step to build FreeCAD with cMake is to configure the environment. There are basically two ways to go:

  • Using the LibPack
  • Installing all needed libs and let cMake find them


Building older Versions

Using LibPack

To make it easier to get FreeCAD compiled, we provide a collection of all needed Libraries. Its called the LibPack. You can find it on the download page on sourceforge.

You need to set the following environment variables:

FREECADLIB = "D:\Wherever\LIBPACK"
QTDIR = "%FREECADLIB%"

Add "%FREECADLIB%\bin" and "%FREECADLIB%\dll" to the system PATH variable. Mind that you have to replace "%FREECADLIB%" with the path name, since windows does not recursively replace environment variables.

Compiler Setup

The first thing is to put STLport on the top of the include list! That's important. Otherwise VC6 will use its own STL libraries which are terribly bad! With VC7.1 and VC8 you don't need STLport.

Directory setup in Visual Studio

Some search path of Visual Studio need to be set. To change them, use the menu Tools→Options→Directory

Includes

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
Libs

Add the following search path to the lib path search list:

  • %FREECADLIB%\lib
Executables

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

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

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

After you conform to all prerequisits the compilation is - hopefully - only a mouse click in VC ;-)

After Compiling

To get FreeCAD up and running from the compiler environment you need to copy a few files from the LibPack to the bin folder where FreeCAD.exe is installed after a successfull build:

  • python.exe and python_d.exe from LIBPACK/bin
  • python25.dll and python25_d.dll from LIBPACK/bin
  • python25.zip from LIBPACK/bin
  • 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

When using a 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.

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

If you whant to build the source code documentation you need DoxyGen.

To create an intstaller package you need WIX.


During the compilation some Python scripts get executed. So the Python interpreter has to work properly.

For more details have also a look to README.Linux in your sources.

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

//src/Tools/plugins/widget//.

So far we don't provide a makefile -- but calling

qmake plugin.pro

creates it. Once that's done, calling make will create the library

//libFreeCAD_widgets.so//.

To make this library known to your Qt Designer you have to copy the file to

//$QTDIR/plugin/designer//.
SourceForge bug tracker: Finding compile bugs

Bug Tracking

If any bugs occurs while building from sources, please double-check this page, then you could jump to the Bug Tracker on SourceForge, choose Any for status and click the Browse button to see previous reports on compile problems.