Skip to content

Compiling

Alexander Barthel edited this page Aug 26, 2019 · 6 revisions

Compile Marble

Clone Marble using the lnm/1.1 branch from my repository clone here: https://github.com/albar965/marble/tree/lnm/1.1

All examples below are for release builds. Adapt the paths according to you file structure and used Qt version.

The Marble installation process is terribly broken for Windows and even more for macOS. You have to copy the include files and libraries manually.

Linux

cmake -DCMAKE_BUILD_TYPE=Release -DSTATIC_BUILD=TRUE -DQTONLY=TRUE -DBUILD_MARBLE_EXAMPLES=NO -DBUILD_INHIBIT_SCREENSAVER_PLUGIN=NO -DBUILD_MARBLE_APPS=NO -DBUILD_MARBLE_EXAMPLES=NO -DBUILD_MARBLE_TESTS=NO -DBUILD_MARBLE_TOOLS=NO -DBUILD_TESTING=NO -DBUILD_WITH_DBUS=NO -DMARBLE_EMPTY_MAPTHEME=YES -DMOBILE=NO -DWITH_DESIGNER_PLUGIN=NO -DWITH_Phonon=NO -DWITH_Qt5Location=NO -DWITH_Qt5Positioning=NO -DWITH_Qt5SerialPort=NO -DWITH_ZLIB=NO -DWITH_libgps=NO -DWITH_libshp=NO -DWITH_libwlocate=NO -DCMAKE_INSTALL_PREFIX=~/Programme/Marble-release -DEXEC_INSTALL_PREFIX=~/Programme/Marble-release -DCMAKE_PREFIX_PATH=$HOME/Qt/5.9.3/gcc_64 ../marble/

Then make -j2 and make install.

macOS

cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MARBLE_EXAMPLES=NO -DBUILD_INHIBIT_SCREENSAVER_PLUGIN=NO -DBUILD_MARBLE_APPS=NO -DBUILD_MARBLE_EXAMPLES=NO -DBUILD_MARBLE_TESTS=NO -DBUILD_MARBLE_TOOLS=NO -DBUILD_TESTING=NO -DBUILD_WITH_DBUS=NO -DMARBLE_EMPTY_MAPTHEME=YES -DMOBILE=NO -DWITH_DESIGNER_PLUGIN=NO -DWITH_Phonon=NO -DWITH_Qt5Location=NO -DWITH_Qt5Positioning=NO -DWITH_Qt5SerialPort=NO -DWITH_ZLIB=NO -DWITH_libgps=NO -DWITH_libshp=NO -DWITH_libwlocate=NO -DCMAKE_PREFIX_PATH=$HOME/Qt/5.9.3/clang_64 -DCMAKE_INSTALL_PREFIX=~/Programme/Marble-release -DEXEC_INSTALL_PREFIX=~/Programme/Marble-release ../marble/

Then make -j2 and make install.

Windows

cd C:\Projekte\build-marble-release
set PATH=%PATH%;C:\Qt\5.9.5\mingw53_32\bin;C:\Qt\Tools\mingw530_32\bin
cmake -Wno-dev -G "MinGW Makefiles" -DQTONLY=TRUE -DQT5BUILD=TRUE -DWITH_quazip=FALSE -DWITH_libshp=FALSE -DWITH_libgps=FALSE -DWITH_libwlocate=FALSE -DWITH_QtLocation=FALSE -DWITH_liblocation=FALSE -DCMAKE_INSTALL_PREFIX="C:\Projekte\Marble-release" -DCMAKE_BUILD_TYPE=Release ..\marble
mingw32-make -j2
mingw32-make install

Copy Files

Examples according to paths above. Adjust as needed.

Windows

Copy all header files (*.h) from C:\Projekte\marble\src\lib\astro and C:\Projekte\marble\src\lib\marble including all files the sub-directories to C:\Projekte\Marble-release\include\astro and C:\Projekte\Marble-release\include\marble.

You have to flatten the directory hierarchy. Do not copy the sub-directory structure.

Furthermore, copy C:\Projekte\build-marble-release\src\lib\astro\astrolib_export.h and C:\Projekte\build-marble-release\src\lib\marble\marble_export.h to C:\Projekte\Marble-release\include\astro and C:\Projekte\Marble-release\include\marble respectively.

macOS

Use the shell script below to finalize the installation. Adjust paths and debug/release as needed.

#!/bin/bash

mkdir ~/Programme/Marble-debug/include
mkdir ~/Programme/Marble-debug/include/astro
mkdir ~/Programme/Marble-debug/include/marble
mkdir ~/Programme/Marble-debug/lib
mkdir ~/Programme/Marble-debug/lib/plugins

