Hauptseite

Kompilieren

Abhängigkeiten

Obligatorisch

Bis zur Version 0.17 von Merkaartor gab es keine "harte" (gemeint ist "kann-nicht-ohne-kompiliert-werden") Abhängigkeiten. Merkaartor konnte nur mit Qt kompiliert und benützt werden.
Jedoch ab der Version 0.18 hat Merkaartor eine Anzahl von "harten" Abhängigkeiten:

  • PROJ.4, die unverzichtbare Bibliothek für alle mit Projektionen zusammenhängenden Sachen (>= 4.6)
  • GDAL, die unverzichtbare Bibliothek für alle mit gis zusammenhängenden Dateiformaten (>=1.6.0)

Linuxnutzer, die Merkaartor von einer Quelle kompilieren möchten, müssen folgende Packs installieren:

Für Ubuntu/Debian
  • libproj0 und libproj-dev
  • libgdal1 und libgdal-dev
Für Fedora
  • proj-devel
  • gdal-devel

Für Qt < 4.7
Ein Problem mit dem Abschneiden in Qt-Versionen < 4.7 zwingt zur Installation von Boost (>= 1.38) . Ab Qt >= 4.7, wird das nicht mehr gebraucht.

Ubuntu/Debian
  • libboost-dev
Fedora
  • boost-devel

Warnung

Damit die Plugins zur Verfügung stehen, muss das Build via "make install" installiert werden!

Fakultatif

Einige fakultative Komponenten/Features können Merkaartor beigefügt werden, die mehr äusserliche Abhängigkeiten erfordern und deren Einrichtung via die_qmake_ Befehlslinie erfolgen muss:

qmake parameter dependency description
GEOIMAGE=1 libexiv2, libexiv2-dev erlaubt Bilder mit geotags
ZBAR=1 libzbar0, libzbarqt0, libzbar-dev, libzbarqt-dev (>=0.10) benütz die ZBAR-Bibliothek um Koordinaten von Barcodes für das "Walking Paper" plugin zu extrahieren
LIBPROXY=1 libproxy0, libproxy-dev benütz die libproxy Bibliothek, um das Systemproxy automatisch zu entdecken
GPSDLIB=1 libgps, libgps-dev (>=2.92) benütz gpsd für GPS-Ablesen

Andere qmake Optionen

Zum Feintunen können andere Optionen angegeben werden:

