ToolMap-dev-doc

ToolMap 2017

compilation des librairies (UNIX / OSX / Mingw)

wxWidgets

Version 3.1.0 téléchargée depuis le site http://wxwidgets.org

    mkdir build64
    ../configure
    --prefix=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBWX
    --enable-unicode --disable-shared
    --enable-mediactrl=no
    --with-macosx-version-min=10.9
    make -j8; make install

wxPDFDocument

Version 0.9.5 depuis https://github.com/utelle/wxpdfdoc/releases. La version 0.9.6, plus récente, n’a pas le même système de compilation.

    ./configure
    --prefix=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBPDF
    --with-wx-prefix=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBWX
    --enable-unicode
    --disable-shared

Utiliser les mêmes options que pour la compilation de wxWidgets !

il est également possible de compiler la version 0.9.7. Avant de pouvoir utiliser la même commande que ci-dessus, il est nécessaire de rajouter cette étape (fonctionne sous OSX Mojave) :

    brew install autoconf automake libtool
    autoreconf

Librairies spatiales (PROJ, GDAL, GEOS)

  1. PROJ : version 4.9.3

     mkdir build
     ../configure
     --prefix=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBGIS
    

    Pour Mojave et PROJ version 6.0.0, il est nécessaire d’installer pkg-config :

     brew install pkg-config
    
  2. GEOS : version 3.6.1

     mkdir build
     ../configure
     --prefix=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBGIS
    
  3. GDAL : version 2.1.3

     ./configure
     --prefix=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBGIS
     --with-geos=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBGIS/bin/geos-config
     --with-static-proj4=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBGIS
     --with-sqlite3=yes
     --with-python=no
     --with-pg=no
     --with-grass=no
     --with-jasper=no
     --with-jpeg=internal
     --with-png=internal
    

MySQL - MariaDB

Essai avec la version 10.1.23 de MariaDB

    cmake .
    -DCMAKE_INSTALL_PREFIX=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBSQL
    -DPLUGIN_TOKUDB=NO
    -DWITH_EMBEDDED_SERVER=1
    -DDISABLE_SHARED=ON

Pour MySQL (5.7.18), voila la commande employée :

    cmake .
    -DCMAKE_INSTALL_PREFIX=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBMYSQL
    -DWITH_UNIT_TESTS:BOOL=OFF
    -DFEATURE_SET:STRING=small
    -DDOWNLOAD_BOOST=1
    -DWITH_BOOST=/Users/lucien/DATA/PROGRAMATION/_LIB/boost

La partie concernant boost, permet de télécharger la version nécessaire de boost et de l’installer.

Compilation des librairies (Windows - Visual Studio)

Version utilisée : Visual Studio 2017

Lancer la commande vcvars64.bat et executez toutes les commandes dans ce terminal.

wxWidgets

Version 3.1.0 téléchargée depuis le site http://wxwidgets.org

naviguer jusqu’au répertoire wxWidgets/build/msv lancez ensuite la commande suivante :

    nmake -f makefile.vc BUILD=debug UNICODE=1 MONOLITHIC=1
    nmake -f makefile.vc BUILD=release UNICODE=1 MONOLITHIC=1

copier les fichiers suivants :

  1. lib\vc_lib\mswu\wx\setup.h dans include\wx

  2. lib\vc_lib\mswu\wx\msw\rcdefs.hdans include\wx\msw (conserver l’ancien en changeant son extension)

wxPDFDocument

Version 0.9.5 depuis https://github.com/utelle/wxpdfdoc/releases.

depuis le répertoire wxPDFDocument/build

    nmake -f makefile.vc 
    WX_DIR=P:\LIB\wxWidgets-3.1.0 
    WX_VERSION=31 
    WX_MONOLITHIC=1 
    WX_DEBUG=1

puis la même commande avec WX_DEBUG=0

Libcurl

Version 7.55.1 depuis https://curl.haxx.se/download.html

depuis le répertoire curl-7.55.1/winbuild:

    nmake -f Makefile.vc mode=dll VC=14 MACHINE=x64 DEBUG=no
    mkdir P:\programmation\LIB\_LIBCURL
    xcopy ..\builds\libcurl-vc14-x64-release-dll-ipv6-sspi-winssl\*.* p:\programmation\LIB\_LIBCURL /E /Y

