CompileOnUnix/sv

På senare linux distributioner, så är FreeCAD i allmänhet lätt att bygga, eftersom alla beroenden vanligtvis erhålls av pakethanteraren. Så du behöver bara hämta källkoden till FreeCAD, installera de beroenden som är listade nedan, och sedan skriva:

./autogen.sh && ./configure && make

eller

./cmake. && make

för att bygga FreeCAD, beroende på vilket byggsystem du föredrar att använda (autotools eller cmake). Nedan finner du detaljerade förklaringar på hela processen och konstigheter du eventuellt stöter på. Innan du sjunker ned för djupt i detaljer, så finns det också ett skalskript som du kan använda för att följa med. Om du hittar något fel i den eller här nedan, var snäll och hjälp oss att korrigera det.

Hämta källkoden
Innan du kan kompilera FreeCAD, så måste du hämta källkoden. Installera först subversion. Sedan, från en katalog som du valt (till exempel din användarkatalog), gör:

svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad

Detta kommer att utföra en anonym kontroll av de nuvarande utvecklingsversionen i en ny katalog som kallas för "freecad".

Alternativt så kan du ladda ned en source tarball men de kan redan vara ganska gamla så det är troligen bättre att alltid hämta den senaste källkoden via subversion. Notera dock att subversion versionen är den FreeCAD version som man för tillfället arbetar med, och den kan innehålla buggar eller till och med misslyckas att kompileras.

Krav
För att kompilera FreeCAD under Linux så måste du installera alla bibliotek som nämns i Tredjeparts bibliotek först. Du behöver också [GNU gcc kompilatorn] version lika med eller över 3.0.0. g++ behövs också eftersom FreeCAD helt och hållet är skrivet i C++. Både gcc och g++ är inkluderade i build-essential paketet listat nedan. Under kompileringen så körs några Pythonskript. så Python tolken måste fungera korrekt.

För att undvika linkerproblem under byggprocessen så skulle det vara en bra ide att ha sökvägarna till biblioteken antingen i din LD_LIBRARY_PATH variabel eller i din ld.so.conf fil. Detta är normalt redan fallet i senare distributioner.

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

Debian/Ubuntu och de senaste distributionerna
På Debian baserade system är det ganska lätt att få alla beroenden installerade. De flesta biblioteken finns tillgängliga via apt-get eller pakethanteraren synaptic. Nedan så listas alla paket som du behöver installera. På andra distributioner, så kan paketnamnen variera, men vanligtvis så kan du hitta dem också:

build-essential python libcoin60-dev libsoqt4-dev libxerces-c2-dev (eller libxerces28-dev beroende på ditt system) libboost-dev libboost-date-time-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-serialization-dev libboost-signals-dev libboost-regex-dev libboost-thread-dev libqt4-dev qt4-dev-tools python2.5-dev (eller högre version om det finns) libopencascade-dev libf2c2-dev gfortran

För att installera alla dessa bibliotek i ett steg, kopiera bara följande text och klistra in den i en terminal (endast för debian/ubuntu baserade system) som root:

aptitude install build-essential python libcoin60-dev libsoqt4-dev libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-serialization-dev libboost-signals-dev libboost-regex-dev libboost-thread-dev libqt4-dev qt4-dev-tools python2.5-dev libopencascade-dev libf2c2-dev gfortran

Ett annat enkelt sätt, om din debian-baserade distribution redan har ett FreeCAD paket, är att göra: apt-get build-dep freecad vilket kommer att hämta alla paket som behövs för att bygga FreeCAD. Men var uppmärksam på att en del nya paketbehov kanske tillkommit efter den sista versionen, som du fortfarande behöver installera manuellt.

alternativt så kan du också installera

libsimage-dev (för att Coin ska stödja fler bildfilformat) checkinstall (för att registrera dina installerade filer i ditt systems pakethanterare, så att du lätt kan avinstallera senare) python-pivy (behövs till 2D Ritmodulen) python-qt4 (behövs till 2D Ritmodulen)