for i in `find  ~/Projekte/marble/src/lib/astro -name *.h` ; do cp -av $i ~/Programme/Marble-debug/include/astro ;done
for i in `find  ~/Projekte/build-marble-debug/src/lib/astro -name *.h` ; do cp -av $i ~/Programme/Marble-debug/include/astro ;done
for i in `find  ~/Projekte/marble/src/lib/marble -name *.h` ; do cp -v $i ~/Programme/Marble-debug/include/marble ;done
for i in `find  ~/Projekte/build-marble-debug/src/lib/marble -name *.h` ; do cp -av $i ~/Programme/Marble-debug/include/marble ;done
for i in `find  ~/Projekte/build-marble-debug/src/plugins -name *.so` ; do cp -av $i ~/Programme/Marble-debug/lib/plugins/ ;done
for i in `find  ~/Projekte/build-marble-debug/src/lib/marble -name *.dylib` ; do cp -av $i ~/Programme/Marble-debug/lib/ ;done

Note:

The information below is not up to date. Refer to the *.pro and BUILD.txt files for more information on environment variables used to configure the build process.

The actual build process did not change.


Compile the atools Library

Qt development packages of Core, Widgets, XML and SQL are needed with minimum version 5.6. GIT command line tools are required.

You need to install the FSX/P3D Simconnect libraries for the Windows build.

Common

Windows

  • Import atools into the Qt Creator workspace.
  • Configure the project and enable shadow build for release or debug versions.
  • Clone atools from GIT to e.g.: C:\Projects\atools
  • Use ../build-%{CurrentProject:Name}-%{CurrentBuild:Type} for Default build directory in the Qt Creator options dialog.
  • For atools use the build directory of e.g.: C:\Projects\build-atools-release
  • Adapt the QT_BIN, GIT_BIN, SIMCONNECT, INCLUDEPATH and LIBS variables in atools.pro.
  • Set the build kit for atools and littlenavmap to MinGW 32bit.
  • Run qmake from Qt Creator
  • Build

Do not use the default shadow build directory names, this will break project dependencies.

The atools can be built using the mingw environment only.

Linux / macOS

Install Qt development packages. Version at least 5.6.

Create the build directories on the same level as the source directory atools.

To build the release version:

mkdir build-atools-release
cd build-atools-release
qmake ../atools/atools.pro CONFIG+=release
make

To build the debug version:

mkdir build-atools-debug
cd build-atools-debug
qmake ../atools/atools.pro CONFIG+=debug
make

Compile the littlenavmap Application

This depends on the atools library. Make sure you installed, configured and compiled all necessary tools as described in https://github.com/albar965/atools/blob/master/BUILD.txt. See the needed setup for Qt Creator there.

Qt development packages of Core, Widgets, XML and SQL are needed with minimum version 5.6. GIT command line tools are required. The marble widget is needed (see https://github.com/albar965/littlenavmap/wiki/Compiling#compile-marble).

Get Marble from my repository which contains a few needed improvements:

https://github.com/albar965/marble.git

Build an install it according to the included instructions here https://github.com/albar965/littlenavmap/wiki/Compiling#compile-marble . Use branch lnm/1.1 for the Marble build.

Windows

  • Get Win32 OpenSSL v1.0.1u from https://slproweb.com/products/Win32OpenSSL.html and install it.
  • Configure the projects and enable shadow build for release or debug versions.
  • Clone littlenavmap from GIT to e.g.: C:\Projects\littlenavmap. Use the same base directory as for atools.
  • For littlenavmap use the build directory of e.g.: C:\Projects\build-littlenavmap-release
  • Adapt the QT_BIN, GIT_BIN, SIMCONNECT and other variables in littlenavmap.pro. You should use the same values as for atools.
  • Set the build kit for atools and littlenavmap to MinGW 32bit.
  • Set a dependency to atools in Project Settings for littlenavmap.
  • Run qmake from Qt Creator for all projects
  • Build all projects from Qt Creator

Do not use the default shadow build directory names, this will break project dependencies.

Linux / macOS

Install Qt development packages. Version at least 5.6.

Build atools according to instructions in BUILD.txt.

Create all build directories on the same level as the source directories atools and littlenavmap.

To build the release version:

  • mkdir build-littlenavmap-release
  • cd build-littlenavmap-release
  • qmake ../littlenavmap/littlenavmap.pro CONFIG+=release
  • make

To build the debug version:

  • mkdir build-littlenavmap-debug
  • cd build-littlenavmap-debug
  • qmake ../littlenavmap/littlenavmap.pro CONFIG+=debug
  • make

Branches / Project Dependencies

Little Navmap has to be built using the mingw environment as Marble compiles only on the same.

Make sure to use the correct branches to avoid breaking dependencies. The branch master is the unstable development branch but all software should compile there.

For releases check the release/MAJOR.MINOR branches to get the correct dependencies. The atools branch is usually one MAJOR number ahead.

So Little Navmap branch release/1.2 should work well with atools release/2.2 for example.

You can’t perform that action at this time.