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

Licencja: GPLv2

Możesz pobrać źródła najnowszej wersji rozwojowej z naszego repozytorium git lub ściągnąć Subsurface-4.4.2.tgz z naszej strony.

Subsurface bazuje na kilku bibliotekach i frameworkach (open source). Najważniejsze to libdivecomputer, Qt, Marble (a dokłądnie libmarblewidget), libxml2, libxslt, libsqlite3 oraz libzip.

Poniżej znajdziesz instrukcje do budowania Subsurface w kilka popularnych dystrybucjach Linuksa, z użyciem Homebrew dla Mac oraz budowania binarek dla Windows (w systemie Linux).

Brak systemu zarządzania pakietami w Windows sprawia, że natywne budowanie w tym systemie jest naprawdę uciążliwe. Kilka podpowiedzi jak to zrobić znajdziesz w pliku INSTALL w źródłach.

Opcje budowania dla Subsurface

qmake rozpoznaje następujące opcje:

 -config debug        Tworzy wersję debugową
 -config release      Tworzy wesję release'ową
		      Wersja domyślana zależy od tego, jak zostało zbudowane Qt
 V=1                  Wyłącza "cichy" tryb budowania
 LIBDCDEVEL=1         Szuka libdivecomputer w ../libdivecomputer  
 LIBMARBLEDEVEL=path  Szuka biblioteki marble w podanej ścieżce
 SPECIAL_MARBLE_PREFIX=1 Używa libssrfmarblewidget jako nazwy bilioteki
                        jest to wymagane przy budowaniu z naszą zmodyfikowaną wersją marble
 LIBGIT2DEVEL=path      Szuka biblioteki libgit2 w podanaj ścieżce

 INCLUDEPATH+=xxx     dodaje xxx do ścieżek kompilacji
		      (podaj faktyczną ścieżkę, bez -I)
 LIBS+=xxx            dodaje xxx do flag linklera. Rozpoznawane jest -l oraz -L 

INCLUDEPATH i LIBS przydają się, by system buildowy poinformować o niestandardowych położeniach bibliotek (takich jak np. Marble). opcji tych można używać wielokrotnie lub podać wiele argumentów w jednej linii, oddzielonych spacją.na przykład:

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

Budowanie Subsurface w systemie Linux

Musisz zainstalować kilka pakietów od których zależy Subsurface. W dystrybucji Fedora można to zrobić poprzez:

sudo yum install git gcc-c++ make autoconf automake libtool cmake 
        libzip-devel libxml2-devel libxslt-devel libsqlite3x-devel 
        libgit2-devel libudev-devel libusbx-devel 
        qt5-qtbase-devel qt5-qtdeclarative-devel qt5-qtscript-devel 
        qt5-qtwebkit-devel qt5-qtsvg-devel qt5-qttools-devel

W OpenSUSE nazwy pakietów sa niestety inne:

sudo zypper install git gcc-c++ make autoconf automake libtool cmake libzip-devel 
        libxml2-devel libxslt-devel sqlite3-devel libgit2-devel libusb-1_0-devel 
        libqt5-linguist-devel libqt5-qttools-devel libQt5WebKitWidgets-devel 
        libqt5-qtbase-devel libQt5WebKit5-devel libqt5-qtsvg-devel 
        libqt5-qtscript-devel libqt5-qtdeclarative-devel

W Debianie Jessie:

sudo apt-get install git g++ make autoconf libtool cmake pkg-config 
        libxml2-dev libxslt1-dev libzip-dev libsqlite3-dev 
        libusb-1.0-0-dev libgit2-dev 
        qt5-default qt5-qmake qtchooser qttools5-dev-tools libqt5svg5-dev 
        libqt5webkit5-dev libqt5qml5 libqt5quick5 libqt5declarative5 
        qtscript5-dev

W dystrybucjach opartych na Debianie możesz zainstalować wszystkie wymagane pakiety przez:

sudo apt-get build-dep subsurface

jednak na wielu systemach zainstaluje to zależności dla oficjalnych pakietów
(często są to nieaktualne wersje). Warto więc uważać, bo to nie zawsze może zadziałać.

Wydaje się, że w niektóre wersjach Debiana brakuje zależności przy instalowaniu libgit2-dev.  Jeśli dostajesz tajemnicze błędy o braku libgit2 pomimo, że jest zainstalowany, sþróbuj zainstalować także libssh2-1-dev.
Najpierw musisz zbudować nasza wersję libdivecomputer:

$ mkdir ~/src # o ie jeszcze nie masz tego katalogu
$ cd ~/src
$ git clone -b Subsurface-4.4 git://subsurface-divelog.org/libdc libdivecomputer
       # albo -b Subsurface-testing aby pobrać wersję testową - uwaga, ta gałąź może zostać przebazowana, więc to może nie zadziałać
       #                          
       # -> Jeśli nie budujesz wersji oficjalnej Subsurface a tę na gałęzi master
       #    zapewne muszsz użyć wersji z gałęzi Subsurface-testing