Fedora
För att bygga & installera FreeCAD på Fedora 13, så behövs en del tips & tricks:
 * Installera de nödvändiga paketen, de flesta finns tillgängliga från Fedora 13's programförvar
 * Ladda ned och bygg xerces
 * Ladda ned och bygg OpenCascade. du behöver peka den på xmu: ./configure --with-xmu-include=/usr/include/X11/Xmu --with-xmu-library=/usr/lib
 * Ladda ned och bygg Pivy. Du behöver ta bort 2 referenser till icke-existerrande "SoQtSpaceball.h" from pivy/interfaces/soqt.i Om man kommenterar ut dessa två rader så kommer bygg & installation att fungera.
 * Konfigurera Freecad. Du behöver peka den på några saker: ./configure --with-qt4-include=/usr/include --with-qt4-bin=/usr/lib/qt4/bin --with-occ-lib=/usr/local/lib --with-occ-include=/usr/local/inc --with-xercesc-lib=/usr/local/lib
 * make - ett problem påträffas där byggningen går sönder därför att ldflags för soqt är inställda till "-LNONE" vilket gör att libtool spyr. Mitt sätt att hacka sig runt detta var att ändra /usr/lib/Coin2/conf/soqt-default.cfg så att ldflags är "" istället för "-LNONE". Efter detta -> OK !
 * make install

Äldre och okonventionella distributioner
På äldre distributioner så kanske du inte hittar följande bibliotek:

OpenCASCADE
Inte alla Linux distributioner har ett officiellt OpenCASCADE paket i deras programförråd. Du måste själv kontrollera i din distribution om den finns tillgänglig. Åtminstone från och med Debian Lenny och Ubuntu Intrepid så finns ett officiellt .deb paket. För äldre Debian eller Ubuntu versioner så kan du hämta inofficiella paket här. För att bygga dina egna privata .deb paket, följ dessa steg:

wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0.orig.tar.gz wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.dsc wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.diff.gz

dpkg-source -x opencascade_6.2.0-7.dsc

sudo apt-get install build-essential devscripts debhelper autoconf automake libtool bison libx11-dev tcl8.4-dev tk8.4-dev libgl1-mesa-dev libglu1-mesa-dev java-gcj-compat-dev libxmu-dev
 * 1) Install OCC build-deps

cd opencascade-6.2.0 ; debuild
 * 1) Bygga Opencascade paketen. Detta tar timmar och kräver minst
 * 2) 8 GB ledigt hårddiskutrymme

sudo dpkg -i libopencascade6.2-0_6.2.0-7_i386.deb libopencascade6.2-dev_6.2.0-7_i386.deb
 * 1) Installera de resulterande biblioteks debs

Alternativt, så kan du ladda ned och kompilera den senaste versionen från opencascade.org:

Installera paketet som vanligt, var uppmärksam på att installeraren är ett java program som kräver den officiella java runtime edition från Sun (paketnamn: sun-java6-jre), inte öppen källkods java (gij) som är medskickat i Ubuntu. Installera den om nödvändigt:

sudo apt-get remove gij sudo apt-get install sun-java6-jre

Var försiktig, om du använder gij java med andra saker som en webbläsarplugin, så kommer de inte att fungera längre. Om installeraren inte fungerar, försök:

java -cp path_to_file_setup.jar <-Dtemp.dir=path_to_tmp_directory> run

När paketet väl ar installerat, gå till "ros" katalogen inuti opencascade katalogen, och gör

./configure --with-tcl=/usr/lib/tcl8.4 --with-tk=/usr/lib/tk8.4

Nu kan du bygga. gå tillbaka till ros mappen och gör:

make

Det kommer att ta lång tid, kanske flera timmar.

När det är gjort, installera den genom att göra

sudo make install

Biblioteksfilerna kommer att kopieras till /usr/local/lib vilket är bra eftersom de kommer att hittas automatiskt av alla program. Alternativt, så kan du också göra

sudo checkinstall

vilket kommer att göra samma som make install men skapar också en punkt i ditt pakethanterarsystem så att du lätt kan avinstallera senare.

Rensa nu upp de enorma temporära kompileringsfilerna genom att göra

make clean

Möjligt fel 1: Om du använder OCC version 6.2, så är det troligt att kompileraren kommer att stanna precis efter starten av "make" operationen. Om det händer, redigera "configure" skriptet, lokalisera CXXFLAGS="$CXXFLAGS " uttrycket, och byt ut det med CXXFLAGS="$CXXFLAGS -ffriend-injection -fpermissive". gör sedan configure steget igen.

