These instructions need to be updated for Subsurface 4.6.2. Please look at the English version of this page

Licenza: GPLv2

È possibile ottenere i sorgenti della versione attualmente in sviluppo dal nostro repository git oppure scaricare Subsurface-4.2.tgz dal nostro sito.

Subsurface usa alcune librerie e framework open source. I più importanti sono libdivecomputer, Qt4 o Qt5, Marble ( libmarble), libxml2, libxslt, libsqlite3, e libzip.

Qui ci sono le istruzioni per compilare Subsurface su alcune distribuzioni Linux, per compilare usando Homebrew su Mac, e per cross-compilare per Windows. L’assenza di un gestore di paccketti nativo per Windows rende difficile compilare nativamente su Windows; abbiamo solo dei suggerimenti su come fare, nel file INSTALL incluso nei sorgenti.

Opzioni di compilazione

Le seguenti opzioni possono essere usate per qmake:

 -config debug        Crea una build di debug
 -config release      Crea una build per la release
		      Il default dipende dai parametri con cui Qt è stato compilato
 V=1                  Attiva verbosità
 LIBDCDEVEL=1         Cerca in ../libdivecomputer per libdivecomputer
 INCLUDEPATH+=xxx     Aggiunge xxx agli include path del compilatore
		      (passare il percorso attuale, senza -I)
 LIBS+=xxx            Aggiunge xxx ai flag del linker. -l e -L 
		      vengono riconosciuti.

Le opzioni INCLUDEPATH e LIBS sono utili per utilizzare librerie installate in posizioni non di default. Queste opzioni possono essere ripetute più volte o ricevere argomenti multipli separati da spazio. Per esempio:

  qmake LIBS+="-L$HOME/marble/lib -L$HOME/libdivecomputer/lib" 
	INCLUDEPATH+="$HOME/marble/include 
                        $HOME/libdivecomputer/include"

Compilare su Linux

Fedora

sudo yum install qt-devel marble-devel libzip-devel libxml2-devel 
         libxslt-devel libsqlite3x-devel libudev-devel 
         libtool autoconf libusb-devel qtwebkit-devel

Su distribuzioni derivate da Debian, è possibile installare le librerie richieste (se subsurface è già disponibile come pacchetto)

$ sudo apt-get build-dep subsurface

Se vuoi installare i pacchetti richiesti individualmente.

$ sudo apt-get install libqt4-dev qt4-qmake libxml2-dev 
         libxslt1-dev zlib1g-dev libzip-dev libmarble-dev 
         libsqlite3-dev libqtwebkit-dev libusb-1.0-0-dev 
         libtool autoconf libgit2-dev txt2html

Sfortunatamente le versioni di marble in Debian stable (e Ubuntu?) non hanno alcuni header che sono usati in Subsurface. Al momento usiamo un hack e li forniamo con il sorgente, ma questo potrebbe causare conflitti.

Sembra che in alcune versioni di Debian, ci sia un bug nelle dipendenze di libgit2-dev. Se si ottiene un messaggio strano sulla mancanza di libgit2 anche se il pacchetto è installato, provare ad installare anche libssh2-1-dev.

Per compilare libdivecomputer:

$ git clone git://git.libdivecomputer.org/libdivecomputer
$ cd libdivecomputer
$ git checkout master
$ autoreconf --install
$ ./configure --disable-shared
$ make
$ sudo make install

Per compilare Subsurface:

$ git clone git://subsurface-divelog.org/subsurface.git
$ cd subsurface
$ qmake # qmake-qt4 on some flavors of Linux
$ make
$ sudo make install     [optionally, add: prefix=/usr/local]

Nota: su fedora qmake si chiama qmake-qt4 o qmake-qt5

Compilare Subsurface su MacOS X

1) Installare Homebrew

$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"

2) Installare le dipendenze

$ brew install asciidoc libzip qt5 sqlite cmake libusb pkg-config 
 automake libtool

3) Rendere la versione brew di sqlite di default

$ brew link --force sqlite