$ cd libdivecomputer
$ autoreconf --install
$ ./configure --disable-shared
$ make
$ sudo make install

Następnie skompiluj nasza wersję libmarblewidget

$ cd ~/src
$ git clone -b Subsurface-4.4 git://subsurface-divelog.org/marble marble-source
       # albo -b Subsurface-testing by pobrać najnowszą wersję - 
       #uwaga, ta gałąź może zostać przebazowana, więc to może nie zadziałać

$ mkdir marble-build
$ cd marble-build
$ cmake -DQTONLY=ON -DQT5BUILD=ON 
        -DBUILD_MARBLE_APPS=OFF -DBUILD_MARBLE_EXAMPLES=OFF 
        -DBUILD_MARBLE_TESTS=OFF -DBUILD_MARBLE_TOOLS=OFF 
        -DBUILD_TESTING=OFF -DWITH_DESIGNER_PLUGIN=OFF 
        -DBUILD_WITH_DBUS=OFF ../marble-source
$ make # 

Teraz możesz zbudować Subsurface:

$ cd ~/src
$ git clone git://subsurface-divelog.org/subsurface.git
$ cd subsurface
$ git checkout v4.4.2   # pobiera najnowsze wydanie
                         # pomiń ten krok jeśli chcesz zbudować
                         # najnowszą wersję testową
$ qmake SPECIAL_MARBLE_PREFIX=1
# W Fedora/OpenSUSE  potrzebujesz qmake-qt5
$ make
$ sudo make install    # [opcjonalnie dodaj: prefix=/usr/local]

W systemach Fedora i OpenSUSE musisz się upewnić, że /usr/local/lib jest używane do poszukiwana bibliotek (w tej lokalizacji zastały zainstalowane libdivecomputer i libmarblewidget w poprzednich krokach, żeby uniknąć konfliktu z pakietami systemowymi). Musisz więc wykonać:

$ echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/local.conf
$ sudo ldconfig

Teraz możesz uruchomić wybudowana przez  siebie wersję Subsurface:

$ ./subsurface

Budowanie Subsurface w MacOS X

0) Musisz mieć zainstalowane XCode. Za pierwszym razem (i możliwe, że tez po aktualizacji OSX) musisz wykonać

$ xcode-select --install

1) Zainstaluj Homebrew

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2) Zainstaluj wymagane biblioteki

$brew install asciidoc libzip sqlite cmake libusb pkg-config libgit2

3) ustaw domyślną wersję sqlite na tę z brew

$ brew link --force sqlite

4) Pobierz Qt z  http://www.qt.io/download-open-source/

W instalatorze wybierz katalog docelowy (np, /home/username/Qt5), w “Select components” wybierz najnowszą wersję i upewnij się że instalujesz też “Source Components”.

Zbuduj Qt (trwa to długo)

$ cd ~/Qt5/5.4/Src/
$ ./configure -prefix /usr/local -opensource
$ make -j4
$ make install

5) Zainstaluj zmodyfikowana wersję  Marble

$ cd ~/src
$ git clone -b Subsurface-4.4 git://subsurface-divelog.org/marble marble-source
$ cd marble-source
$ mkdir marble-build
$ cd marble-build
$ cmake -DCMAKE_BUILD_TYPE=Debug -DQTONLY=TRUE 
        -DQT5BUILD=ON -DCMAKE_INSTALL_PREFIX=/usr/local ../../marble-source
$ cd src/lib/marble
$ make -j4
$ make install

5) Zainstaluj libdivecomputer

$ brew install automake libtool
$ cd ~/src
$ git clone -b Subsurface-4.4 git://subsurface-divelog.org/libdc libdivecomputer
       # -> jełśi nie budujesz oficjalnego wydania, może być konieczne
       #    użycie gałęzi Subsurface-testing
$ cd libdivecomputer
$ autoreconf --install
$ ./configure --disable-shared
$ make -j4
$ make install

6) Skompiluj Subsurface

$ cd ~/src
$ git clone git://subsurface-divelog.org/subsurface.git
$ cd subsurface
$ qmake SPECIAL_MARBLE_PREFIX=1 INCLUDEPATH+=/usr/local/include 
        LIBS+=-L/usr/local/lib 
        LIBS+='-L/usr/local/Cellar/libzip/0.11.2/lib -lzip -lz' 
        INCLUDEPATH+=/usr/local/Cellar/libzip/0.11.2/include V=1 
        LIBMARBLEDEVEL=../marble-source/marble-build/
$ make -j4
$ make install_mac_bundle

Po wykonaniu tego wszystkiego Subsurface będzie zainstalowane w  /Applications.

można tez zbudować pakiet  .dmg do dalszej dystrybucji:

$ qmake
$ make
$ make mac-create-dmg

 

Aplikacja pomocnicza (Subsurface Companion App) dla Androida

Aplikację można pobrać z Google Play. Jest ona dystrybuowana na licencji GPLv2 a jej źródła dostępne są na git://subsurface-divelog.org/subsurface-companion.git