Compile on Windows/sv

Denna artikel förklarar steg för steg hur man kompilerar FreeCAD på Windows.

Krav
Du behöver huvudsakligen kompilatorn. På Windows använde vi M$ VisualStudio 8 Kompilator med den högsta servicepacken. Fast det troligen är möjligt att använda Cygwin eller MingW gcc så har det ännu inte testats eller portats. Vi har portat den till att använda VC8 Express Edition. Du behöver ladda ned Windows Platform SDK för att få Windows.h. Du behöver också alla Tredjepartsbiblioteken för att framgångsrikt kompilera FreeCAD.

Om du använder M$ kompilerarna så behöver du troligtvis ladda ned FreeCAD LibPack vilken ger dig alla nödvändiga bibliotek för att bygga FreeCAD på Windows.

Bygga med cMake
Först av allt, så måste du ladda ned cMake och installera den på din byggmaskin.

Bytet till cMake
Sedan version 0.9 använder vi byggsystemet cMake för att generera build/make filerna för olika kompilatorer. Vi levererar inte längre .vcproj filer. Om du vill bygga tidigare versioner av FreeCAD (0.8 och äldre) se "Bygga äldre versioner" senare i denna artikel.

Vi bytte därför att det blev mer och mer smärtsamt att underhålla projektfiler för 30+ byggmål och x kompilatorer. cMake ger oss möjligheten att stödja alternativa IDEs, som Code::Blocks, Qt Creator och Eclipse CDT. Huvudkompilatorn vi använder är fortfarande M$ VC9 Express. Men vi planerar för framtiden en byggprocess på Windows utan proprietär kompilatormjukvara.

Konfigurera byggprocessen
Det första steget att bygga FreeCAD med cMake är att konfigurera miljön. Det finns i stort sett två vägar att gå:
 * Använda LibPack
 * Installera alla nödvändiga bibliotek och låta cMake hitta dem

I det första fallet så behöver du endast ge cMake sökvägen till LibPack och resten skall bli gjort automatiskt, och du ser en sådan här skärm:

Du ser sökvägen till LibPack insatt i FREECAD_LIBPACK_DIR variabeln. Från och med det så är alla inkluderingar och sökvägar satta. Du behöver bara klicka på Generate knappen och projektfilerna genereras.

Om du stänger av alternativet FREECAD_LIBPACK_USE, så försöker konfigurationen hitta alla nädvändiga bibliotek på ditt system. Beroende på om biblioteken fungerar mer eller mindre bra Så du behöver ofta definiera sökvägar för hand. cMake kommer att visa dig vad som inte hittas och behöver specificeras.

Alternativ för byggprocessen
Byggsystemet cMake ger os mycket mer flexibilitet över byggprocessen. Det innebär att vi kan sätta på och stänga av en del funktioner eller moduler. Det är ungefär som att bygga en Linuxkärna. Du har många växlar för att styra byggprocessen.

Här är beskrivningen av dessa växlar. De kommer ganska säkert att förändras mycket i framtiden eftersom vi vill öka byggflexibiliteten mycket mer.

Bygga via kommandoraden
Här är ett exempel på hur man bygger FreeCAD från kommandoraden:

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

Använda LibPack
För att göra det lättare att få FreeCAD kompilerat, så erhåller vi en samling med alla nödvändiga bibliotek. Den kallas för LibPack. Du kan hitta den på nedladdningssidan på sourceforge.

Du behöver sätta följande miljövariabler:


 * FREECADLIB = "D:\var_det_nu_är\LIBPACK"
 * QTDIR = "%FREECADLIB%"

Lägg till "%FREECADLIB%\bin" och "%FREECADLIB%\dll" till systemvariabeln PATH. Tänk på att du måste byta ut "%FREECADLIB%" mot sökvägen, eftersom Windows inte rekursivt byter ut miljövariabler.

Kataloginställning i Visual Studio
Några sökvägar i Visual Studio behöver ställas in. För att ändra dem, använd menyn ''Tools?Options?Directory