Möjligt fel 2: Möjligtvis kommer flera moduler (WOKSH, WOKLibs, TKWOKTcl, TKViewerTest och TKDraw) att klaga på att de inte kunde hitta tcl/tk headers. I det fallet, eftersom alternativet inte erbjuds i configure skriptet, så behöver du manuellt redigera makefile för var och en av dessa moduler: Gå till adm/make och in till var och en av de dåliga modulernas mappar. Redigera Makefile, och lokalisera raderna CSF_TclLibs_INCLUDES = -I/usr/include och CSF_TclTkLibs_INCLUDES = -I/usr/include och lägg till /tcl8.4 och /tk8.4 till den så att de läser: CSF_TclLibs_INCLUDES = -I/usr/include/tcl8.4 och CSF_TclTkLibs_INCLUDES = -I/usr/include/tk8.4

SoQt
SoQt biblioteket måste kompileras mot Qt4, vilket är fallet i de senaste distributionerna. Men när denna artikel skrevs så fanns det endast SoQt4 paket for Debian själv tillgängligt men inte för alla Ubuntu versioner. För att bygga paketen, utför följande steg:

wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1.orig.tar.gz wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.dsc wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.diff.gz dpkg-source -x soqt_1.4.1-6.dsc sudo apt-get install doxygen devscripts fakeroot debhelper libqt3-mt-dev qt3-dev-tools libqt4-opengl-dev cd soqt-1.4.1 debuild sudo dpkg -i libsoqt4-20_1.4.1-6_i386.deb libsoqt4-dev_1.4.1-6_i386.deb libsoqt-dev-common_1.4.1-6_i386.deb

Om du är på ett 64bitars system, så behöver du byta ut i386 mot amd64.

Pivy
Pivy behövs inte för att bygga FreeCAD eller för att köra det, men det behövs för att 2D Ritmodulen ska fungera. Om du inte kommer att använda den modulen, så behöver du inte pivy. När detta skrevs så var Pivy mycket ny, och har kanske inte kommit till din distributions programförråd. Om du inte kan hitta Pivy i din distributions paketförråd, så kan du ta debian/ubuntu paket på FreeCAD's nedladdningssida:

http://sourceforge.net/projects/free-cad/files/FreeCAD%20Linux/

eller kompilera pivy själv:

Pivy kompileringsinstruktioner

Autotools sättet
Du måste ha automake och libtool installerat på ditt system; på Debian/Ubuntu: aptitude install automake libtool

Om du har hämtat källkoden med subversion så måste första steget bli ./autogen.sh

som skapar configure skriptet och mer. För själva byggprocessen så erhåller vi ett configure skript. skriv bara ./configure

För att få allt konfigurerat. Om du vill ha en översikt på alla alternativ som du kan specificera, så kan du skriva ./configure --help.

Normalt så behöver du ingen av dem, såvida inte du har ett av dina bibliotek installerat i en ovnalig katalog. Efter att konfigurationen är avslutad, så är kompilering av FreeCAD så enkelt som make

Om några fel uppstår medan uppbyggnaden från källorna, dubbelkontrollera denna sidan och and README.Linux filen, sedan kan du hoppa till Bug Tracker på SourceForge, välja Any för status och klicka på Browse knappen för att se tidigare rapporter om kompileringsproblem. Efter att du byggt FreeCAD framgångsrikt, gör make install

för att installera den på din maskin. Standard installationskatalog är ~/FreeCAD

Det kommer att installeras i en FreeCAD mapp i din home mapp, så du behöver inte root privilegier. Istället för make install, så kan du också göra checkinstall

På detta sätt så kommer FreeCAD att installeras av ditt pakethanteringssystem, så du kan avinstallera den lätt senare. men eftersom allt i FreeCAD installationen finns i en enda katalog, så kan du även avinstallera den genom att ta bort FreeCAD katalogen.

cMake sättet
cMake är ett nyare byggsystem som har den stora fördelen att vara gemensam för olika målsystem (Linux, Windows, MacOSX, etc). FreeCAD håller på att byta till cMake systemet, och du kan redan nu bygga FreeCAD på det sättet. Liksom med autotools, så görs processen i två steg : först så konfigurerar du källkoden, och sedan så bygger du programmet.