4) Installare Marble

$ mkdir -p marble_dir/build
$ git clone git://anongit.kde.org/marble marble_dir/repo
$ cd marble_dir/build
$ /usr/local/opt/cmake/bin -DCMAKE_BUILD_TYPE=Release -DQTONLY=TRUE 
  -DCMAKE_PREFIX_PATH=/usr/local/opt/qt5/lib/cmake 
  -DCMAKE_INSTALL_PREFIX=/usr/local ../repo
$ cd src/lib/marble
$ make -j4
$ install_name_tool -id 
  /usr/local/lib/$(echo libmarblewidget.??.dylib) 
  libmarblewidget.dylib
$ cp -v *dylib /usr/local/lib/
$ mkdir -p /usr/local/include/marble
$ cp -v $(find ../../../../repo/src/lib -name '*.h') 
  /usr/local/include/marble/

5) Install Libdivecomputer

$ git clone git://git.libdivecomputer.org/libdivecomputer
$ cd libdivecomputer
$ autoreconf --install
$ ./configure --disable-shared
$ make
$ make install

6) Compilare Subsurface

$ git clone git://subsurface-divelog.org/subsurface.git
$ cd subsurface
$ qmake 
  INCLUDEPATH+="/usr/local/include /usr/local/opt/sqlite/include" 
  LIBS+="-L/usr/local/lib -L/usr/local/opt/sqlite/lib"
$ make
$ make install_mac_bundle

Dopo, Subsurface verrà installato in /Applications.

Un’altra opzione è quella di creare un file .dmg da essere distribuito:

$ make mac-create-dmg

NOTE: macdeployqt assume che i plugin si trovino “accanto” ai framework. I framework sono linkati da /usr/local/lib -- ma i plugin non sono in /usr/local/plugins. Il workaround più semplice è di creare un link simbolico da /usr/local/plugins a /usr/local/opt/qt5/plugins.

Cross-compilare Subsurface su Linux per Windows

Subsurface compila con MinGW -- le build ufficiali sono fatte cross compilando su Linux (al momento Fedora 20). Uno script di shell che si occupa di questo (più il file .nsi per creare l’installer con makensis) sono inclusi nella directory packaging/windows.

Il modo migliore per compilare libdivecomputer sembra essere

$ mkdir -p ~/src
$ git clone git://git.libdivecomputer.org/libdivecomputer ~/src/libdivecomputer
$ cd ~/src/libdivecomputer
$ git checkout master
$ mingw32-configure --disable-shared
$ mingw32-make
$ sudo mingw32-make install

Per compilare Marble usare:

$ mkdir -p ~/src/marble/build
$ git clone -b KDE/4.13 git://anongit.kde.org/marble ~/src/marble/sources
$ cd ~/src/marble/build
$ mingw32-cmake -DCMAKE_BUILD_TYPE=Debug -DQTONLY=TRUE ../sources
 - oppure -
$ mingw32-cmake -DCMAKE_BUILD_TYPE=Release -DQTONLY=TRUE ../sources
$ mingw32-make -j4
$ mingw32-make install

Per compilare subsurface:

$ mkdir -p ~/src/subsurface
$ git clone git://subsurface-divelog.org/subsurface.git ~/src/subsurface
$ cd ~/src/subsurface
$ packaging/windows/mingw-make.sh
$ packaging/windows/mingw-make.sh install
$ packaging/windows/mingw-make.sh installer

L’ultimo passo assume che ci sia un link da packaging/windows/dll alla directory corretta in MinGW. Sulla mia macchina questo è /usr/i686-w64-mingw32/sys-root/mingw/bin. Similarmente, i percorsi usati in packaging/windows/mingw-make.sh potrebbero aver bisogno di essere modificati in base ai percorsi usati dalla propria distribuzione.

Subsurface Companion App per Android

Questa app è disponibile nel Google Play Store. È coperta da licenza GPLv2 e i sorgenti si trovano in git://subsurface-divelog.org/subsurface-companion.git