Includes
Lägg till följande sökvägar till include sökvägslista:
 * %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
Lägg till följande sökväg till lib sökvägslista:


 * %FREECADLIB%\lib

Executables
Lägg till följande sökväg till executable sökvägslista:
 * %FREECADLIB%\bin
 * TortoiseSVN binär installationskatalog, vanligtvis "C:\Programm Files\TortoiseSVN\bin", detta behövs för att bygga en distribution när SubWVRev.exe används till att extrahera versionsnumret från Subversion.

Python behövs
Under kompileringen så körs några Python skript. Så Python tolken måste fungera på operativsystemet. Använd ett kommandofönster för att kontrollera det. Om Python biblioteket inte är korrekt installerat så kommer du att få ett felmeddelande som Cannot find python.exe. Om du använder LibPack så kan du också använda python.exe i bin katalogen.

Speciellt för VC8
När du bygger projektet med VC8, så måste du ändra länkinformationen för WildMagic biblioteket, eftersom du behöver en annan version för VC6 och VC8. Båda versionerna finns i LIBPACK/dll. I projektegenskaperna för AppMesh ändra biblioteksnamnet för wm.dll till VC8 versionen. Var noga med att ändra det i Debug och Release konfigurationen.

Kompilera
Efter att du har uppfyllt alla krav så är kompileringen - förhoppningsvis - bara ett musklick i VC ;-)

Efter Kompilering
För att kunna starta FreeCAD från kompileringsmiljön så behöver du kopiera några få filer från LibPack till bin mappen där FreeCAD.exe är installerad efter en framgångsrik byggnad:


 * python.exe och python_d.exe från LIBPACK/bin
 * python25.dll och python25_d.dll från LIBPACK/bin
 * python25.zip från LIBPACK/bin
 * make a copy of Python25.zip och döp om den till Python25_d.zip
 * QtCore4.dll från LIBPACK/bin
 * QtGui4.dll från LIBPACK/bin
 * boost_signals-vc80-mt-1_34_1.dll från LIBPACK/bin
 * boost_program_options-vc80-mt-1_34_1.dll från LIBPACK/bin
 * xerces-c_2_8.dll från LIBPACK/bin
 * zlib1.dll från LIBPACK/bin
 * coin2.dll från LIBPACK/bin
 * soqt1.dll från LIBPACK/bin
 * QtOpenGL4.dll från LIBPACK/bin
 * QtNetwork4.dll från LIBPACK/bin
 * QtSvg4.dll från LIBPACK/bin
 * QtXml4.dll från LIBPACK/bin

När du använder en LibPack med en Pythonversion som är äldre än 2.5 så måste du kopiera ytterligare två filer:
 * zlib.pyd och zlib_d.pyd från LIBPACK/bin/lib. Denna behövs av python för att öppna det zippade python biblioteket.
 * _sre.pyd och _sre_d.pyd från LIBPACK/bin/lib. Denna behövs av python för det inbyggda hjälpsystemet.

Om du inte kan få det att fungera beroende på ett Python fel så är det mycket troligt att en av zlib*.pyd filerna saknas.

Extra saker
Om du vill bygga källkodsdokumentationen så behöver du DoxyGen.

För att skapa ett installationspaket så behöver du WIX.

Under kompileringen så körs några Pythonskript. Så Python tolken måste fungerra korrekt.

För mer detaljer, ta även en titt på README.Linux i din källkod.

Först av allt så ska du bygga den Qt plugin som erhåller FreeCAD's alla anpassade widgetar som vi behöver för Qt Designer. Källkoden är placerad under //src/Tools/plugins/widget//.

Än så länge så erbjuder vi inte någon makefile -- men genom att anropa qmake plugin.pro

så skapas den. När det väl är gjort, så kommer biblioteket skapas genom att man anropar make //libFreeCAD_widgets.so//.

För att göra detta bibliotek känt för din Qt Designer så behöver du kopiera filen till //$QTDIR/plugin/designer//.