I det första steget så kontrollerar cMake att alla nödvändiga program och bibliotek finns på ditt system och ställer in allt som behövs för den efterföljande kompileringen. Du ges några alternativ som beskrivs nedan, men FreeCAD kommer med med bra standardvärden och om vi antar att cMake är installerat på ditt system, byt till din FreeCAD källkodsmapp och skriv: cmake.

för att få källkoden konfigurerad, (Glöm inte punkten! Den är en parameter till cmake kommandot). Skriv sedan make

för att bygga FreeCAD. En korrekt system-vid installation av FreeCAD kan fortfarande inte göras med cmake, men du kan köra FreeCAD genom att skriva ,/bin/FreeCAD


 * Bygga utanför källkoden:

Om du avser att följa den snabba utvecklingen i SVN versionerna och kanske bidra med kod, så tillåter cMake byggning utanför källkodskatalogen. Skapa bara en katalog som skiljer sig från din freecad rotmapp, växla till denna katalog och skriv:

cmake sökväg-till-freecads-rotmapp

make

Effekten av detta är att alla filer som genereras vid konfigureringen hamnar i din nya byggkatalog, och blandas inte ihop med källkoden som checkats ut från SVN. Hanteringen av din lokala kopia av källkoden förenklas en hel del.


 * Konfigurationsalternativ:

Det finns ett antal experimentella eller ofärdiga moduler som du kanske måste bygga om du vill arbeta med dem. För att göra detta, så behöver du ställa in alternativen rätt i konfigurationsfasen. Gör det antingen i kommandoraden, genom att ge -D : = alternativ till cMake eller så kan du använda någon av de tillgängliga grafiska gränssnitten (t.ex. för Debian, paketen cmake-qt-gui eller cmake-curses-gui).

Till exempel, för att konfigurera på kommandoraden för att få Ihopsättningsmodulen byggd, skriv:

cmake -D FREECAD_BUILD_ASSEMBLY:BOOL=ON sökväg-till-freecads-rotmapp

Möjliga alternativ är listade i FreeCAD's rot CmakeLists.txt fil.

Extra delar
Om du vill utveckla Qt saker för FreeCAD, så behöver du Qt Designer plugin som erhåller alla anpassade widgetar i FreeCAD. Gå till freecad/src/Tools/plugins/widget

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

så skapas den. När det väl är gjort, så skriver du make

och biblioteket libFreeCAD_widgets.so kommer att skapas. För att göra detta bibliotek känt för Qt Designer så måste du kopiera filen till

$QTDIR/plugin/designer


 * Om du känner dig tillräckligt modig för att dyka in i koden, så kan du använda dig av FreeCAD's Källkodsdokumentation

Notering för 64bit system
När du bygger FreeCAD för 64-bit så finns det ett känt problem med OpenCASCADE 64-bit paketet. För att få FreeCAD att fungera korrekt så kanske du behöver köra ./configure skriptet med den extra definitionen _OCC64 satt:

./configure CXXFLAGS="-D_OCC64"

För Debian baserade system så är detta inte nödvändigt när man använder de förbyggda paketen därför att där är OpenCASCADE paketet byggt för att sätts denna definition internt. Nu behöver du bara kompilera FreeCAD på samma sätt som beskrivits ovan.

Automake makron
FreeCAD's configure skript använder flera automake makron som ibland inte är installerade med deras paket: bnv_have_qt.m4, coin.m4, och gts.m4. Om de behövs (fel vid konfigurering), googla efter dem så hittar du dem lätt. De är bara simpla skript som du behöver lägga i din /usr/share/aclocal mapp.

Skapa ett debian paket
Om du planerar att bygga ett Debian paket från källorna så behöver du installera dessa paket först:

dh-make devscripts lintian (valfritt, används för att kontrollera om paketen är standard-komplianta)

För att bygga ett paket, öppna en konsol, gå till FreeCAD katalogen och skriv debuild

När paketet väl är byggt, så kan du använda lintian för att kontrollera om paketet innehåller fel lintian ditt-fräscha-nya-freecad-paket.deb (byt ut mot namnet på det paket du just har skapat)

Automatiska byggskript
Här är allt du behöver för en komplett uppbyggnad av FreeCAD. Det försöker hålla sig till ett skript och fungerar på en nyligen installerad distribution. Kommandona kommer att fråga efter root lösenordet (för installation av paketen) och ibland för att bekräfta ett fingeravtryckför en extern programförrådsserver eller https-subversion programförråd. Dessa skript ska fungera på 32 och 64 bit versioner. De är skrivna för en distinkt version, men kommer troligen också fungera på en senare version med eller utan småändringar.