Librairies spatiales (PROJ, GDAL, GEOS)

  1. PROJ : version 4.9.3

    nmake -f makefile.vc INSTDIR=P:\programmation\LIB\_LIBGIS
    nmake -f makefile.vc INSTDIR=P:\programmation\LIB\_LIBGIS install-all
    
  2. GEOS : version 3.6.1

    Dans le répertoire de GEOS (geos-3.4.2) on lance la commande autogen.bat

    Pour l’instant, GEOS ne reconnait pas automatiquement le compilateur Visual Studio 2017. Il faut donc rajouter les lignes suivantes dans le fichier nmake.opt aux alentours de la ligne 150, juste avant le !ELSE

     !ELSEIF "$(_NMAKE_VER)" == "14.10.25019.0"
     GEOS_MSVC = 15.0
     GEOS_MSC = 1910
    

    puis lancer la compilation avec

     nmake -f makefile.vc WIN64=YES
    

    Une version debug de GEOS peut être obtenue en rajoutant la commande suivante : BUILD_DEBUG=YES

  3. GDAL version 2.2.0 (avril 2017)

    Les différentes valeurs peuvent être éditées dans le fichier nmake.optou alors passées en ligne de commande.

     nmake -f makefile.vc MSVC_VER=1910 
     WIN64=1
     GDAL_HOME=P:\programmation\LIB\_LIBGIS
     GEOS_DIR=P:/programmation/LIB/geos-3.6.1
     GEOS_CFLAGS="-I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS" 
     GEOS_LIB="$(GEOS_DIR)/src/geos_c_i.lib"
     CURL_DIR=P:\programmation\LIB\_LIBCURL
     CURL_INC="-I$(CURL_DIR)/include"
     CURL_LIB="$(CURL_DIR)/lib/libcurl.lib wsock32.lib wldap32.lib winmm.lib"
    

puis la même commande suivie de install puis encore une fois suivie de devinstall

Attention à bien respecter le sens des séparateurs de répertoire, comme dans la commande ci-dessus. GDAL_HOME doit être défini avec des “\” et le reste avec des “/”

MySQL

Version 5.6.36. Visiblement il y a une petite erreur de compilation étant donné que l’on n’utilise pas le moteur PARTITION. Il faut donc modifier le fichier sql_table.cc aux alentours de la ligne 2024 afin d’ajouter les deux lignes débutant avec des +

    ++++ #ifdef WITH_PARTITION_STORAGE_ENGINE
    if (old_part_info)
    {
            lpt->table->file->set_part_info(old_part_info, false);
    }
    +++++ #endif

puis on peut lancer la compilation et l’installation avec :

    mkdir bld
    cd bld
    cmake .. -G"Visual Studio 15 2017 Win64"
    -DCMAKE_INSTALL_PREFIX=P:\programmation\LIB\_LIBMYSQL
    -DWITH_UNIT_TESTS:BOOL=OFF
    -DFEATURE_SET:STRING=small
    cmake --build . --config relwithdebinfo
    cmake --build . --config relwithdebinfo --target INSTALL

LibCURL

Version 7.54.0

            cd winbuild
            nmake /f Makefile.vc mode=dll VC=14 DEBUG=NO MACHINE=x64

Copier manuellement les répertoires bin, include et lib qui ont été produits dans LIB/curl/builds/libcurl-vc..... et les placer dans le répertoire LIB/_LIBCURL

Compilation de ToolMap

  1. La structure proposée pour ToolMap est la suivante :

     ├── bin
     ├── code
     │   ├── <clone ToolMap repository here>
     ├── doc
     │   ├── dev
     │   │   └── <clone ToolMap Dev Doc repository here>
     │   └── user
     │       └── <clone ToolMap User Doc repository here>
     └── unit_testing
    
  2. Récupérer le code source de ToolMap avec la commande suivante git clone git@github.com:terranum-ch/ToolMap.git code

Unix - OSX

Création du projet

Le but est de construire les exécutables à l’extérieur de l’arbre du code. Depuis le répertoire bin lancez la commande suivante :

    cmake
    -DSEARCH_GIS_LIB_PATH=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBGIS
    -DMYSQL_MAIN_DIR=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBSQL
    -DSEARCH_WXPDFDOCUMENT_PATH=/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBPDF
    -DSEARCH_GEOS=1
    -DSEARCH_GDAL=1
    ../code

Compilation

    make -j<nombre de coeurs>

Sous OSX, la commande suivante est également nécessaire afin d’installer les librairies dans le bundle et de corriger les liens de ces dernières

    make install

Test unitaires