|*qmake parameter*|*description*| |PREFIX=<path>|base prefix für Installationen (default: /usr/local)| |LIBDIR=<path>|base Datenverzeichnis für Plugins (default: $$PREFIX/lib)| |PORTABLE=1|baut merkaartor als eine portierbare Applikation (alle Dateien in app dir)| |TRANSDIR_MERKAARTOR=<path>|Übersetzungsverzeichnis für Merkaartor.
Achtung: Die Übersetzungs "executables" (z.B.. *.qm") müssen vor dem Laufen von qmake vorhanden sein, damit sie für die Installation in Unix bereitstehen.
Starte zuerst

release src/src.pro
.| |TRANSDIR_SYSTEM=<path>|Übersetzungsverzeichnis für Qt selbst| |NODEBUG=1|kein Debug-Ziel| |RELEASE=1|verweist auf eine Releaseversion (kosmetisch); muss mit NODEBUG=1 benutzt werden| |NVIDIA_HACK=1|wird gebraucht um ein NVidia-spezifisches Schleichtempo zu behandeln| |NOUSEWEBKIT=1|Schaltet Webkit (wird für das Yahoo-Plugin eingesetzt) ab. Ist nur dann von Nutzen, wenn du aus irgendeinem Grund kein Qt Webkit installiert hast.

Typische qmake Befehlslinie

Eine typische qmake Befehlslinie zum Erstellen eines vollständigen Debug-Merkaartor ohne automatische Proxyunterstützungsinstallation in /usr/local ist:

qmake -r Merkaartor.pro GEOIMAGE=1 ZBAR=1 GPSDLIB=1

Probleme beim Einsatz von qmake

Wenn du Fehlermeldungen erhältst, wie z.B. "Warnung: Möglicher Symbolkonflikt gefunden in ... (WARNING: Found potential symbol conflict of ...)" während qmake läuft, ist die verwendete qmake-Version wahrscheinlich qt3. Versuche qmake der qt4 zu starten:

qmake-qt4 -r Merkaartor.pro <...>

Linux Schnellstart

Stell sicher, dass die benötigte Software installiert wird: # Für Debian oder Ubuntu basierte Systeme:
sudo apt-get install git libqt4-dev qt4-qmake gcc g++ zlib1g-dev \
libexiv2-dev libgdal1-dev libxml2-dev libxslt1-dev libboost-dev \
libboost-math-dev libboost-serialization-dev libproj-dev

  1. Für Fedora:
    yum install git qt-devel gcc-c++ zlib-devel exiv2-devel gdal-devel \
    libxml2-devel libxslt-devel boost-devel boost-math boost-serialization

Besorg dir die neuesten Entwicklungsschnapschüsse:
git clone git://gitorious.org/merkaartor/main.git

Wechsle das Datenverzeichnis und kompiliere:
cd main
qmake
make

Füg NOUSEWEBKIT=1 dem qmake bei, wenn eine àltere Version von Qt als 4.4.0 benützt oder wenn du QWebkit nicht dazukompiliert hast.

Teste die Binären:
./binaries/bin/merkaartor

Merke: Um Plugins (wie z.B. Yahoo! Arial Imagery oder Walking Papers) zur Verfügung zu haben, wenn Merkaartor läuft, müssen die Merkaartor-Binaries auch installiert werden:
make install

In Mac OS X

Anforderungen:
  • XCode
  • QT

Du erhältst Xcode von deiner Mac OSX Installations-DVD oder du kannst es hier herunterladen:
http://developer.apple.com/technologies/xcode.html

Lad QT hier herunter:
http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x
Unter 10.4 wähl die Carbonversion. Unter 10.5 und neuer wähl die Cocoaversion

Weitere Bibliotheken (GDAL, Geoimage, libspatialite) können leicht kompiliert werden, wenn eines der folgenden direkt von der Quelle genutzt wird:
Homebrew (https://github.com/mxcl/homebrew)
Macports (http://www.macports.org/)
Fink (http://www.finkproject.org/)

Nach dem du jetzt alles beisammen hast, was du brauchst, kannst du die gewünschte Merkaartorversion hier beziehen (entweder via git oder source download)
qmake -r -spec macx-g++

Merkaartor unter Windows aufbauen (veraltet)

Um Merkaartor unter Windows aufzubauen brauchst du:

Wie Merkaartor von der Quelle unter Windows aufbauen (veraltet)

Dieses hier beschreibt, wie man Merkaartor unter Windows von der Quelle mit Qt 4.5, MinGW und Windows aufbaut. Die ganze Prozedur wird etwa eine halbe Stunde dauern, je nach deiner CPU-Geschwindigkeit, Internetanbindung und Fähigkeiten. Vermeide VMware. Es wird funktionieren, aber sonderbarerweise wird es 4 x solange dauern.

Beachte: Es gibt mehrere externe Abhängigkeiten von Bibliotheken, die erstellt werden müssen, bevor Merkaartor gebaut werden kann. Dieses How To schliesst alle Abhängigkeiten ein. Du kannst möglicherweise eine Abkürzung nehmen, in dem du vorabgebauten Abhängigkeiten für MinGW, die auf Gitorious zur Verfügung stehen, benutzt:

Im Merkaartor Quellenverzeichnis starte:

git clone http://git.gitorious.org/merkaartor/mingw-binaries.git binaries

um sie zu bekommen.

Herunterladbares

Installation

  • Qt
    : Zielverzeichnis für MinGW: C:\MinGW
    : stell sicher, dass MinGW vorab installiert wurde. Falls Qt MinGW nicht installiert wird, kannst du den auomatischen MinGW-Installierer hier bei SourceForge herunterladen [http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=240780 . Wähl die folgenden Komponenten zum Installieren aus:
    :* MinGW Basiswerkzeug
    :* g++ Kompilierer
    :* MinGW Make
    : Alle Komponenten werden durch den Installierer heruntergeladen. Wenn das Herunterladen bei einem versagt, musst du wissen, dass SourceForge einen schlechten Spiegel hat; klick einfach auf "Retry" bis es funktioniert.
  • MSYS
    : Zielverzeichnis: C:\MSYS (Ich empfehle die Versionsnumber wegzulassen)
    : Postinstallationskonfiguration:
    :: Möchtest du mit der Postinstalltion fortfahren? [jn ] j (Do you wish to continue with the post install? [yn ] y)
    :: Hast du MinGW installiert [jn ] j (Do you have MinGW installed? [yn ] y)
    *:: Wie ist deine MinGW-Installation? c:/mingw
  • optional: TortoiseSVN (Windowsneustart erforderlich)

Runtergeladene Archive entpacken

In diesem How-to, ist das Entwicklungswurzelverzeichnis <font color=brown>Z:\dev</font>. Sein MSYS-Equivalent ist <font color=brown>/z/dev</font>. Egal, wo du es hier siehst, ändere sie zu deinem lokalen Pfad.

  • zlib -> <font color=brown>z:\dev</font>\zlib
  • libexpat -> <font color=brown>z:\dev</font>\expat (dem top-niveau Archivverzeichnis entnehmen)
  • exiv2 -> <font color=brown>z:\dev</font>\exiv2 (dem top-niveau Archivverzeichnis entnehmen)
  • Merkaartor -> <font color=brown>z:\dev</font>\merkaartor
  • optional: SVN binäre -> <font color=brown>z:\dev</font>\svn (kein Unterverzeichnis, tu die svn.exe hier direkt hinein)

Bau die Bibliotheken auf

Alle folgenden Zeilen in der Box sollen in die '''MSYS shell''' hineingetippt werden (du findest es in deinem Startmenü).

Build zlib:
cd <font color=brown>/z/dev</font>
cd zlib
./configure
make
mkdir include lib
cp z{lib,conf}.h include
cp libz.a lib
cd ..

Build libexpat:
cd expat
./configure
make
mkdir include
cp lib/expat{,_external}.h include
cp .libs/libexpat.a lib/libexpat.a
cd ..

Build exiv2:
cd exiv2
mypath=`pwd`/..
./configure --with-zlib=$mypath/zlib --with-expat=$mypath/expat --disable-shared
make
mkdir include include/exiv2 lib
cp src/*.h{,pp} include/exiv2
cp src/.libs/libexiv2.a lib
cd ..

Alle folgenden Zeilen in der Box sollen in die '''Qt command prompt''' hineingetippt werden (du findest es in deinem Startmenü).

Optional kannst du auch die letzte SVN-Quelle von Merkaartor herunterladen: (Das wird alle Quellendateien in das Merkaartorunterverzeichnis laden. Du solltest es vorsichtshalber umbenennen, wenn du schon eins hast.)
cd /d <font color=brown>z:\dev</font>
svn\svn co http://svn.openstreetmap.org/applications/editors/merkaartor/

Merkaartor bauen

Bearbeite die Datei src\Custom.pri in Merkaartors Bibliothek und füge den folgenden Inhalt bei:

  1. Dies reparierte einen Bug in einem älteren Qt (4.4.3) zusammen mit einer früheren MinGW's winbase.h.
  2. Ist in der aktuellen Version nicht mehr erforderlich.
  3. DEFINES += __INTERLOCKED_DECLARED
  1. Füge weitere Suchpfade für Bibliotheken bei und schliess Dateien ein.
    LIBS += -L$$PWD/../../exiv2/lib -L$$PWD/../../expat/lib -lexiv2 -lexpat
    INCLUDEPATH += $$PWD/../../exiv2/include
  2. Die Pfade sind auf unsere setup-Built zugeschnitten.
  3. -lexpat wurde in Merkaartors Makefile vergessen.
  4. -lexiv2 muss vorm-lexpat geschehen! Da das original Makefile das nicht tut
  5. fügen wir es in der vorgesehenen Reihenfolge nocheinmal hinzu.
  1. Unterstützung für Bilder mit geo-Tags einschalten, wir gehorchen allen Anforderungen.
    GEOIMAGE=1
  1. Füg hier weitere qmake-Options bei, wenn du das wünschst.
  2. Siehe Config.pri oder Merkaartor.pro für eine Referenz.

Und weiter noch in dem Qt-Befehlsprompt...

cd /d &lt;font color=brown&gt;z:\dev&lt;/font&gt;
cd merkaartor
qmake -r NODEBUG=1
make

Solltest du ein '''debug''' -Build brauchen, verzichte auf den Parameter "NODEBUG=1".

Kann der make Befehl nicht gefunden werden, kannst du statt dessen mingw32-make versuchen.

Bau jetzt in einem separaten Schritt die Übersetzungsdateien auf:

cd translations
make release
cd ..

Kopiere Abhängikeitsdateien

Kopier jetzt alle Merkaartor und Qt Übersetzungen, DLLs und die Binären dateien in das neue Verzeichnis:
mkdir output
copy "binaries\win32-g++\bin\merkaartor.exe" output
mkdir output\plugins
xcopy /s "binaries\win32-g++\bin\plugins" output\plugins
copy translations\*.qm output
mkdir output\translations
copy QTDIR\translations\qt_??.qm output\translations
copy QTDIR\translations\qt_??_??.qm output\translations
copy QTDIR\bin\mingwm10.dll output
(Wenn letztere Datei nicht existiert, such sie dort, wo du MinGW hineininstalliert hast, z.B. C:\MinGW\bin, und kopiere es dann in das angegebene Qt\bin Verzeichnis, da Qt-Werkzeuge dieses DLL auch brauchen.)
mkdir output\imageformats
copy QTDIR\plugins\imageformats\qico4.dll output\imageformats
copy QTDIR\plugins\imageformats\qtiff4.dll output\imageformats\qtif4.dll
copy QTDIR\plugins\imageformats\qsvg4.dll output\imageformats
copy QTDIR\plugins\imageformats\qgif4.dll output\imageformats
copy QTDIR\plugins\imageformats\qjpeg4.dll output\imageformats
Wenn du eine ausführbare '''release''' erstellt hast, benütz diese Dateien:
copy QTDIR\bin\QtWebKit4.dll output
copy QTDIR\bin\QtSvg4.dll output
copy QTDIR\bin\QtGui4.dll output
copy QTDIR\bin\QtNetwork4.dll output
copy QTDIR\bin\QtXml4.dll output
copy QTDIR\bin\QtCore4.dll output
Wenn du eine ausführbare '''debug''' erstellt hast, benütz diese Dateien:
copy QTDIR\bin\QtWebKitd4.dll output
copy QTDIR\bin\QtSvgd4.dll output
copy QTDIR\bin\QtGuid4.dll output
copy QTDIR\bin\QtNetworkd4.dll output
copy QTDIR\bin\QtXmld4.dll output
copy QTDIR\bin\QtCored4.dll output

Jetzt kannst du Merkaartor.exe im Verzeichnis Output ausführen.