Om du har ett sådant skript för din föredragna distribution, var snäll och skicka hit den! vi kommer inkorporera den in till denna artikel.

Ubuntu 9.10 - Karmic Koala / Ubuntu 10.04 LTS - Lucid Lynx / Ubuntu 10.10 Maveric
sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \ libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev \ libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \ libboost-serialization-dev libboost-signals-dev libboost-regex-dev libboost-thread-dev \ libqt4-dev qt4-dev-tools python2.6-dev libopencascade-dev libsoqt4-dev \ libode-dev subversion cmake libeigen2-dev libsimage-dev python-qt4 \ libtool autotools-dev automake bison flex libf2c2-dev gfortran svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad cd freecad cmake. make cd bin ./FreeCAD -t 0
 * 1) kontrollera den senaste källkoden
 * 1) gå till källkodskatalog
 * 1) bygg konfiguration
 * 1) bygg FreeCAD
 * 1) testa FreeCAD

./FreeCAD
 * 1) use FreeCAD

Ubuntu 9.04 - Jaunty Jackalope
sudo apt-get install build-essential python libcoin40-dev libsoqt4-dev \ libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev \ libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \ libboost-serialization-dev libboost-signals-dev libboost-regex-dev \ libboost-thread-dev libqt4-dev qt4-dev-tools python2.6-dev \ libsimage-dev libopencascade-dev \ libsoqt4-dev libode0-dev subversion cmake libeigen2-dev python-pivy \ libtool autotools-dev automake svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad cd freecad cmake. make cd bin ./FreeCAD -t 0
 * 1) hämta de nödvändiga verktygen och biblioteken
 * 1) kontrollera den senaste källkoden
 * 1) gå till källkodskatalog
 * 1) bygg konfiguration
 * 1) bygg FreeCAD
 * 1) testa FreeCAD

OpenSuse 11.2
Detta skript fungerar inte  för tillfället därför att:
 * libXerces-c-devel verkar ha försvunnit ....

sudo zypper install gcc cmake subversion OpenCASCADE-devel \ libXerces-c-devel python-devel libqt4-devel python-qt4 \ Coin-devel SoQt-devel boost-devel libode-devel libQtWebKit-devel \ libeigen2-devel gcc-fortran f2c svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad cd freecad cmake. nice make cd bin ./FreeCAD -t 0
 * 1) installera de nödvändiga paketen för utveckling
 * 1) kontrollera den senaste källkoden
 * 1) gå till källkodskatalog
 * 1) bygg konfiguration
 * 1) bygg FreeCAD
 * 1) testa FreeCAD

OpenSuse 11.1
sudo zypper -p http://packman.unixheads.com/suse/11.1/ sudo zypper install gcc cmake subversion OpenCASCADE-devel \ libXerces-c-devel python-devel libqt4-devel python-qt4 \ Coin-devel SoQt-devel boost-devel libode-devel libQtWebKit-devel \ libeigen2-devel svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad cd freecad cmake. nice make cd bin ./FreeCAD -t 0
 * 1) extra programförråd (för OpenCascade)
 * 1) installera de nödvändiga paketen för utveckling
 * 1) kontrollera den senaste källkoden
 * 1) gå till källkodskatalog
 * 1) bygg konfiguration
 * 1) bygg FreeCAD
 * 1) testa FreeCAD

Debian Squeeze
sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \ libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev \ libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \ libboost-serialization-dev libboost-signals-dev libboost-regex-dev \ libqt4-dev qt4-dev-tools python2.5-dev \ libsimage-dev libopencascade-dev \ libsoqt4-dev libode-dev subversion cmake libeigen2-dev python-pivy \ libtool autotools-dev automake libf2c2-dev gfortran svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad cd freecad cmake. make cd bin ./FreeCAD -t 0
 * 1) hämta de nödvändiga verktygen och biblioteken
 * 1) kontrollera den senaste källkoden
 * 1) gå till källkodskatalog
 * 1) bygg konfiguration
 * 1) bygg FreeCAD
 * 1) testa FreeCAD