pour avoir le support pour les tests unitaires il faut rajouter la commande ci-dessous avant les “..” lors de la phase de création du projet :

    -DUSE_UNITTEST=1
    -DUNIT_TESTING_PATH=/Users/lucien/DATA/PRJ/TOOLMAP2/unit_testing
    -DCXXTEST_INCLUDE_DIR=/Users/lucien/DATA/PROGRAMATION/_LIB/cxxtest-4.4
    -DCXXTEST_PYTHON_TESTGEN_EXECUTABLE=/Users/lucien/DATA/PROGRAMATION/_LIB/cxxtest-4.4/bin/cxxtestgen

Les tests peuvent être lancés avec la commande

    ctest -V

Programme d’installation

Le programme d’installation pour OSX (fichier DMG) peut être créé avec la commande suivante :

    cpack -B /chemin/destination/programme/installation

TODO: Le programme d’installation pour Linux n’est pas encore opérationnel, mais il devrait s’agir d’une image AppImage fonctionnant sous la majorité des Linux.

Windows - Visual Studio 2017

Création du projet

Depuis le répertoire bin lancez la commande suivante :

    set WXWIN=P:\programmation\LIB\wxWidgets-3.1.0
    cmake
    -G"Visual Studio 15 2017 Win64"
    -DSEARCH_GIS_LIB_PATH=P:\programmation\LIB\_LIBGIS
    -DSEARCH_GEOS_PATH=P:\programmation\LIB\geos-3.6.1
    -DSEARCH_CURL_PATH=P:\programmation\LIB\_LIBCURL
    -DMYSQL_MAIN_DIR=P:\programmation\LIB\_LIBMYSQL
    -DSEARCH_WXPDFDOCUMENT_PATH=P:\programmation\LIB\wxpdfdoc-0.9.5
    -DSEARCH_GEOS=1
    -DSEARCH_GDAL=1
    ..\code

Compilation

Pour ne construire le projet ToolMap ainsi que les tests il est possible de lancer la commande :

    cmake --build . --config relwithdebinfo

Pour ne pas construire les tests :

    cmake --build . --target ToolMap --config relwithdebinfo

La compilation s’effectue par défaut avec tous les coeurs disponibles.

Test unitaires

Pour activer le support pour les tests unitaires, il faut rajouter la commande ci-dessous avant les “..” lors de la création du projet :

    -DUSE_UNITTEST=1
    -DUNIT_TESTING_PATH=P:\programmation\ToolMap\test_data
    -DCXXTEST_INCLUDE_DIR=P:\programmation\LIB\cxxtest-4.3
    -DCXXTEST_PYTHON_TESTGEN_EXECUTABLE=P:\programmation\LIB\cxxtest-4.3\bin\cxxtestgen

Alternativement, si UNIT_TESTING_PATH n’est pas renseigné, les fichiers tests sont automatiquement téléchargés.

Pour lancer les tests il faut lancer la commande suivante dans le répertoire bin/test:

    ctest -V

Programme d’installation

Il est nécessaire d’installer le programme NSIS (http://nsis.sourceforge.net/Main_Page) puis le programme d’installation pour Windows peut être créé avec la commande suivante:

    cpack -C relwithdebinfo

Pour faire un fichier ZIP (utile pour installer sans les permissions)

    cpack -G ZIP -C relwithdebinfo

Copie des fichiers PCH

TODO: Afin de pouvoir diagnostiquer les éventuels crash, il est nécessaire de conserver les fichiers PCH créés lors de la compilation

Windows - CLion

Il est possible de reprendre les options mentionnées ci-dessus, cepandant il faut noter que :

cmake settings

VSCODE

  1. Installer le plugin CMake ainsi que CMake Tools

  2. Glisser - déposer le répertoire contenant le code dans visualstudio code.

  3. Editer le fichier de préférence (paramètres de l’espace de travail) et rajoutez ces options :

     "cmake.sourceDirectory": "${workspaceRoot}/build",
     "cmake.buildDirectory": "${workspaceRoot}/../bin",
     "cmake.generator": "Unix Makefiles",
     "cmake.configureArgs": [
             "SEARCH_GIS_LIB_PATH":"Users/lucien/DATA/PROGRAMATION/_LIB/_LIBGIS",
             "MYSQL_MAIN_DIR": "/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBSQL",
             "SEARCH_WXPDFDOCUMENT_PATH": "/Users/lucien/DATA/PROGRAMATION/_LIB/_LIBPDF",
             "DSEARCH_GEOS":  "1",
             "DSEARCH_GDAL":  "1"
         ]
    
  4. Lancez la compilation avec F7