diff --git a/CMakeLists.txt b/CMakeLists.txt
index 321e4234337cb57e26796eec63665c9d98ce9aec..a8b6459c1d00006343c4e5f431aeacb81b475628 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,84 +3,26 @@
 # Created: 05/06/2015
 
 # Global parameters
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
 PROJECT(xtpcpp CXX)
 
 
+# Add folder where are supportive functions
+set(CMAKE_UTILS_PATH ${CMAKE_SOURCE_DIR}/CMakeStuff)
+set(CMAKE_TOOLCHAINS_PATH ${CMAKE_UTILS_PATH}/toolchains)
+set(CMAKE_MODULE_PATH ${CMAKE_UTILS_PATH}/modules)
+
+# Include the system's uname that fills in SYSTEM_UNAME_S.
+# Sets WIN64 if SYSTEM_UNAME_S is "^.*MING64.*"
+include(${CMAKE_UTILS_PATH}/systemUname.cmake)
+
+# Include the various colors we want to use in the output
+include(${CMAKE_UTILS_PATH}/outputColors.cmake)
+
 set(CMAKE_COLOR_MAKEFILE ON)
 set(CMAKE_VERBOSE_MAKEFILE ON)
 
-
-if (MXE)
-    #x86_64-w64-mingw32.shared-cmake -DCMAKE_BUILD_TYPE=Release -DMXE=1 ..
-    MESSAGE("MXE (M cross environment) https://mxe.cc/")
-
-
-    
-    set (QCustomPlot_FOUND TRUE)
-    set (QCustomPlot_INCLUDES "/home/langella/developpement/git/qcustomplot")
-    set (QCustomPlot_LIBRARIES "/home/langella/developpement/git/qcustomplot/wbuild/libqcustomplot.dll")
-
-    
-    #sudo apt install libc6-dev-i386
-       # QUAZIP_INCLUDE_DIR         - Path to QuaZip include dir
-    set (QUAZIP_INCLUDE_DIR "/home/langella/developpement/git/quazip")
-    # QUAZIP_INCLUDE_DIRS        - Path to QuaZip and zlib include dir (combined from QUAZIP_INCLUDE_DIR + ZLIB_INCLUDE_DIR)
-    # QUAZIP_LIBRARIES           - List of QuaZip libraries
-    set (QUAZIP_QT5_LIBRARIES "/home/langella/developpement/git/quazip/wbuild/libquazip5.dll")
-    set (QUAZIP_LIBRARIES "/home/langella/developpement/git/quazip/wbuild/libquazip5.dll")
-    # QUAZIP_ZLIB_INCLUDE_DIR    - The include dir of zlib headers
-        
-    set(ODSSTREAM_QT5_FOUND 1)
-    set(ODSSTREAM_INCLUDE_DIR "/home/langella/developpement/git/libodsstream/src")
-    set(ODSSTREAM_QT5_LIBRARY "/home/langella/developpement/git/libodsstream/wbuild/src/libodsstream-qt5.dll")
-    if(NOT TARGET OdsStream::Core)
-        add_library(OdsStream::Core UNKNOWN IMPORTED)
-        set_target_properties(OdsStream::Core PROPERTIES
-                IMPORTED_LOCATION             "${ODSSTREAM_QT5_LIBRARY}"
-                INTERFACE_INCLUDE_DIRECTORIES "${ODSSTREAM_INCLUDE_DIR}"
-        )
-    endif()
-
-    
-    set(PAPPSOMSPP_QT5_FOUND 1)
-    set(PAPPSOMSPP_WIDGET_QT5_FOUND 1)
-    set(PAPPSOMSPP_INCLUDE_DIR "/home/langella/developpement/git/pappsomspp/src")
-    mark_as_advanced(PAPPSOMSPP_INCLUDE_DIR)
-    set(PAPPSOMSPP_QT5_LIBRARY "/home/langella/developpement/git/pappsomspp/wbuild/src/libpappsomspp-qt5.dll")
-    mark_as_advanced(PAPPSOMSPP_QT5_LIBRARY)
-    set(PAPPSOMSPP_WIDGET_QT5_LIBRARY "/home/langella/developpement/git/pappsomspp/wbuild/src/pappsomspp/widget/libpappsomspp-widget-qt5.dll")
-    mark_as_advanced(PAPPSOMSPP_WIDGET_QT5_LIBRARY)
-
-    if(NOT TARGET Pappso::Core)
-            add_library(Pappso::Core UNKNOWN IMPORTED)
-            set_target_properties(Pappso::Core PROPERTIES
-                IMPORTED_LOCATION             "${PAPPSOMSPP_QT5_LIBRARY}"
-                INTERFACE_INCLUDE_DIRECTORIES "${PAPPSOMSPP_INCLUDE_DIR}")
-    endif()
-
-
-    if(NOT TARGET Pappso::Widget)
-            add_library(Pappso::Widget UNKNOWN IMPORTED)
-            set_target_properties(Pappso::Widget PROPERTIES
-                IMPORTED_LOCATION             "${PAPPSOMSPP_WIDGET_QT5_LIBRARY}"
-                INTERFACE_INCLUDE_DIRECTORIES "${PAPPSOMSPP_INCLUDE_DIR}")
-    endif()
-
-       
-
-    set(Pwiz_FOUND 1)
-    set(Pwiz_INCLUDE_DIR "/home/langella/developpement/git/custompwiz/src")
-    set(Pwiz_LIBRARY "/home/langella/developpement/git/custompwiz/wbuild/src/libcustompwiz.dll")
-    
-    if(NOT TARGET Pwiz::Pwiz)
-        add_library(Pwiz::Pwiz UNKNOWN IMPORTED)
-        set_target_properties(Pwiz::Pwiz PROPERTIES
-            IMPORTED_LOCATION             "${Pwiz_LIBRARY}"
-            INTERFACE_INCLUDE_DIRECTORIES "${Pwiz_INCLUDE_DIR}")
-    endif()
-
-endif (MXE)
+message("\n${BoldRed}Configuring build for project ${PROJECT}${ColourReset}\n")
 
 # Find includes in corresponding build directories
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -88,39 +30,66 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
 set(CMAKE_AUTOMOC ON)
 
 
-IF(NOT CMAKE_BUILD_TYPE)
-#  SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
-#      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
-#      FORCE)
-  SET(CMAKE_BUILD_TYPE Release CACHE STRING
-      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
-      FORCE)
-ENDIF(NOT CMAKE_BUILD_TYPE)
-
-MESSAGE("CMAKE_BUILD_TYPE : ${CMAKE_BUILD_TYPE}")
-
-IF(CMAKE_BUILD_TYPE MATCHES "Release")
-  MESSAGE("compiling as release version")
-  ADD_DEFINITIONS("-DQT_NO_DEBUG_OUTPUT")
-ENDIF( CMAKE_BUILD_TYPE MATCHES "Release" )
-
-IF(CMAKE_BUILD_TYPE MATCHES "Debug")
-  MESSAGE("compiling as debug version")
-ENDIF( CMAKE_BUILD_TYPE MATCHES "Debug" )
-
-IF(CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
-  MESSAGE("compiling as release with debug info version")
-ENDIF( CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo" )
-
-#SET(CMAKE_CXX_FLAGS "-Wall -Weffc++ -Wshadow -Wconversion")
-#set(CMAKE_CXX_STANDARD 14)
-if (CMAKE_VERSION VERSION_LESS "3.1")
-    if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
-        set (CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}")
-    endif ()
-else ()
-    set (CMAKE_CXX_STANDARD 14)
-endif ()
+# We want C++17
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+message(STATUS "${BoldGreen}CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}${ColourReset}")
+
+#############################################################
+# We do not want warnings for unknown pragmas:
+message(STATUS "Setting definition -Wno-unknown-pragmas.${ColourReset}")
+add_definitions(-Wno-unknown-pragmas)
+# Enable warnings and possibly treat them as errors
+message(STATUS "${BoldGreen}Setting definition -Wall.${ColourReset}")
+add_definitions(-Wall)
+message(STATUS "${BoldGreen}Setting definition -Wextra.${ColourReset}")
+add_definitions(-Wextra)
+
+if(WARN_AS_ERROR)
+	message(STATUS "${BoldYellow}Setting definition -Werror.${ColourReset}")
+	add_definitions(-Werror)
+endif()
+
+message(STATUS "${BoldRed}CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}${ColourReset}")
+
+
+#############################################################
+#############################################################
+# Platform-specific CMake configuration
+if(MXE)
+	# Run the following cmake command line:
+	# x86_64-w64-mingw32.shared-cmake -DCMAKE_BUILD_TYPE=Release -DMXE=1 ../development
+	include(${CMAKE_TOOLCHAINS_PATH}/mxe-toolchain.cmake)
+	#include(${CMAKE_TOOLCHAINS_PATH}/mxe-toolchain-olivier.cmake)
+
+	# Set the name to the systemUname variable because in this situation that name
+	# is not found, it it passed as a flag in the command line.
+	set(systemUname "mxe")
+
+elseif(UNIX AND NOT APPLE)
+	# Run the following cmake command line:
+	# cmake -DBUILD_USER_MANUAL=1 -DCMAKE_BUILD_TYPE=Debug
+
+	include(${CMAKE_TOOLCHAINS_PATH}/unix-toolchain.cmake)
+
+elseif(WIN64)
+	# Run the following cmake command line:
+	# cmake -DBUILD_USER_MANUAL=0 -DCMAKE_BUILD_TYPE=Release ../development
+
+	include(${CMAKE_TOOLCHAINS_PATH}/win10-mingw64-toolchain.cmake)
+
+elseif(APPLE)
+	# Run the following cmake command line:
+	# cmake -DBUILD_USER_MANUAL=0 -DCMAKE_BUILD_TYPE=Release ../development
+
+	include(${CMAKE_TOOLCHAINS_PATH}/apple-macport-toolchain.cmake)
+endif()
+
+message("")
+message(STATUS "${BoldGreen}Starting configuration of ${PROJECT}${ColourReset}")
+message("")
+message(STATUS "${BoldYellow}The build toolchain is: ${SystemUname}${ColourReset}")
+message("")
 
 #depending on libpappsomspp version :
 SET(LIBPAPPSOMSPP_VERSION "0.7.3-2")
diff --git a/CMakeStuff/modules/AlglibConfig.cmake b/CMakeStuff/modules/AlglibConfig.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..e66acb20322e81d5b40f03125360069cce3e7876
--- /dev/null
+++ b/CMakeStuff/modules/AlglibConfig.cmake
@@ -0,0 +1,21 @@
+#sudo apt install libalglib-dev
+ 
+# Look for the necessary header
+set(Alglib_INCLUDE_DIR /usr/include/libalglib)
+mark_as_advanced(Alglib_INCLUDE_DIR)
+
+# Look for the necessary library
+set(Alglib_LIBRARY /usr/lib/x86_64-linux-gnu/libalglib.so)
+mark_as_advanced(Alglib_LIBRARY)
+
+set(Alglib_FOUND 1)
+
+
+    set(Alglib_INCLUDE_DIRS ${Alglib_INCLUDE_DIR})
+    set(Alglib_LIBRARIES ${Alglib_LIBRARY})
+    if(NOT TARGET Alglib::Alglib)
+        add_library(Alglib::Alglib UNKNOWN IMPORTED)
+        set_target_properties(Alglib::Alglib PROPERTIES
+            IMPORTED_LOCATION             "${Alglib_LIBRARY}"
+            INTERFACE_INCLUDE_DIRECTORIES "${Alglib_INCLUDE_DIR}")
+    endif()
diff --git a/CMakeStuff/modules/FindPappsomspp.cmake b/CMakeStuff/modules/FindPappsomspp.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..ac689f69715142c718d35317f66919bda602a48d
--- /dev/null
+++ b/CMakeStuff/modules/FindPappsomspp.cmake
@@ -0,0 +1,65 @@
+# Copyright : Olivier Langella (CNRS)
+# License : GPL-3.0+
+# Authors : Olivier Langella
+
+FIND_PATH( PAPPSOMSPP_INCLUDE_DIR pappsomspp/types.h
+               PATHS /usr/local/include /usr/include
+               PATH_SUFFIXES pappsomspp libpappsomspp ENV PATH)
+
+
+FIND_LIBRARY(PAPPSOMSPP_QT5_LIBRARY NAMES pappsomspp-qt5)
+IF (PAPPSOMSPP_INCLUDE_DIR AND PAPPSOMSPP_QT5_LIBRARY)
+  mark_as_advanced(PAPPSOMSPP_INCLUDE_DIR)
+  mark_as_advanced(PAPPSOMSPP_QT5_LIBRARY)
+  MESSAGE(STATUS "XXXXXXXXXXXXX ${PAPPSOMSPP_QT5_LIBRARY} XXXXXXXXXXXXXXX")
+  SET(PAPPSOMSPP_QT5_FOUND TRUE)
+ENDIF (PAPPSOMSPP_INCLUDE_DIR AND PAPPSOMSPP_QT5_LIBRARY)
+
+IF (PAPPSOMSPP_QT5_FOUND)
+  # show which CppUnit was found only if not quiet
+  IF (NOT PAPPSOMSPP_FIND_QUIETLY)
+    MESSAGE(STATUS "Found PAPPSOMSPP_QT5_LIBRARY for Qt5: ${PAPPSOMSPP_QT5_LIBRARY}")
+  ENDIF (NOT PAPPSOMSPP_FIND_QUIETLY)
+  
+  
+  if(NOT TARGET Pappso::Core)
+        add_library(Pappso::Core UNKNOWN IMPORTED)
+        set_target_properties(Pappso::Core PROPERTIES
+            IMPORTED_LOCATION             "${PAPPSOMSPP_QT5_LIBRARY}"
+            INTERFACE_INCLUDE_DIRECTORIES "${PAPPSOMSPP_INCLUDE_DIR}")
+  endif()
+
+  
+
+    FIND_LIBRARY(PAPPSOMSPP_WIDGET_QT5_LIBRARY NAMES pappsomspp-widget-qt5)
+    IF (PAPPSOMSPP_INCLUDE_DIR AND PAPPSOMSPP_WIDGET_QT5_LIBRARY)
+        MESSAGE(STATUS "XXXXXXXXXXXXX ${PAPPSOMSPP_WIDGET_QT5_LIBRARY} XXXXXXXXXXXXXXX")
+        SET(PAPPSOMSPP_WIDGET_QT5_FOUND TRUE)
+      mark_as_advanced(PAPPSOMSPP_WIDGET_QT5_LIBRARY)  
+        
+      if(NOT TARGET Pappso::Widget)
+        add_library(Pappso::Widget UNKNOWN IMPORTED)
+        set_target_properties(Pappso::Widget PROPERTIES
+            IMPORTED_LOCATION             "${PAPPSOMSPP_WIDGET_QT5_LIBRARY}"
+            INTERFACE_INCLUDE_DIRECTORIES "${PAPPSOMSPP_INCLUDE_DIR}")
+      endif()
+    ENDIF (PAPPSOMSPP_INCLUDE_DIR AND PAPPSOMSPP_WIDGET_QT5_LIBRARY)
+  
+ENDIF (PAPPSOMSPP_QT5_FOUND)
+
+
+IF (PAPPSOMSPP_QT5_FOUND)
+  # show which CppUnit was found only if not quiet
+  IF (NOT PAPPSOMSPP_FIND_QUIETLY)
+    MESSAGE(STATUS "Found PAPPSOMSPP_WIDGET_QT5_LIBRARY for Qt5: ${PAPPSOMSPP_WIDGET_QT5_LIBRARY}")
+  ENDIF (NOT PAPPSOMSPP_FIND_QUIETLY)
+  
+  
+ENDIF (PAPPSOMSPP_QT5_FOUND)
+
+  IF (NOT PAPPSOMSPP_QT5_FOUND)
+    # fatal error if CppUnit is required but not found
+    IF (PAPPSOMSPP_FIND_REQUIRED)
+      MESSAGE(FATAL_ERROR "Could not find PAPPSOMSPP Qt5 please do specify the PAPPSOMSPP_INCLUDE_DIR and  PAPPSOMSP_QT5_LIBRARY variables using ccmake!")
+    ENDIF (PAPPSOMSPP_FIND_REQUIRED)
+  ENDIF (NOT PAPPSOMSPP_QT5_FOUND)
diff --git a/CMakeStuff/modules/FindPwiz.cmake b/CMakeStuff/modules/FindPwiz.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..6af0c1e205825ee7c8c453a3a51954a833c6f272
--- /dev/null
+++ b/CMakeStuff/modules/FindPwiz.cmake
@@ -0,0 +1,31 @@
+# Copyright : ETH Zurich
+# License : three-clause BSD license
+# Authors : Witold Wolski
+# for full text refer to files: LICENSE, AUTHORS and COPYRIGHT
+#FIND_PATH(Pwiz_INCLUDE_DIR pwiz/Version.hpp)
+	FIND_PATH( Pwiz_INCLUDE_DIR pwiz/Version.hpp
+               PATHS /usr/local/include /usr/include
+               PATH_SUFFIXES proteowizard pwiz libpwiz ENV PATH)
+
+FIND_LIBRARY(Pwiz_LIBRARY NAMES pwiz)
+IF (Pwiz_INCLUDE_DIR AND Pwiz_LIBRARY)
+    MESSAGE(STATUS "XXXXXXXXXXXXX ${Pwiz_LIBRARY} XXXXXXXXXXXXXXX")
+    SET(Pwiz_FOUND TRUE)
+ENDIF (Pwiz_INCLUDE_DIR AND Pwiz_LIBRARY)
+IF (Pwiz_FOUND)
+    # show which CppUnit was found only if not quiet
+    IF (NOT Pwiz_FIND_QUIETLY)
+        MESSAGE(STATUS "Found Pwiz: ${Pwiz_LIBRARY}")
+    ENDIF (NOT Pwiz_FIND_QUIETLY)
+    if(NOT TARGET Pwiz::Pwiz)
+        add_library(Pwiz::Pwiz UNKNOWN IMPORTED)
+        set_target_properties(Pwiz::Pwiz PROPERTIES
+            IMPORTED_LOCATION             "${Pwiz_LIBRARY}"
+            INTERFACE_INCLUDE_DIRECTORIES "${Pwiz_INCLUDE_DIR}")
+    endif()
+ELSE (Pwiz_FOUND)
+    # fatal error if CppUnit is required but not found
+    IF (Pwiz_FIND_REQUIRED)
+        MESSAGE(FATAL_ERROR "Could not find Pwiz please do specify the Pwiz_INCLUDE_DIR and the Pwiz_LIBRARY variables using ccmake!")
+    ENDIF (Pwiz_FIND_REQUIRED)
+ENDIF (Pwiz_FOUND)
diff --git a/CMakeStuff/modules/ZstdConfig.cmake b/CMakeStuff/modules/ZstdConfig.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..fc476620e38094f81e5953448b969c47467da6b9
--- /dev/null
+++ b/CMakeStuff/modules/ZstdConfig.cmake
@@ -0,0 +1,21 @@
+#sudo apt install libzstd-dev
+ 
+# Look for the necessary header
+set(Zstd_INCLUDE_DIR /usr/include)
+mark_as_advanced(Zstd_INCLUDE_DIR)
+
+# Look for the necessary library
+set(Zstd_LIBRARY /usr/lib/x86_64-linux-gnu/libzstd.so)
+mark_as_advanced(Zstd_LIBRARY)
+
+set(Zstd_FOUND 1)
+
+
+    set(Zstd_INCLUDE_DIRS ${Zstd_INCLUDE_DIR})
+    set(Zstd_LIBRARIES ${Zstd_LIBRARY})
+    if(NOT TARGET Zstd::Zstd)
+        add_library(Zstd::Zstd UNKNOWN IMPORTED)
+        set_target_properties(Zstd::Zstd PROPERTIES
+            IMPORTED_LOCATION             "${Zstd_LIBRARY}"
+            INTERFACE_INCLUDE_DIRECTORIES "${Zstd_INCLUDE_DIR}")
+    endif()
diff --git a/CMakeStuff/outputColors.cmake b/CMakeStuff/outputColors.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..5d623657fb3f930d33d8f6983b502e773067201f
--- /dev/null
+++ b/CMakeStuff/outputColors.cmake
@@ -0,0 +1,18 @@
+# We want to use some colors for the message output.
+string(ASCII 27 Esc)
+set(ColourReset "${Esc}[m")
+set(ColourBold  "${Esc}[1m")
+set(Red         "${Esc}[31m")
+set(Green       "${Esc}[32m")
+set(Yellow      "${Esc}[33m")
+set(Blue        "${Esc}[34m")
+set(Magenta     "${Esc}[35m")
+set(Cyan        "${Esc}[36m")
+set(White       "${Esc}[37m")
+set(BoldRed     "${Esc}[1;31m")
+set(BoldGreen   "${Esc}[1;32m")
+set(BoldYellow  "${Esc}[1;33m")
+set(BoldBlue    "${Esc}[1;34m")
+set(BoldMagenta "${Esc}[1;35m")
+set(BoldCyan    "${Esc}[1;36m")
+set(BoldWhite   "${Esc}[1;37m")
diff --git a/CMakeStuff/systemUname.cmake b/CMakeStuff/systemUname.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..79e68c73672091ccc9efbcbcbd081a08c8cc32b0
--- /dev/null
+++ b/CMakeStuff/systemUname.cmake
@@ -0,0 +1,18 @@
+# Ask that uname -s be performed and store the value in SYSTEM_UNAME_S for
+# later reference.
+
+macro(get_uname_string)
+
+execute_process(COMMAND uname -s OUTPUT_VARIABLE SYSTEM_UNAME_S) 
+
+if(${SYSTEM_UNAME_S} MATCHES "^.*MINGW64.*")
+	message(STATUS "System detected as Windows, setting WIN64")
+	set(WIN64 1)
+#else()
+	#message(STATUS "System is not Windows.")
+endif()
+
+endmacro()
+
+get_uname_string()
+
diff --git a/CMakeStuff/toolchains/mxe-toolchain-olivier.cmake b/CMakeStuff/toolchains/mxe-toolchain-olivier.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..cde2e2619a51583339bd1821b4a5e5a4d4a31f4d
--- /dev/null
+++ b/CMakeStuff/toolchains/mxe-toolchain-olivier.cmake
@@ -0,0 +1,78 @@
+# This file should be included if the command line reads like this:
+# x86_64-w64-mingw32.shared-cmake -DCMAKE_BUILD_TYPE=Release -DMXE=1 ..
+
+MESSAGE("MXE (M cross environment) https://mxe.cc/")
+message("Please run the configuration like this:")
+message("x86_64-w64-mingw32.shared-cmake -DMXE=1 -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release ../../development")
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES /media/langella/pappso/mxe/usr/x86_64-w64-mingw32.shared/include)
+set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES /media/langella/pappso/mxe/usr/x86_64-w64-mingw32.shared/include)
+
+
+if(WIN32 OR _WIN32)
+	message(STATUS "Building with WIN32 defined.")
+endif()
+
+
+set (QCustomPlot_FOUND TRUE)
+set (QCustomPlot_INCLUDES "/home/langella/developpement/git/qcustomplot")
+set (QCustomPlot_LIBRARIES "/home/langella/developpement/git/qcustomplot/wbuild/libqcustomplot.dll")
+
+
+#sudo apt install libc6-dev-i386
+   # QUAZIP_INCLUDE_DIR - Path to QuaZip include dir
+set (QUAZIP_INCLUDE_DIR "/home/langella/developpement/git/quazip")
+# QUAZIP_INCLUDE_DIRS- Path to QuaZip and zlib include dir (combined from QUAZIP_INCLUDE_DIR + ZLIB_INCLUDE_DIR)
+# QUAZIP_LIBRARIES   - List of QuaZip libraries
+set (QUAZIP_QT5_LIBRARIES "/home/langella/developpement/git/quazip/wbuild/libquazip5.dll")
+set (QUAZIP_LIBRARIES "/home/langella/developpement/git/quazip/wbuild/libquazip5.dll")
+# QUAZIP_ZLIB_INCLUDE_DIR- The include dir of zlib headers
+
+set(ODSSTREAM_QT5_FOUND 1)
+set(ODSSTREAM_INCLUDE_DIR "/home/langella/developpement/git/libodsstream/src")
+set(ODSSTREAM_QT5_LIBRARY "/home/langella/developpement/git/libodsstream/wbuild/src/libodsstream-qt5.dll")
+if(NOT TARGET OdsStream::Core)
+    add_library(OdsStream::Core UNKNOWN IMPORTED)
+        set_target_properties(OdsStream::Core PROPERTIES
+        IMPORTED_LOCATION "${ODSSTREAM_QT5_LIBRARY}"
+        INTERFACE_INCLUDE_DIRECTORIES "${ODSSTREAM_INCLUDE_DIR}"
+    )
+endif()
+
+
+set(PAPPSOMSPP_QT5_FOUND 1)
+set(PAPPSOMSPP_WIDGET_QT5_FOUND 1)
+set(PAPPSOMSPP_INCLUDE_DIR "/home/langella/developpement/git/pappsomspp/src")
+mark_as_advanced(PAPPSOMSPP_INCLUDE_DIR)
+set(PAPPSOMSPP_QT5_LIBRARY "/home/langella/developpement/git/pappsomspp/wbuild/src/libpappsomspp-qt5.dll")
+mark_as_advanced(PAPPSOMSPP_QT5_LIBRARY)
+set(PAPPSOMSPP_WIDGET_QT5_LIBRARY "/home/langella/developpement/git/pappsomspp/wbuild/src/pappsomspp/widget/libpappsomspp-widget-qt5.dll")
+mark_as_advanced(PAPPSOMSPP_WIDGET_QT5_LIBRARY)
+
+if(NOT TARGET Pappso::Core)
+    add_library(Pappso::Core UNKNOWN IMPORTED)
+    set_target_properties(Pappso::Core PROPERTIES
+    IMPORTED_LOCATION "${PAPPSOMSPP_QT5_LIBRARY}"
+    INTERFACE_INCLUDE_DIRECTORIES "${PAPPSOMSPP_INCLUDE_DIR}")
+endif()
+
+
+if(NOT TARGET Pappso::Widget)
+    add_library(Pappso::Widget UNKNOWN IMPORTED)
+    set_target_properties(Pappso::Widget PROPERTIES
+    IMPORTED_LOCATION "${PAPPSOMSPP_WIDGET_QT5_LIBRARY}"
+    INTERFACE_INCLUDE_DIRECTORIES "${PAPPSOMSPP_INCLUDE_DIR}")
+endif()
+
+   
+
+set(Pwiz_FOUND 1)
+set(Pwiz_INCLUDE_DIR "/home/langella/developpement/git/custompwiz/src")
+set(Pwiz_LIBRARY "/home/langella/developpement/git/custompwiz/wbuild/src/libcustompwiz.dll")
+
+if(NOT TARGET Pwiz::Pwiz)
+    add_library(Pwiz::Pwiz UNKNOWN IMPORTED)
+    set_target_properties(Pwiz::Pwiz PROPERTIES
+    IMPORTED_LOCATION "${Pwiz_LIBRARY}"
+    INTERFACE_INCLUDE_DIRECTORIES "${Pwiz_INCLUDE_DIR}")
+endif()
diff --git a/CMakeStuff/toolchains/mxe-toolchain.cmake b/CMakeStuff/toolchains/mxe-toolchain.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..8fc2fb62e13dc9bd8a82cbf768db049a120cb1dd
--- /dev/null
+++ b/CMakeStuff/toolchains/mxe-toolchain.cmake
@@ -0,0 +1,100 @@
+# File:///home/langella/developpement/git/pappsomspp/CMakeStuff/toolchains/mxe-toolchain.cmake# 
+# This file should be included if the command line reads like this:
+# x86_64-w64-mingw32.shared-cmake -DCMAKE_BUILD_TYPE=Release -DMXE=1 ..
+
+message("MXE (M cross environment) https://mxe.cc/")
+message("Please run the configuration like this:")
+message("x86_64-w64-mingw32.shared-cmake -DMXE= 1 -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release ../../development")
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES ${HOME_DEVEL_DIR}/mxe/usr/x86_64-w64-mingw32.shared/include)
+set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES ${HOME_DEVEL_DIR}/mxe/usr/x86_64-w64-mingw32.shared/include)
+
+
+if(WIN32 OR _WIN32)
+	message(STATUS "Building with WIN32 defined.")
+endif()
+
+message(STATUS "${BoldGreen}Setting definition -DPMSPP_LIBRARY for symbol DLL export.${ColourReset}")
+add_definitions(-DPMSPP_LIBRARY)
+
+
+find_package(ZLIB REQUIRED)
+
+find_package(SQLite3 REQUIRED)
+
+
+#install MXE qtsvg package
+#langella@piccolo:/media/langella/pappso/mxe$ make qtsvg
+
+
+set(QCustomPlot_FOUND 1)
+set(QCustomPlot_INCLUDE_DIR "${HOME_DEVEL_DIR}/qcustomplot/development")
+set(QCustomPlot_LIBRARIES "${HOME_DEVEL_DIR}/qcustomplot/build-area/mxe/libqcustomplot.dll")
+if(NOT TARGET QCustomPlot::QCustomPlot)
+	add_library(QCustomPlot::QCustomPlot UNKNOWN IMPORTED)
+	set_target_properties(QCustomPlot::QCustomPlot PROPERTIES
+		IMPORTED_LOCATION             "${QCustomPlot_LIBRARIES}"
+		INTERFACE_INCLUDE_DIRECTORIES "${QCustomPlot_INCLUDE_DIR}"
+		INTERFACE_COMPILE_DEFINITIONS QCUSTOMPLOT_USE_LIBRARY)
+endif()
+
+
+if(MAKE_TEST)
+
+	set(Quazip5_FOUND 1)
+	set(Quazip5_INCLUDE_DIRS "${HOME_DEVEL_DIR}/quazip5/development")
+	set(Quazip5_LIBRARY "${HOME_DEVEL_DIR}/quazip5/build-area/mxe/libquazip5.dll") 
+	if(NOT TARGET Quazip5::Quazip5)
+		add_library(Quazip5::Quazip5 UNKNOWN IMPORTED)
+		set_target_properties(Quazip5::Quazip5 PROPERTIES
+			IMPORTED_LOCATION             "${Quazip5_LIBRARY}"
+			INTERFACE_INCLUDE_DIRECTORIES "${Quazip5_INCLUDE_DIRS}")
+	endif()
+
+endif()
+
+
+set(OdsStream_QT5_FOUND 1)
+set(OdsStream_INCLUDE_DIR "c:/msys64/home/mydar/devel/odsstream/src")
+set(OdsStream_QT5_LIBRARY "c:/msys64/home/mydar/devel/odsstream/build-area/mxe/src/libodsstream-qt5.dll")
+if(NOT TARGET OdsStream::Core)
+	add_library(OdsStream::Core UNKNOWN IMPORTED)
+	set_target_properties(OdsStream::Core PROPERTIES
+		IMPORTED_LOCATION             "${OdsStream_QT5_LIBRARY}"
+		INTERFACE_INCLUDE_DIRECTORIES "${OdsStream_INCLUDE_DIR}"
+		)
+endif()
+
+
+set(Alglib_FOUND 1)
+set(Alglib_INCLUDE_DIR "${HOME_DEVEL_DIR}/alglib/development/src")
+set(Alglib_LIBRARY "${HOME_DEVEL_DIR}/alglib/build-area/mxe/libalglib.dll") 
+if(NOT TARGET Alglib::Alglib)
+	add_library(Alglib::Alglib UNKNOWN IMPORTED)
+	set_target_properties(Alglib::Alglib PROPERTIES
+		IMPORTED_LOCATION             "${Alglib_LIBRARY}"
+		INTERFACE_INCLUDE_DIRECTORIES "${Alglib_INCLUDE_DIR}")
+endif()
+
+
+# All this belly dance does not seem necessary. Just perform like for the other
+# libraries...
+# Look for the necessary header
+set(Zstd_INCLUDE_DIR ${HOME_DEVEL_DIR}/mxe/usr/x86_64-w64-mingw32.shared/include)
+mark_as_advanced(Zstd_INCLUDE_DIR)
+set(Zstd_INCLUDE_DIRS ${Zstd_INCLUDE_DIR})
+# Look for the necessary library
+set(Zstd_LIBRARY ${HOME_DEVEL_DIR}/mxe/usr/x86_64-w64-mingw32.shared/bin/libzstd.dll)
+mark_as_advanced(Zstd_LIBRARY)
+# Mark the lib as found
+set(Zstd_FOUND 1)
+set(Zstd_LIBRARIES ${Zstd_LIBRARY})
+if(NOT TARGET Zstd::Zstd)
+	add_library(Zstd::Zstd UNKNOWN IMPORTED)
+	set_target_properties(Zstd::Zstd PROPERTIES
+		IMPORTED_LOCATION             "${Zstd_LIBRARY}"
+		INTERFACE_INCLUDE_DIRECTORIES "${Zstd_INCLUDE_DIR}")
+endif()
+
+
diff --git a/CMakeStuff/toolchains/unix-toolchain.cmake b/CMakeStuff/toolchains/unix-toolchain.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..7e9a3541a2724b21fa91b90c485692d2774cf2b3
--- /dev/null
+++ b/CMakeStuff/toolchains/unix-toolchain.cmake
@@ -0,0 +1,30 @@
+message("UNIX non APPLE environment")
+message("Please run the configuration like this:")
+message("cmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Debug ../development")
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES /usr/include)
+set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES /usr/include)
+
+find_package( Odsstream REQUIRED )
+
+if (PAPPSOMSPP_QT5_FOUND)
+else (PAPPSOMSPP_QT5_FOUND)
+    find_package( Pappsomspp REQUIRED )
+endif (PAPPSOMSPP_QT5_FOUND)
+
+#find_package( Boost COMPONENTS iostreams thread filesystem chrono REQUIRED )
+find_package( Boost COMPONENTS thread filesystem iostreams REQUIRED ) 
+
+
+
+set(Alglib_DIR ${CMAKE_MODULE_PATH})
+find_package(Alglib REQUIRED)
+
+
+find_package( ZLIB REQUIRED )
+
+set(Zstd_DIR ${CMAKE_MODULE_PATH})
+find_package(Zstd REQUIRED)
+
+set(Pwiz_DIR ${CMAKE_MODULE_PATH})
+find_package(Pwiz REQUIRED)
diff --git a/CMakeStuff/toolchains/win10-mingw64-toolchain.cmake b/CMakeStuff/toolchains/win10-mingw64-toolchain.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..025a246a8bdf338a13a3028f8e9edeaef32d86e7
--- /dev/null
+++ b/CMakeStuff/toolchains/win10-mingw64-toolchain.cmake
@@ -0,0 +1,120 @@
+message("\n${BoldRed}WIN10-MINGW64 environment${ColourReset}\n")
+message("Please run the configuration like this:")
+message("cmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release ../development")
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "c:/msys64/mingw64/include")
+set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "c:/msys64/mingw64/bin")
+
+
+# We do not build the tests under Win10.
+set (MAKE_TEST 0)
+
+
+if(WIN32 OR _WIN32)
+	message(STATUS "Building with WIN32 defined.")
+endif()
+
+message(STATUS "${BoldGreen}Setting definition -DPMSPP_LIBRARY for symbol DLL export.${ColourReset}")
+add_definitions(-DPMSPP_LIBRARY)
+
+
+find_package(ZLIB REQUIRED)
+
+
+if(MAKE_TEST)
+
+	set(Quazip5_FOUND 1)
+	set(Quazip5_INCLUDE_DIRS "${HOME_DEVEL_DIR}/quazip5/development")
+	set(Quazip5_LIBRARY "${HOME_DEVEL_DIR}/quazip5/build-area/mingw64/libquazip5.dll") 
+	if(NOT TARGET Quazip5::Quazip5)
+		add_library(Quazip5::Quazip5 UNKNOWN IMPORTED)
+		set_target_properties(Quazip5::Quazip5 PROPERTIES
+			IMPORTED_LOCATION             "${Quazip5_LIBRARY}"
+			INTERFACE_INCLUDE_DIRECTORIES "${Quazip5_INCLUDE_DIRS}")
+	endif()
+
+endif()
+
+
+set(QCustomPlot_FOUND 1)
+set(QCustomPlot_INCLUDE_DIRS "${HOME_DEVEL_DIR}/qcustomplot/development")
+# Note the QCustomPlot_LIBRARIES (plural) because on Debian, the
+# QCustomPlotConfig.cmake file has this variable name (see the unix-specific
+# toolchain file.
+set(QCustomPlot_LIBRARIES "${HOME_DEVEL_DIR}/qcustomplot/build-area/mingw64/libqcustomplot.dll") 
+# Per instructions of the lib author:
+# https://www.qcustomplot.com/index.php/tutorials/settingup
+message(STATUS "Setting definition -DQCUSTOMPLOT_USE_LIBRARY.")
+if(NOT TARGET QCustomPlot::QCustomPlot)
+	add_library(QCustomPlot::QCustomPlot UNKNOWN IMPORTED)
+	set_target_properties(QCustomPlot::QCustomPlot PROPERTIES
+		IMPORTED_LOCATION             "${QCustomPlot_LIBRARIES}"
+		INTERFACE_INCLUDE_DIRECTORIES "${QCustomPlot_INCLUDE_DIRS}"
+		INTERFACE_COMPILE_DEFINITIONS QCUSTOMPLOT_USE_LIBRARY
+		)
+endif()
+
+
+set(Alglib_FOUND 1)
+set(Alglib_INCLUDE_DIRS "${HOME_DEVEL_DIR}/alglib/development/src")
+set(Alglib_LIBRARY "${HOME_DEVEL_DIR}/alglib/build-area/mingw64/libalglib.dll") 
+if(NOT TARGET Alglib::Alglib)
+	add_library(Alglib::Alglib UNKNOWN IMPORTED)
+	set_target_properties(Alglib::Alglib PROPERTIES
+		IMPORTED_LOCATION             "${Alglib_LIBRARY}"
+		INTERFACE_INCLUDE_DIRECTORIES "${Alglib_INCLUDE_DIRS}")
+endif()
+
+
+# No more used since the source code is now part of our code tree.
+#set(CustomPwiz_FOUND 1)
+#set(CustomPwiz_INCLUDE_DIRS "${HOME_DEVEL_DIR}/custompwiz/development/src")
+#set(CustomPwiz_LIBRARY "${HOME_DEVEL_DIR}/custompwiz/build-area/src/libcustompwiz.dll.a") 
+#if(NOT TARGET CustomPwiz::CustomPwiz)
+#add_library(CustomPwiz::CustomPwiz UNKNOWN IMPORTED)
+#set_target_properties(CustomPwiz::CustomPwiz PROPERTIES
+#IMPORTED_LOCATION             "${CustomPwiz_LIBRARY}"
+#INTERFACE_INCLUDE_DIRECTORIES "${CustomPwiz_INCLUDE_DIRS}")
+#endif()
+
+
+find_package(Boost COMPONENTS iostreams thread filesystem chrono REQUIRED ) 
+
+
+set(Zstd_FOUND 1)
+set(Zstd_INCLUDE_DIRS "c:/msys64/mingw64/include")
+set(Zstd_LIBRARY "c:/msys64/mingw64/bin/libzstd.dll") 
+if(NOT TARGET Zstd::Zstd)
+	add_library(Zstd::Zstd UNKNOWN IMPORTED)
+	set_target_properties(Zstd::Zstd PROPERTIES
+		IMPORTED_LOCATION             "${Zstd_LIBRARY}"
+		INTERFACE_INCLUDE_DIRECTORIES "${Zstd_INCLUDE_DIRS}")
+endif()
+
+
+set(SQLite3_FOUND 1)
+set(SQLite3_INCLUDE_DIRS "c:/msys64/mingw64/include")
+set(SQLite3_LIBRARY "c:/msys64/mingw64/bin/libsqlite3-0.dll") 
+if(NOT TARGET SQLite::SQLite3)
+	add_library(SQLite::SQLite3 UNKNOWN IMPORTED)
+	set_target_properties(SQLite::SQLite3 PROPERTIES
+		IMPORTED_LOCATION             "${SQLite3_LIBRARY}"
+		INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIRS}")
+endif()
+
+
+set(OdsStream_QT5_FOUND 1)
+set(OdsStream_INCLUDE_DIR "${HOME_DEVEL_DIR}/odsstream/src")
+set(OdsStream_QT5_LIBRARY "${HOME_DEVEL_DIR}/odsstream/build-area/mingw64/src/libodsstream-qt5.dll")
+if(NOT TARGET OdsStream::Core)
+	add_library(OdsStream::Core UNKNOWN IMPORTED)
+	set_target_properties(OdsStream::Core PROPERTIES
+		IMPORTED_LOCATION             "${OdsStream_QT5_LIBRARY}"
+		INTERFACE_INCLUDE_DIRECTORIES "${OdsStream_INCLUDE_DIR}"
+		)
+endif()
+
+
+# On Win10 all the code is relocatable.
+remove_definitions(-fPIC)
diff --git a/cmake_modules/FindPwiz.cmake b/cmake_modules/FindPwiz.cmake
deleted file mode 100644
index 3609e262369d784faf6cefc1226870d2834f3119..0000000000000000000000000000000000000000
--- a/cmake_modules/FindPwiz.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright : ETH Zurich
-# License : three-clause BSD license
-# Authors : Witold Wolski
-# for full text refer to files: LICENSE, AUTHORS and COPYRIGHT
-#FIND_PATH(Pwiz_INCLUDE_DIR pwiz/Version.hpp)
-	FIND_PATH( Pwiz_INCLUDE_DIR pwiz/Version.hpp
-               PATHS /usr/local/include /usr/include /usr/include/proteowizard
-               PATH_SUFFIXES pwiz libpwiz ENV PATH)
-
-FIND_LIBRARY(Pwiz_LIBRARY NAMES pwiz)
-IF (Pwiz_INCLUDE_DIR AND Pwiz_LIBRARY)
-MESSAGE(STATUS "XXXXXXXXXXXXX ${Pwiz_LIBRARY} XXXXXXXXXXXXXXX")
-SET(Pwiz_FOUND TRUE)
-ENDIF (Pwiz_INCLUDE_DIR AND Pwiz_LIBRARY)
-IF (Pwiz_FOUND)
-# show which CppUnit was found only if not quiet
-IF (NOT Pwiz_FIND_QUIETLY)
-MESSAGE(STATUS "Found Pwiz: ${Pwiz_LIBRARY}")
-ENDIF (NOT Pwiz_FIND_QUIETLY)
-ELSE (Pwiz_FOUND)
-# fatal error if CppUnit is required but not found
-IF (Pwiz_FIND_REQUIRED)
-MESSAGE(FATAL_ERROR "Could not find Pwiz please do specify the Pwiz_INCLUDE_DIR and the Pwiz_LIBRARY variables using ccmake!")
-ENDIF (Pwiz_FIND_REQUIRED)
-ENDIF (Pwiz_FOUND)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4046ffc230972330baa6b57435547a6d65a40f02..020963642d6401878c2935bed80c9efd1e6fb644 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,338 +1,300 @@
-# CMake script for xtpcpp
-# Author: Olivier Langella
-# Created: 03/03/2015
-
-
-SET(xtpcpp_RCCS xtpcpp.qrc)
-# Appeler automatique le moc quand nécessaire
-#SET(CMAKE_AUTOMOC ON)
-# Les fichiers générés par le moc sont générés dans le dossier bin, dire à CMake de toujours 	
-# inclure les entêtes de ce dossier
-#SET(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-#FIND_PACKAGE(Boost REQUIRED)
-#INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIRS})
-
-FIND_PACKAGE( Qt5 COMPONENTS Core Gui Svg Xml PrintSupport Sql Network REQUIRED )
-QT5_ADD_RESOURCES(xtpcpp_RCC_SRCS ${xtpcpp_RCCS})
-
-FIND_PACKAGE( ZLIB REQUIRED )
-
-if (QCustomPlot_FOUND)
-    MESSAGE("QCustomPlot_INCLUDES found ${QCustomPlot_INCLUDES}")
-else (QCustomPlot_FOUND)
-    FIND_PACKAGE( QCustomPlot REQUIRED )
-endif (QCustomPlot_FOUND)
-    
-if (ODSSTREAM_QT5_FOUND)
-else (ODSSTREAM_QT5_FOUND)
-    FIND_PACKAGE( Odsstream REQUIRED ) #ODSSTREAM_INCLUDE_DIR AND ODSSTREAM_LIBRARY
-endif (ODSSTREAM_QT5_FOUND)
-
-#SET (ODSSTREAM_DIR  "/home/olivier/eclipse/git/libodsstream")
-#SET (ODSSTREAM_INCLUDE_DIR "${ODSSTREAM_DIR}/src")
-#SET (ODSSTREAM_QT5_LIBRARY "${ODSSTREAM_DIR}/build/src/libodsstream-qt5.so")
-
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Xml_EXECUTABLE_COMPILE_FLAGS} ${Qt5Gui_EXECUTABLE_COMPILE_FLAGS} ${Qt5Svg_EXECUTABLE_COMPILE_FLAGS}")
-
-
-
-#sudo apt-get install libpappsomspp-dev
-if (PAPPSOMSPP_QT5_FOUND)
-else (PAPPSOMSPP_QT5_FOUND)
-    MESSAGE("looking for PAPPSOms++ library")
-	FIND_PACKAGE( Pappsomspp REQUIRED )
-endif (PAPPSOMSPP_QT5_FOUND)
-
-IF (PAPPSOMSPP_QT5_FOUND)
-ELSE (PAPPSOMSPP_QT5_FOUND)
-  MESSAGE("PAPPSOms++ library not found")
-  MESSAGE("did you apt-get install libpappsomspp-dev ?")
-ENDIF (PAPPSOMSPP_QT5_FOUND)
-
-IF (PAPPSOMSPP_WIDGET_QT5_FOUND)
-ELSE (PAPPSOMSPP_WIDGET_QT5_FOUND)
-  MESSAGE("PAPPSOms++ widget library not found")
-  MESSAGE("did you apt-get install libpappsomspp-widget-dev ?")
-ENDIF (PAPPSOMSPP_WIDGET_QT5_FOUND)
-
-MESSAGE("PAPPSOms++ library : ${PAPPSOMSPP_QT5_LIBRARY}")
-
-set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake_modules)
-
-if (Pwiz_FOUND)
-else (Pwiz_FOUND)
-    FIND_PACKAGE(Pwiz REQUIRED COMPONENTS chrono filesystem iostreams program_options serialization system thread)
-endif (Pwiz_FOUND)
-
-if (Boost_FOUND)
-else (Boost_FOUND)
-    FIND_PACKAGE(Boost REQUIRED)
-endif (Boost_FOUND)
-
-
-
-if (Boost_FOUND)
-    MESSAGE("Boost_LIBRARIES found ${Boost_LIB_VERSION}")
-endif (Boost_FOUND)
-
-
-IF (Pwiz_FOUND)
-  #INCLUDE_DIRECTORIES( ${Pwiz_INCLUDE_DIR})
-  #FIND_PACKAGE(Boost REQUIRED)
-  #INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIRS})
-ELSE (Pwiz_FOUND)
-  MESSAGE("Proteowizard library not found")
-  MESSAGE("did you apt-get install libpwiz-dev libboost-dev ?")
-ENDIF (Pwiz_FOUND)
-
-configure_file (${CMAKE_SOURCE_DIR}/src/config.h.cmake ${CMAKE_SOURCE_DIR}/src/config.h)
-
-# File list
-SET(CPP_FILES
-  core/automaticfilterparameters.cpp
-  core/identificationgroup.cpp
-  core/identification_sources/identificationdatasource.cpp
-  core/identification_sources/identificationmascotdatfile.cpp
-  core/identification_sources/identificationpepxmlfile.cpp
-  core/identification_sources/identificationpwizfile.cpp
-  core/identification_sources/identificationxtandemfile.cpp
-  core/labeling/label.cpp
-  core/labeling/labelingmethod.cpp
-  core/qvalue/computeqvalues.cpp
-  core/tandem_run/tandembatchprocess.cpp
-  core/tandem_run/tandemcondorprocess.cpp
-  core/tandem_run/tandemparameters.cpp
-  core/alignmentgroup.cpp
-  core/msrun.cpp
-  core/peptideevidence.cpp
-  core/peptidematch.cpp
-  core/peptidextp.cpp
-  core/project.cpp
-  core/proteinmatch.cpp
-  core/proteinxtp.cpp
-  core/sequencedatabase.cpp
-  files/fastafile.cpp
-  files/tandemparametersfile.cpp
-  files/xpipfile.cpp
-  grouping/groupingexperiment.cpp
-  grouping/groupinggroup.cpp
-  grouping/groupingpeptidemass.cpp
-  grouping/ptm/ptmgroupingexperiment.cpp
-  grouping/ptm/ptmisland.cpp
-  grouping/ptm/ptmislandgroup.cpp
-  grouping/ptm/ptmislandsubgroup.cpp
-  grouping/ptm/ptmsamplescan.cpp
-  input/mascot/mascotdatparser.cpp
-  input/mascot/mimeparser.cpp
-  input/condorqxmlsaxhandler.cpp
-  input/identificationpwizreader.cpp
-  input/pepxmlsaxhandler.cpp
-  input/xpipsaxhandler.cpp
-  input/xtandemparamsaxhandler.cpp
-  input/xtandemsaxhandler.cpp
-  input/xtpxpipsaxhandler.cpp
-  output/mcqr/mcqrscprotein.cpp
-  output/mcqr/mcqrscpeptide.cpp
-  output/ods/ptm/ptmislandsheet.cpp
-  output/ods/ptm/ptmspectrasheet.cpp
-  output/ods/comparbasesheet.cpp
-  output/ods/comparspecificspectrasheet.cpp
-  output/ods/comparspectrabypeptide.cpp
-  output/ods/comparspectrasheet.cpp
-  output/ods/groupingsheet.cpp
-  output/ods/infosheet.cpp
-  output/ods/odsexport.cpp
-  output/ods/peptidepossheet.cpp
-  output/ods/peptidesheet.cpp
-  output/ods/proteinsheet.cpp
-  output/ods/qvaluessheet.cpp
-  output/ods/samplesheet.cpp
-  output/ods/simplesheet.cpp
-  output/ods/spectrasheet.cpp
-  output/ods/spectrasheetall.cpp
-  output/exportfastafile.cpp
-  output/masschroqml.cpp
-  output/masschroqprm.cpp
-  output/mcqrspectralcount.cpp
-  output/proticdbml.cpp
-  output/xpip.cpp
-  utils/fastafilestore.cpp
-  utils/identificationdatasourcestore.cpp
-  utils/groupstore.cpp
-  utils/httpversion.cpp
-  utils/msrunstatisticshandler.cpp
-  utils/msrunstore.cpp
-  utils/peptideevidencestore.cpp
-  utils/peptidestore.cpp
-  utils/proteinstore.cpp
-  utils/utils.cpp
-)
-
-# we need this to be able to include headers produced by uic in our code
-# (CMAKE_BINARY_DIR holds a path to the build directory, while INCLUDE_DIRECTORIES() works just like INCLUDEPATH from qmake)
-
-SET(XTPCPP_SRCS
-  ./gui/about_dialog/aboutdialog.cpp
-  ./gui/choose_modification_dialog/choosemodificationdialog.cpp
-  ./gui/edit/edit_alignment_param//masschroqparam.cpp
-  ./gui/edit/edit_label_methods/editlabelmethods.cpp
-  ./gui/edit/edit_modifications/editmodifications.cpp
-  ./gui/edit/edit_settings/editsettings.cpp
-  ./gui/edit/edit_tandem_preset_dialog/edittandempresetdialog.cpp
-  ./gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp
-  ./gui/export/export_masschroq_dialog/masschroqfileparameters.cpp
-  ./gui/export/export_spreadsheet_dialog/exportspreadsheetdialog.cpp
-  ./gui/load_results_dialog/loadresultsdialog.cpp
-  ./gui/lists/ms_identification_run_list_view/msidentificationlistwindow.cpp
-  ./gui/lists/ms_identification_run_list_view/msidentificationtablemodel.cpp
-  ./gui/lists/ms_identification_run_list_view/msidentificationtableproxymodel.cpp
-  ./gui/lists/ms_identification_run_list_view/ms_identification_worker/msidlistworkerstatus.cpp
-  ./gui/lists/ms_identification_run_list_view/engine_detail_view/enginedetailwindow.cpp
-  ./gui/mainwindow.cpp
-  ./gui/peptide_detail_view/peptidewindow.cpp
-  ./gui/peptide_list_view/peptidelistwindow.cpp
-  ./gui/peptide_list_view/peptidetablemodel.cpp
-  ./gui/peptide_list_view/peptidetableproxymodel.cpp
-  ./gui/project_view/identification_group_widget/identificationgroupwidget.cpp
-  ./gui/project_view/projectwindow.cpp
-  ./gui/protein_view/proteinwindow.cpp
-  ./gui/protein_list_view/proteinlistwindow.cpp
-  ./gui/protein_list_view/proteintablemodel.cpp
-  ./gui/protein_list_view/proteintableproxymodel.cpp
-  ./gui/ptm_island_list_view/ptmislandlistwindow.cpp
-  ./gui/ptm_island_list_view/ptmislandtablemodel.cpp
-  ./gui/ptm_island_list_view/ptmislandproxymodel.cpp
-  ./gui/ptm_peptide_list_view/ptmpeptidelistwindow.cpp
-  ./gui/ptm_peptide_list_view/ptmpeptidetablemodel.cpp
-  ./gui/ptm_peptide_list_view/ptmpeptidetableproxymodel.cpp
-  ./gui/ptm_peptide_list_view/ptmsequencedelegate.cpp
-  ./gui/tandem_run_dialog/tandemrundialog.cpp
-  ./gui/waiting_message_dialog/waitingmessagedialog.cpp
-  ./gui/widgets/Alignment_group_menu/alignmentgroupmenu.cpp
-  ./gui/widgets/automatic_filter_widget/automaticfilterwidget.cpp
-  ./gui/widgets/engines_view/xtandemparamwidget.cpp
-  ./gui/widgets/engines_view/noengineparamwidget.cpp
-  ./gui/widgets/contaminant_widget/contaminantwidget.cpp
-  ./gui/widgets/decoy_widget/decoywidget.cpp
-  ./gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp
-  ./gui/widgets/massitemdelegate.cpp
-  ./gui/xic_view/xic_box/xicbox.cpp
-  ./gui/xic_view/xic_widgets/zivydialog.cpp
-  ./gui/xic_view/xic_widgets/zivywidget.cpp
-  ./gui/xic_view/xicwindow.cpp
-  ./gui/xic_view/xicworkerthread.cpp
-  ./gui/workerthread.cpp
-  ./utils/workmonitor.cpp
-)
-
-SET (GUI_UIS
-  ./gui/about_dialog/about_dialog.ui
-  ./gui/choose_modification_dialog/choose_modification_dialog.ui
-  ./gui/edit/edit_alignment_param/masschroq_param_view.ui
-  ./gui/edit/edit_label_methods/edit_label_methods.ui
-  ./gui/edit/edit_modifications/edit_modifications.ui
-  ./gui/edit/edit_settings/edit_settings.ui
-  ./gui/edit/edit_tandem_preset_dialog/edit_tandem_preset_dialog.ui
-  ./gui/export/export_masschroq_dialog/export_masschroq_dialog.ui
-  ./gui/export/export_spreadsheet_dialog/export_spreadsheet_dialog.ui
-  ./gui/lists/ms_identification_run_list_view/ms_identification_run_view.ui
-  ./gui/lists/ms_identification_run_list_view/engine_detail_view/engine_detail_view.ui
-  ./gui/load_results_dialog/load_results_dialog.ui
-  ./gui/main.ui
-  ./gui/peptide_detail_view/peptide_detail_view.ui
-  ./gui/peptide_list_view/peptide_view.ui
-  ./gui/project_view/identification_group_widget/identification_group_widget.ui
-  ./gui/project_view/project_view.ui
-  ./gui/protein_list_view/protein_view.ui
-  ./gui/protein_view/protein_detail_view.ui
-  ./gui/ptm_island_list_view/ptm_island_list_view.ui
-  ./gui/ptm_peptide_list_view/ptm_peptide_list_view.ui
-  ./gui/tandem_run_dialog/tandem_run_dialog.ui
-  ./gui/waiting_message_dialog/waiting_message_dialog.ui
-  ./gui/widgets/automatic_filter_widget/automatic_filter_widget.ui
-  ./gui/widgets/engines_view/xtandem_view_widget.ui
-  ./gui/widgets/engines_view/no_engine_view_widget.ui
-  ./gui/widgets/contaminant_widget/contaminant_widget.ui
-  ./gui/widgets/decoy_widget/decoy_widget.ui
-  ./gui/xic_view/xic_box/xic_box.ui
-  ./gui/xic_view/xic_widgets/zivy_widget.ui
-  ./gui/xic_view/xic_window.ui
-)
-
-
-# this will run uic on .ui files:
-QT5_WRAP_UI( GUI_UI_HDRS ${GUI_UIS} )
-
-
-MESSAGE("XTPCPP_SRCS:  ${XTPCPP_SRCS}")
-
-
-ADD_EXECUTABLE(xtpcpp main.cpp ${CPP_FILES} ${XTPCPP_SRCS} ${GUI_UI_HDRS} ${xtpcpp_RCC_SRCS})
-
-target_include_directories (xtpcpp PUBLIC
-    ${Pwiz_INCLUDE_DIR}
-    ${Boost_INCLUDE_DIRS}
-    ${QCustomPlot_INCLUDES}
-    ${QUAZIP_INCLUDE_DIR}
-)
-
-target_compile_definitions(xtpcpp PUBLIC ${QT_DEFINITIONS})
-  SET_TARGET_PROPERTIES(xtpcpp
-    PROPERTIES OUTPUT_NAME xtpcpp
-    CLEAN_DIRECT_OUTPUT 1
-    #COMPILE_DEFINITIONS "${QT_DEFINITIONS}"
-    #INCLUDE_DIRECTORIES "${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}"
-    )
-if (MINGW)
-    target_compile_options(
-        xtpcpp PRIVATE -mwindows
-    )
-    set_target_properties(xtpcpp PROPERTIES LINK_FLAGS "-Wl,--subsystem,windows ${CMAKE_EXE_LINKER_FLAGS}")
-
-
-    target_link_libraries(xtpcpp
-        OdsStream::Core 
-        Pappso::Core
-        Pappso::Widget
-        ${Pwiz_LIBRARY}
-        ${QCustomPlot_LIBRARIES}
-        ${Boost_chrono_LIBRARY}
-        ${Boost_filesystem_LIBRARY}
-        ${Boost_iostreams_LIBRARY}
-        ${Boost_program_options_LIBRARY}
-        ${Boost_serialization_LIBRARY}
-        ${Boost_system_LIBRARY}
-        ${Boost_thread_LIBRARY}
-        ${ZLIB_LIBRARIES}
-        Qt5::Gui
-        Qt5::Xml
-        Qt5::Svg
-        Qt5::PrintSupport
-        Qt5::Network
-        Qt5::Sql
-    )
-else (MINGW)
-    target_link_libraries(xtpcpp
-        OdsStream::Core
-        Pappso::Core
-        Pappso::Widget
-        ${Pwiz_LIBRARY}
-        ${QCustomPlot_LIBRARIES}
-        Qt5::Core
-        Qt5::Gui
-        Qt5::Xml
-        Qt5::Svg
-        Qt5::PrintSupport
-        Qt5::Network
-        Qt5::Sql
-    )
-endif (MINGW)
-
-
-
-
-install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/xtpcpp DESTINATION bin)
-
-#configure_file (${CMAKE_SOURCE_DIR}/templates/share/applications/pt-peptideviewer.desktop.cmake ${CMAKE_BINARY_DIR}/templates/share/applications/pt-peptideviewer.desktop)
-
+# CMake script for xtpcpp
+# Author: Olivier Langella
+# Created: 03/03/2015
+
+
+SET(xtpcpp_RCCS xtpcpp.qrc)
+# Appeler automatique le moc quand nécessaire
+#SET(CMAKE_AUTOMOC ON)
+# Les fichiers générés par le moc sont générés dans le dossier bin, dire à CMake de toujours 	
+# inclure les entêtes de ce dossier
+#SET(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+
+find_package( Qt5 COMPONENTS Core Gui Svg Xml PrintSupport Sql Network Concurrent REQUIRED )
+QT5_ADD_RESOURCES(xtpcpp_RCC_SRCS ${xtpcpp_RCCS})
+
+if (QCustomPlot_FOUND)
+    MESSAGE("QCustomPlot_INCLUDES found ${QCustomPlot_INCLUDES}")
+else (QCustomPlot_FOUND)
+    FIND_PACKAGE( QCustomPlot REQUIRED )
+endif (QCustomPlot_FOUND)
+
+
+#sudo apt-get install libpappsomspp-dev
+if (PAPPSOMSPP_QT5_FOUND)
+else (PAPPSOMSPP_QT5_FOUND)
+    MESSAGE("looking for PAPPSOms++ library")
+	FIND_PACKAGE( Pappsomspp REQUIRED )
+endif (PAPPSOMSPP_QT5_FOUND)
+
+IF (PAPPSOMSPP_QT5_FOUND)
+ELSE (PAPPSOMSPP_QT5_FOUND)
+  MESSAGE("PAPPSOms++ library not found")
+  MESSAGE("did you apt-get install libpappsomspp-dev ?")
+ENDIF (PAPPSOMSPP_QT5_FOUND)
+
+IF (PAPPSOMSPP_WIDGET_QT5_FOUND)
+ELSE (PAPPSOMSPP_WIDGET_QT5_FOUND)
+  MESSAGE("PAPPSOms++ widget library not found")
+  MESSAGE("did you apt-get install libpappsomspp-widget-dev ?")
+ENDIF (PAPPSOMSPP_WIDGET_QT5_FOUND)
+
+MESSAGE("PAPPSOms++ library : ${PAPPSOMSPP_QT5_LIBRARY}")
+
+configure_file (${CMAKE_SOURCE_DIR}/src/config.h.cmake ${CMAKE_SOURCE_DIR}/src/config.h)
+
+# File list
+SET(CPP_FILES
+  core/automaticfilterparameters.cpp
+  core/identificationgroup.cpp
+  core/identification_sources/identificationdatasource.cpp
+  core/identification_sources/identificationmascotdatfile.cpp
+  core/identification_sources/identificationpepxmlfile.cpp
+  core/identification_sources/identificationpwizfile.cpp
+  core/identification_sources/identificationxtandemfile.cpp
+  core/labeling/label.cpp
+  core/labeling/labelingmethod.cpp
+  core/qvalue/computeqvalues.cpp
+  core/tandem_run/tandembatchprocess.cpp
+  core/tandem_run/tandemcondorprocess.cpp
+  core/tandem_run/tandemparameters.cpp
+  core/alignmentgroup.cpp
+  core/msrun.cpp
+  core/peptideevidence.cpp
+  core/peptidematch.cpp
+  core/peptidextp.cpp
+  core/project.cpp
+  core/proteinmatch.cpp
+  core/proteinxtp.cpp
+  core/sequencedatabase.cpp
+  files/fastafile.cpp
+  files/tandemparametersfile.cpp
+  files/xpipfile.cpp
+  grouping/groupingexperiment.cpp
+  grouping/groupinggroup.cpp
+  grouping/groupingpeptidemass.cpp
+  grouping/ptm/ptmgroupingexperiment.cpp
+  grouping/ptm/ptmisland.cpp
+  grouping/ptm/ptmislandgroup.cpp
+  grouping/ptm/ptmislandsubgroup.cpp
+  grouping/ptm/ptmsamplescan.cpp
+  input/mascot/mascotdatparser.cpp
+  input/mascot/mimeparser.cpp
+  input/condorqxmlsaxhandler.cpp
+  input/identificationpwizreader.cpp
+  input/pepxmlsaxhandler.cpp
+  input/xpipsaxhandler.cpp
+  input/xtandemparamsaxhandler.cpp
+  input/xtandemsaxhandler.cpp
+  input/xtpxpipsaxhandler.cpp
+  output/mcqr/mcqrscprotein.cpp
+  output/mcqr/mcqrscpeptide.cpp
+  output/ods/ptm/ptmislandsheet.cpp
+  output/ods/ptm/ptmspectrasheet.cpp
+  output/ods/comparbasesheet.cpp
+  output/ods/comparspecificspectrasheet.cpp
+  output/ods/comparspectrabypeptide.cpp
+  output/ods/comparspectrasheet.cpp
+  output/ods/groupingsheet.cpp
+  output/ods/infosheet.cpp
+  output/ods/odsexport.cpp
+  output/ods/peptidepossheet.cpp
+  output/ods/peptidesheet.cpp
+  output/ods/proteinsheet.cpp
+  output/ods/qvaluessheet.cpp
+  output/ods/samplesheet.cpp
+  output/ods/simplesheet.cpp
+  output/ods/spectrasheet.cpp
+  output/ods/spectrasheetall.cpp
+  output/exportfastafile.cpp
+  output/masschroqml.cpp
+  output/masschroqprm.cpp
+  output/mcqrspectralcount.cpp
+  output/proticdbml.cpp
+  output/xpip.cpp
+  utils/fastafilestore.cpp
+  utils/identificationdatasourcestore.cpp
+  utils/groupstore.cpp
+  utils/httpversion.cpp
+  utils/msrunstatisticshandler.cpp
+  utils/msrunstore.cpp
+  utils/peptideevidencestore.cpp
+  utils/peptidestore.cpp
+  utils/proteinstore.cpp
+  utils/utils.cpp
+)
+
+# we need this to be able to include headers produced by uic in our code
+# (CMAKE_BINARY_DIR holds a path to the build directory, while INCLUDE_DIRECTORIES() works just like INCLUDEPATH from qmake)
+
+SET(XTPCPP_SRCS
+  ./gui/about_dialog/aboutdialog.cpp
+  ./gui/choose_modification_dialog/choosemodificationdialog.cpp
+  ./gui/edit/edit_alignment_param//masschroqparam.cpp
+  ./gui/edit/edit_label_methods/editlabelmethods.cpp
+  ./gui/edit/edit_modifications/editmodifications.cpp
+  ./gui/edit/edit_settings/editsettings.cpp
+  ./gui/edit/edit_tandem_preset_dialog/edittandempresetdialog.cpp
+  ./gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp
+  ./gui/export/export_masschroq_dialog/masschroqfileparameters.cpp
+  ./gui/export/export_spreadsheet_dialog/exportspreadsheetdialog.cpp
+  ./gui/load_results_dialog/loadresultsdialog.cpp
+  ./gui/lists/ms_identification_run_list_view/msidentificationlistwindow.cpp
+  ./gui/lists/ms_identification_run_list_view/msidentificationtablemodel.cpp
+  ./gui/lists/ms_identification_run_list_view/msidentificationtableproxymodel.cpp
+  ./gui/lists/ms_identification_run_list_view/ms_identification_worker/msidlistworkerstatus.cpp
+  ./gui/lists/ms_identification_run_list_view/engine_detail_view/enginedetailwindow.cpp
+  ./gui/mainwindow.cpp
+  ./gui/peptide_detail_view/peptidewindow.cpp
+  ./gui/peptide_list_view/peptidelistwindow.cpp
+  ./gui/peptide_list_view/peptidetablemodel.cpp
+  ./gui/peptide_list_view/peptidetableproxymodel.cpp
+  ./gui/project_view/identification_group_widget/identificationgroupwidget.cpp
+  ./gui/project_view/projectwindow.cpp
+  ./gui/protein_view/proteinwindow.cpp
+  ./gui/protein_list_view/proteinlistwindow.cpp
+  ./gui/protein_list_view/proteintablemodel.cpp
+  ./gui/protein_list_view/proteintableproxymodel.cpp
+  ./gui/ptm_island_list_view/ptmislandlistwindow.cpp
+  ./gui/ptm_island_list_view/ptmislandtablemodel.cpp
+  ./gui/ptm_island_list_view/ptmislandproxymodel.cpp
+  ./gui/ptm_peptide_list_view/ptmpeptidelistwindow.cpp
+  ./gui/ptm_peptide_list_view/ptmpeptidetablemodel.cpp
+  ./gui/ptm_peptide_list_view/ptmpeptidetableproxymodel.cpp
+  ./gui/ptm_peptide_list_view/ptmsequencedelegate.cpp
+  ./gui/tandem_run_dialog/tandemrundialog.cpp
+  ./gui/waiting_message_dialog/waitingmessagedialog.cpp
+  ./gui/widgets/Alignment_group_menu/alignmentgroupmenu.cpp
+  ./gui/widgets/automatic_filter_widget/automaticfilterwidget.cpp
+  ./gui/widgets/engines_view/xtandemparamwidget.cpp
+  ./gui/widgets/engines_view/noengineparamwidget.cpp
+  ./gui/widgets/contaminant_widget/contaminantwidget.cpp
+  ./gui/widgets/decoy_widget/decoywidget.cpp
+  ./gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp
+  ./gui/widgets/massitemdelegate.cpp
+  ./gui/xic_view/xic_box/xicbox.cpp
+  ./gui/xic_view/xic_widgets/zivydialog.cpp
+  ./gui/xic_view/xic_widgets/zivywidget.cpp
+  ./gui/xic_view/xicwindow.cpp
+  ./gui/xic_view/xicworkerthread.cpp
+  ./gui/workerthread.cpp
+  ./utils/workmonitor.cpp
+)
+
+SET (GUI_UIS
+  ./gui/about_dialog/about_dialog.ui
+  ./gui/choose_modification_dialog/choose_modification_dialog.ui
+  ./gui/edit/edit_alignment_param/masschroq_param_view.ui
+  ./gui/edit/edit_label_methods/edit_label_methods.ui
+  ./gui/edit/edit_modifications/edit_modifications.ui
+  ./gui/edit/edit_settings/edit_settings.ui
+  ./gui/edit/edit_tandem_preset_dialog/edit_tandem_preset_dialog.ui
+  ./gui/export/export_masschroq_dialog/export_masschroq_dialog.ui
+  ./gui/export/export_spreadsheet_dialog/export_spreadsheet_dialog.ui
+  ./gui/lists/ms_identification_run_list_view/ms_identification_run_view.ui
+  ./gui/lists/ms_identification_run_list_view/engine_detail_view/engine_detail_view.ui
+  ./gui/load_results_dialog/load_results_dialog.ui
+  ./gui/main.ui
+  ./gui/peptide_detail_view/peptide_detail_view.ui
+  ./gui/peptide_list_view/peptide_view.ui
+  ./gui/project_view/identification_group_widget/identification_group_widget.ui
+  ./gui/project_view/project_view.ui
+  ./gui/protein_list_view/protein_view.ui
+  ./gui/protein_view/protein_detail_view.ui
+  ./gui/ptm_island_list_view/ptm_island_list_view.ui
+  ./gui/ptm_peptide_list_view/ptm_peptide_list_view.ui
+  ./gui/tandem_run_dialog/tandem_run_dialog.ui
+  ./gui/waiting_message_dialog/waiting_message_dialog.ui
+  ./gui/widgets/automatic_filter_widget/automatic_filter_widget.ui
+  ./gui/widgets/engines_view/xtandem_view_widget.ui
+  ./gui/widgets/engines_view/no_engine_view_widget.ui
+  ./gui/widgets/contaminant_widget/contaminant_widget.ui
+  ./gui/widgets/decoy_widget/decoy_widget.ui
+  ./gui/xic_view/xic_box/xic_box.ui
+  ./gui/xic_view/xic_widgets/zivy_widget.ui
+  ./gui/xic_view/xic_window.ui
+)
+
+
+# this will run uic on .ui files:
+QT5_WRAP_UI( GUI_UI_HDRS ${GUI_UIS} )
+
+
+MESSAGE("XTPCPP_SRCS:  ${XTPCPP_SRCS}")
+
+
+ADD_EXECUTABLE(xtpcpp main.cpp ${CPP_FILES} ${XTPCPP_SRCS} ${GUI_UI_HDRS} ${xtpcpp_RCC_SRCS})
+
+target_include_directories (xtpcpp PUBLIC
+    ${Pwiz_INCLUDE_DIR}
+    ${QCustomPlot_INCLUDES}
+    ${QUAZIP_INCLUDE_DIR}
+)
+
+target_compile_definitions(xtpcpp PUBLIC ${QT_DEFINITIONS})
+  SET_TARGET_PROPERTIES(xtpcpp
+    PROPERTIES OUTPUT_NAME xtpcpp
+    CLEAN_DIRECT_OUTPUT 1
+    #COMPILE_DEFINITIONS "${QT_DEFINITIONS}"
+    #INCLUDE_DIRECTORIES "${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}"
+    )
+if (MINGW)
+    target_compile_options(
+        xtpcpp PRIVATE -mwindows
+    )
+    set_target_properties(xtpcpp PROPERTIES LINK_FLAGS "-Wl,--subsystem,windows ${CMAKE_EXE_LINKER_FLAGS}")
+
+
+    target_link_libraries(xtpcpp
+        OdsStream::Core 
+        Pappso::Core
+        Pappso::Widget
+        ${Pwiz_LIBRARY}
+        ${QCustomPlot_LIBRARIES}
+        ${ZLIB_LIBRARIES}
+        Qt5::Gui
+        Qt5::Xml
+        Qt5::Svg
+        Qt5::PrintSupport
+        Qt5::Network
+        Qt5::Sql
+        Qt5::Concurrent
+        Boost::thread
+        Boost::filesystem
+        Boost::iostreams
+        ZLIB::ZLIB
+        Alglib::Alglib
+        Zstd::Zstd
+    )
+else (MINGW)
+    target_link_libraries(xtpcpp
+        OdsStream::Core
+        Pappso::Core
+        Pappso::Widget
+        ${Pwiz_LIBRARY}
+        ${QCustomPlot_LIBRARIES}
+        Qt5::Core
+        Qt5::Gui
+        Qt5::Xml
+        Qt5::Svg
+        Qt5::PrintSupport
+        Qt5::Network
+        Qt5::Sql
+        Qt5::Concurrent
+        Boost::thread
+        Boost::filesystem
+        Boost::iostreams
+        ZLIB::ZLIB
+        Alglib::Alglib
+        Zstd::Zstd
+    )
+endif (MINGW)
+
+
+
+
+install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/xtpcpp DESTINATION bin)
+
+#configure_file (${CMAKE_SOURCE_DIR}/templates/share/applications/pt-peptideviewer.desktop.cmake ${CMAKE_BINARY_DIR}/templates/share/applications/pt-peptideviewer.desktop)
+
diff --git a/src/core/identification_sources/identificationdatasource.cpp b/src/core/identification_sources/identificationdatasource.cpp
index 9c3af1f60efeda93b74efb2b8a45dddb9535e7c6..188c58c9a5426dae7373318f4c9a4f5cd9ef6ff0 100644
--- a/src/core/identification_sources/identificationdatasource.cpp
+++ b/src/core/identification_sources/identificationdatasource.cpp
@@ -181,7 +181,7 @@ IdentificationDataSource::getIdentificationEngineParam(
     {
       return _params.at(param);
     }
-  catch(std::out_of_range)
+  catch(std::out_of_range &std_error)
     {
       return QVariant();
     }
@@ -202,7 +202,7 @@ IdentificationDataSource::getIdentificationEngineStatistics(
     {
       return _param_stats.at(param);
     }
-  catch(std::out_of_range)
+  catch(std::out_of_range &std_error)
     {
       return QVariant();
     }
@@ -270,7 +270,7 @@ IdentificationDataSource::getFastaFileList() const
   return _fastafile_list;
 }
 
-const bool
+bool
 IdentificationDataSource::isValid(
   const PeptideEvidence *p_peptide_evidence,
   const AutomaticFilterParameters &automatic_filter_parameters) const
diff --git a/src/core/identification_sources/identificationdatasource.h b/src/core/identification_sources/identificationdatasource.h
index a6b1793f1e32aae7faa010cdba88010b5060ef4d..1fe886ecb55b0fdf5700310c89a564e03296a154 100644
--- a/src/core/identification_sources/identificationdatasource.h
+++ b/src/core/identification_sources/identificationdatasource.h
@@ -131,7 +131,7 @@ class IdentificationDataSource
   virtual const std::map<IdentificationEngineParam, QVariant> &
   getIdentificationEngineParamMap() const;
 
-  virtual const bool
+  virtual bool
   isValid(const PeptideEvidence *p_peptide_evidence,
           const AutomaticFilterParameters &automatic_filter_parameters) const;
 
diff --git a/src/core/labeling/label.cpp b/src/core/labeling/label.cpp
index 85b8963994897acd639f436aee47f2801da6e676..fcb46cb8eeea877b13c70c0ca2d1f0370ed395b3 100644
--- a/src/core/labeling/label.cpp
+++ b/src/core/labeling/label.cpp
@@ -65,7 +65,7 @@ Label::Label(QDomNode &label_node)
           child = child.nextSibling();
         }
     }
-  catch(pappso::PappsoException error)
+  catch(pappso::PappsoException &error)
     {
       throw pappso::PappsoException(
         QObject::tr("error creating Label : %1").arg(error.qwhat()));
diff --git a/src/core/msrun.cpp b/src/core/msrun.cpp
index 14d49883db0907cc8e934cedfa00328bcc407a3f..2c9ee3d6a48678236030eb7ba0b2e13f4dd6c7d0 100644
--- a/src/core/msrun.cpp
+++ b/src/core/msrun.cpp
@@ -160,7 +160,7 @@ MsRun::getMsRunStatistics(MsRunStatistics param) const
     {
       return _param_stats.at(param);
     }
-  catch(std::out_of_range)
+  catch(std::out_of_range &std_error)
     {
       return QVariant();
     }
@@ -353,7 +353,8 @@ MsRun::checkMsRunStatisticsForTdf(MsRunStatisticsHandler *currentHandler)
           else
             {
               setMsRunStatistics(MsRunStatistics::total_spectra, "NA");
-              //not the number of MS1 or MS2 but the number of scans and precursors.
+              // not the number of MS1 or MS2 but the number of scans and
+              // precursors.
               // Compute from th mobillity results
               setMsRunStatistics(
                 MsRunStatistics::total_spectra_ms1,
diff --git a/src/core/peptideevidence.cpp b/src/core/peptideevidence.cpp
index c880a82b0376b9b7af87c9238a8e2119d380f909..472d618de9504eadd80a9afde02ac42121ddc673 100644
--- a/src/core/peptideevidence.cpp
+++ b/src/core/peptideevidence.cpp
@@ -65,6 +65,10 @@ PeptideEvidence::PeptideEvidence(const PeptideEvidence &other)
   m_scan_number            = other.m_scan_number;
 }
 
+PeptideEvidence::~PeptideEvidence()
+{
+}
+
 pappso::pappso_double
 PeptideEvidence::getTheoreticalMz() const
 {
@@ -144,7 +148,7 @@ PeptideEvidence::getParam(PeptideEvidenceParam param) const
     {
       return _params.at(param);
     }
-  catch(std::out_of_range)
+  catch(std::out_of_range &std_error)
     {
       return QVariant();
     }
diff --git a/src/core/peptideevidence.h b/src/core/peptideevidence.h
index dba6ccf3a78c70fd33732fcd568a9cdad2f1bc47..8cd797ea9a4b2ba758196f16281f5050d6c11088 100644
--- a/src/core/peptideevidence.h
+++ b/src/core/peptideevidence.h
@@ -50,6 +50,7 @@ class PeptideEvidence
   public:
   PeptideEvidence(MsRun *msrunid_sp, std::size_t scan_index);
   PeptideEvidence(const PeptideEvidence &other);
+  virtual ~PeptideEvidence();
   std::size_t getHashSampleScan() const;
   std::size_t getHashPeptideMassSample() const;
 
diff --git a/src/core/project.cpp b/src/core/project.cpp
index e09cdf703d9f786951a8d52b44d09806222b1d67..898039a8d202294bf5db7a23051a9beb75395bf0 100644
--- a/src/core/project.cpp
+++ b/src/core/project.cpp
@@ -58,7 +58,7 @@ Project::readResultFile(QString filename)
   qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
 }
 
-const ProjectMode
+ProjectMode
 Project::getProjectMode() const
 {
   return _project_mode;
@@ -79,7 +79,7 @@ Project::getIdentificationGroupList() const
 {
   return _identification_goup_list;
 }
-const GroupingType
+GroupingType
 Project::getGroupingType() const
 {
   return m_groupingType;
diff --git a/src/core/project.h b/src/core/project.h
index aa2782559ad20d6a8f7e039add52e5dcd3959370..ae26b2e3533af176813e1a641a7a810e47f4ff1c 100644
--- a/src/core/project.h
+++ b/src/core/project.h
@@ -68,11 +68,11 @@ class Project
   const AutomaticFilterParameters &getAutomaticFilterParameters() const;
   void startGrouping(WorkMonitorInterface *p_work_monitor);
 
-  const GroupingType getGroupingType() const;
+  GroupingType getGroupingType() const;
   ContaminantRemovalMode getContaminantRemovalMode() const;
   void
   setContaminantRemovalMode(ContaminantRemovalMode contaminant_removal_mode);
-  const ProjectMode getProjectMode() const;
+  ProjectMode getProjectMode() const;
   void setProjectMode(ProjectMode mode);
   void setProjectName(const QString &name);
   QString getProjectName();
diff --git a/src/core/proteinmatch.cpp b/src/core/proteinmatch.cpp
index 520ebcb1debdf34366ad15eadc1262a85baf9d73..e2bf2a8d97f6a11127a86719267a64bfe8848b9f 100644
--- a/src/core/proteinmatch.cpp
+++ b/src/core/proteinmatch.cpp
@@ -604,7 +604,7 @@ ProteinMatch::getProtoNsaf(const MsRun *sp_msrun_id, const Label *p_label) const
         (pappso::pappso_double)_protein_sp.get()->size();
       return proto_nsaf;
     }
-  catch(pappso::PappsoException error)
+  catch(pappso::PappsoException &error)
     {
       throw pappso::PappsoException(
         QObject::tr("Error computing proto NSAF for protein %1 :\n%2")
@@ -624,7 +624,7 @@ ProteinMatch::getPAI(const MsRun *sp_msrun_id, const Label *p_label) const
         (pappso::pappso_double)_protein_sp.get()->countTrypticPeptidesForPAI();
       return PAI;
     }
-  catch(pappso::PappsoException error)
+  catch(pappso::PappsoException &error)
     {
       throw pappso::PappsoException(
         QObject::tr("Error computing PAI for protein %1 :\n%2")
diff --git a/src/core/tandem_run/tandemcondorprocess.cpp b/src/core/tandem_run/tandemcondorprocess.cpp
index b8fb25621eae5f03bc5f3c50be9bf0ccf1d9de06..12922972ec68185dac10b462b605c500f4486528 100644
--- a/src/core/tandem_run/tandemcondorprocess.cpp
+++ b/src/core/tandem_run/tandemcondorprocess.cpp
@@ -373,13 +373,13 @@ TandemCondorProcess::run()
               .arg(arguments.join(" ").arg(result.data())));
         }
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       throw pappso::PappsoException(
         QObject::tr("error launching X!Tandem condor jobs :\n%1")
           .arg(exception_pappso.qwhat()));
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       throw pappso::PappsoException(
         QObject::tr(
@@ -471,13 +471,13 @@ TandemCondorProcess::condorRemoveJob()
 
       pjob = condor_q_process.readAllStandardOutput();
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       throw pappso::PappsoException(
         QObject::tr("error removing condor jobs :\n%1")
           .arg(exception_pappso.qwhat()));
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       throw pappso::PappsoException(
         QObject::tr("error removing condor jobs (std::exception):\n%1")
@@ -556,13 +556,13 @@ TandemCondorProcess::getCondorJobState()
             QObject::tr("HTCondor condor_q process failed :\n%1").arg(pjob));
         }
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       throw pappso::PappsoException(
         QObject::tr("error watching condor status :\n%1")
           .arg(exception_pappso.qwhat()));
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       throw pappso::PappsoException(
         QObject::tr("error watching condor status (std::exception):\n%1")
@@ -603,13 +603,13 @@ TandemCondorProcess::parseCondorQueue(QString &condor_q_xml)
         }
       delete parser;
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       throw pappso::PappsoException(
         QObject::tr("error parsing condor queue :\n%1")
           .arg(exception_pappso.qwhat()));
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       throw pappso::PappsoException(
         QObject::tr("error parsing condor queue (std::exception):\n%1")
diff --git a/src/gui/edit/edit_alignment_param/masschroqparam.cpp b/src/gui/edit/edit_alignment_param/masschroqparam.cpp
index a34f30a3bd9e67b678a79dff9cee514b2bd1dc90..7e17b333a5708e4857204dd361c71d4208fad105 100644
--- a/src/gui/edit/edit_alignment_param/masschroqparam.cpp
+++ b/src/gui/edit/edit_alignment_param/masschroqparam.cpp
@@ -119,7 +119,7 @@ MassChroQParamWindow::doBestMsRunFound(MsRunSp msrun_sp)
           ui->reference_line->setText(msrun_sp->getSampleName());
         }
     }
-  catch(pappso::PappsoException e)
+  catch(pappso::PappsoException &e)
     {
     }
 }
diff --git a/src/gui/lists/ms_identification_run_list_view/msidentificationtableproxymodel.cpp b/src/gui/lists/ms_identification_run_list_view/msidentificationtableproxymodel.cpp
index 4d84f8c99ffe768b0ffd54209bbf97209d65ba6e..d5ae73b6a2a23c4473fc4092b602b9fb587800d4 100644
--- a/src/gui/lists/ms_identification_run_list_view/msidentificationtableproxymodel.cpp
+++ b/src/gui/lists/ms_identification_run_list_view/msidentificationtableproxymodel.cpp
@@ -110,7 +110,7 @@ MsIdentificationTableProxyModel::filterAcceptsRow(
         }
     }
 
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       // QMessageBox::warning(this,
       //                     tr("Error in ProteinTableModel::acceptRow :"),
@@ -118,7 +118,7 @@ MsIdentificationTableProxyModel::filterAcceptsRow(
       qDebug() << "Error in ProteinTableModel::acceptRow :"
                << exception_pappso.qwhat();
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       // QMessageBox::warning(this,
       //                    tr("Error in ProteinTableModel::acceptRow :"),
diff --git a/src/gui/peptide_detail_view/peptidewindow.cpp b/src/gui/peptide_detail_view/peptidewindow.cpp
index 94a7d8264207e1905ecae1993095c79b4fac1aca..e4dc699cfa2798a0d9fab8bad3127d6251f3691a 100644
--- a/src/gui/peptide_detail_view/peptidewindow.cpp
+++ b/src/gui/peptide_detail_view/peptidewindow.cpp
@@ -286,13 +286,13 @@ PeptideWindow::updateDisplay()
       ui->retention_time_min_label->setText(
         QString::number(_p_peptide_evidence->getRetentionTime() / 60, 'f', 2));
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       QMessageBox::warning(this,
                            tr("Unable to display peptide details :"),
                            exception_pappso.qwhat());
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       QMessageBox::warning(
         this, tr("Unable to display peptide details :"), exception_std.what());
diff --git a/src/gui/peptide_list_view/peptidetableproxymodel.cpp b/src/gui/peptide_list_view/peptidetableproxymodel.cpp
index b7685c0878c956c3e90653f2bf2cfa162e819433..584a6ddc3400c59c2443131764bdd834858327ea 100644
--- a/src/gui/peptide_list_view/peptidetableproxymodel.cpp
+++ b/src/gui/peptide_list_view/peptidetableproxymodel.cpp
@@ -237,7 +237,7 @@ PeptideTableProxyModel::filterAcceptsRow(int source_row,
       return true;
     }
 
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       // QMessageBox::warning(this,
       //                     tr("Error in ProteinTableModel::acceptRow :"),
@@ -245,7 +245,7 @@ PeptideTableProxyModel::filterAcceptsRow(int source_row,
       qDebug() << "Error in PeptideTableProxyModel::acceptRow :"
                << exception_pappso.qwhat();
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       // QMessageBox::warning(this,
       //                    tr("Error in ProteinTableModel::acceptRow :"),
diff --git a/src/gui/project_view/projectwindow.cpp b/src/gui/project_view/projectwindow.cpp
index f067e4954088fa2810d0a5ff1e4e741aeba8d67a..099f254a86517c5c48c75f17e053e12b2a8b225b 100644
--- a/src/gui/project_view/projectwindow.cpp
+++ b/src/gui/project_view/projectwindow.cpp
@@ -256,12 +256,12 @@ ProjectWindow::refreshPtmGroup(IdentificationGroup *p_ident_group)
         {
           emit identificationPtmGroupGrouped(p_ident_group);
         }
-      catch(pappso::PappsoException exception_pappso)
+      catch(pappso::PappsoException &exception_pappso)
         {
           QMessageBox::warning(
             this, tr("Unable to display project :"), exception_pappso.qwhat());
         }
-      catch(std::exception exception_std)
+      catch(std::exception &exception_std)
         {
           QMessageBox::warning(
             this, tr("Unable to display project :"), exception_std.what());
@@ -284,12 +284,12 @@ ProjectWindow::refreshGroup(IdentificationGroup *p_ident_group)
         {
           emit identificationGroupGrouped(p_ident_group);
         }
-      catch(pappso::PappsoException exception_pappso)
+      catch(pappso::PappsoException &exception_pappso)
         {
           QMessageBox::warning(
             this, tr("Unable to display project :"), exception_pappso.qwhat());
         }
-      catch(std::exception exception_std)
+      catch(std::exception &exception_std)
         {
           QMessageBox::warning(
             this, tr("Unable to display project :"), exception_std.what());
@@ -337,12 +337,12 @@ ProjectWindow::computeFdr()
         'f',
         4)));
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       QMessageBox::warning(
         this, tr("Unable to compute FDR :"), exception_pappso.qwhat());
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       QMessageBox::warning(
         this, tr("Unable to compute FDR :"), exception_std.what());
@@ -425,7 +425,7 @@ ProjectWindow::computeMassPrecision()
       ui->mass_histogram_widget->rescaleAxes();
       ui->mass_histogram_widget->replot();
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       ui->mass_precision_mean_label->setText("0");
       ui->mass_precision_median_label->setText("0");
@@ -434,7 +434,7 @@ ProjectWindow::computeMassPrecision()
                            tr("Unable to compute mass precision :"),
                            exception_pappso.qwhat());
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       ui->mass_precision_mean_label->setText("0");
       ui->mass_precision_median_label->setText("0");
@@ -1016,13 +1016,13 @@ ProjectWindow::doApplyDecoy()
       emit operateGrouping(_project_sp);
       emit projectStatusChanged();
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       hideWaitingMessage();
       QMessageBox::warning(
         this, tr("Error filtering results :"), exception_pappso.qwhat());
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       hideWaitingMessage();
       QMessageBox::warning(
@@ -1045,13 +1045,13 @@ ProjectWindow::doComputePsmQvalues()
       qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
       hideWaitingMessage();
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       hideWaitingMessage();
       QMessageBox::warning(
         this, tr("Error filtering results :"), exception_pappso.qwhat());
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       hideWaitingMessage();
       QMessageBox::warning(
@@ -1080,13 +1080,13 @@ ProjectWindow::doApplyFilter()
       emit operateGrouping(_project_sp);
       emit projectStatusChanged();
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       hideWaitingMessage();
       QMessageBox::warning(
         this, tr("Error filtering results :"), exception_pappso.qwhat());
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       hideWaitingMessage();
       QMessageBox::warning(
diff --git a/src/gui/protein_list_view/proteintableproxymodel.cpp b/src/gui/protein_list_view/proteintableproxymodel.cpp
index a0d2ff59418ff82b93da5d6373550347ad347ace..3ea4ba373d569425086afd60396f35722734984f 100644
--- a/src/gui/protein_list_view/proteintableproxymodel.cpp
+++ b/src/gui/protein_list_view/proteintableproxymodel.cpp
@@ -283,7 +283,7 @@ ProteinTableProxyModel::filterAcceptsRow(int source_row,
         }
     }
 
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       // QMessageBox::warning(this,
       //                     tr("Error in ProteinTableModel::acceptRow :"),
@@ -291,7 +291,7 @@ ProteinTableProxyModel::filterAcceptsRow(int source_row,
       qDebug() << "Error in ProteinTableModel::acceptRow :"
                << exception_pappso.qwhat();
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       // QMessageBox::warning(this,
       //                    tr("Error in ProteinTableModel::acceptRow :"),
diff --git a/src/gui/protein_view/proteinwindow.cpp b/src/gui/protein_view/proteinwindow.cpp
index d7b8d41feec45feec5dec7aa5db0628685476e0f..333f307c5cb28c214178879f0d567ceb1f5d7c14 100644
--- a/src/gui/protein_view/proteinwindow.cpp
+++ b/src/gui/protein_view/proteinwindow.cpp
@@ -186,13 +186,13 @@ ProteinWindow::updateDisplay()
                                   .arg(_p_protein_match->getEvalue())
                                   .arg(_p_protein_match->getLogEvalue()));
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       QMessageBox::warning(this,
                            tr("Unable to display protein details :"),
                            exception_pappso.qwhat());
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       QMessageBox::warning(
         this, tr("Unable to display protein details :"), exception_std.what());
diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
index d9634eeb5c654e8c6f98e386894e04a58393a24c..dfdeb4307284533b1b7a6166aa742e2d08fc66d0 100644
--- a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
@@ -138,7 +138,7 @@ PtmIslandProxyModel::filterAcceptsRow(int source_row,
       return false;
     }
 
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       // QMessageBox::warning(this,
       //                     tr("Error in ProteinTableModel::acceptRow :"),
@@ -146,7 +146,7 @@ PtmIslandProxyModel::filterAcceptsRow(int source_row,
       qDebug() << "Error in PtmIslandProxyModel::acceptRow :"
                << exception_pappso.qwhat();
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       // QMessageBox::warning(this,
       //                    tr("Error in ProteinTableModel::acceptRow :"),
diff --git a/src/gui/workerthread.cpp b/src/gui/workerthread.cpp
index ead578e6ddc43b96f3a2c93dcb50d0e48e6c25a1..3a82555dd91e18e0669d91c4b3e8db0c2955ef99 100644
--- a/src/gui/workerthread.cpp
+++ b/src/gui/workerthread.cpp
@@ -410,12 +410,12 @@ WorkerThread::doPtmGroupingOnIdentification(
         {
           p_identification_group->startPtmGrouping();
         }
-      catch(pappso::PappsoException exception_pappso)
+      catch(pappso::PappsoException &exception_pappso)
         {
           emit operationFailed(tr("Error computing PTM islands : %1")
                                  .arg(exception_pappso.qwhat()));
         }
-      catch(std::exception exception_std)
+      catch(std::exception &exception_std)
         {
           emit operationFailed(
             tr("Error computing PTM islands : %1").arg(exception_std.what()));
@@ -447,12 +447,12 @@ WorkerThread::doGroupingOnIdentification(
           p_identification_group->startGrouping(
             contaminant_removal_mode, grouping_type, _p_work_monitor);
         }
-      catch(pappso::PappsoException exception_pappso)
+      catch(pappso::PappsoException &exception_pappso)
         {
           emit operationFailed(tr("Error grouping identification : %1")
                                  .arg(exception_pappso.qwhat()));
         }
-      catch(std::exception exception_std)
+      catch(std::exception &exception_std)
         {
           emit operationFailed(
             tr("Error grouping identification : %1").arg(exception_std.what()));
@@ -477,12 +477,12 @@ WorkerThread::doGrouping(ProjectSp project_sp)
         {
           project_sp.get()->startGrouping(_p_work_monitor);
         }
-      catch(pappso::PappsoException exception_pappso)
+      catch(pappso::PappsoException &exception_pappso)
         {
           emit operationFailed(
             tr("Error grouping project : %1").arg(exception_pappso.qwhat()));
         }
-      catch(std::exception exception_std)
+      catch(std::exception &exception_std)
         {
           emit operationFailed(
             tr("Error grouping project : %1").arg(exception_std.what()));
diff --git a/src/input/condorqxmlsaxhandler.cpp b/src/input/condorqxmlsaxhandler.cpp
index 726e9b8b6f14625cc9aa756261bc6763cfb2eb6b..fcc95c2c1c6671335c119d2d60afcd8adf68d138 100644
--- a/src/input/condorqxmlsaxhandler.cpp
+++ b/src/input/condorqxmlsaxhandler.cpp
@@ -70,7 +70,7 @@ CondorQxmlSaxHandler::startElement(const QString &namespaceURI,
 
       _current_text.clear();
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _errorStr = QObject::tr(
                     "ERROR in CondorQxmlSaxHandler::startElement tag "
@@ -79,7 +79,7 @@ CondorQxmlSaxHandler::startElement(const QString &namespaceURI,
                     .arg(exception_pappso.qwhat());
       return false;
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _errorStr = QObject::tr(
                     "ERROR in CondorQxmlSaxHandler::startElement tag "
@@ -119,7 +119,7 @@ CondorQxmlSaxHandler::endElement(const QString &namespaceURI,
           is_ok = endElement_s();
         }
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _errorStr = QObject::tr(
                     "ERROR in CondorQxmlSaxHandler::endElement tag "
@@ -128,7 +128,7 @@ CondorQxmlSaxHandler::endElement(const QString &namespaceURI,
                     .arg(exception_pappso.qwhat());
       return false;
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _errorStr = QObject::tr(
                     "ERROR in CondorQxmlSaxHandler::endElement tag "
diff --git a/src/input/mascot/mascotdatparser.cpp b/src/input/mascot/mascotdatparser.cpp
index 071394ff504624aa6c179629fc50a72cc10ec246..b4eeeaf2046812af0fbda97dcaf373962af9b5bd 100644
--- a/src/input/mascot/mascotdatparser.cpp
+++ b/src/input/mascot/mascotdatparser.cpp
@@ -555,7 +555,7 @@ MascotDatParser::parsePeptidesLine(const QString &peptide_line)
         }
     }
 
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _error_str = QObject::tr(
                      "ERROR in MascotDatParser::parsePeptidesLine "
@@ -567,7 +567,7 @@ MascotDatParser::parsePeptidesLine(const QString &peptide_line)
       qDebug() << _error_str;
       throw pappso::PappsoException(_error_str);
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _error_str = QObject::tr(
                      "ERROR in MascotDatParser::parsePeptidesLine %1, std "
@@ -648,7 +648,7 @@ MascotDatParser::parseQueryLine(const QString &query_line)
        */
     }
 
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _error_str = QObject::tr(
                      "ERROR in MascotDatParser::parseQueryLine %1, PAPPSO "
@@ -658,7 +658,7 @@ MascotDatParser::parseQueryLine(const QString &query_line)
       qDebug() << _error_str;
       throw pappso::PappsoException(_error_str);
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _error_str =
         QObject::tr(
@@ -1011,7 +1011,7 @@ MascotDatParser::savePeptideList(std::vector<PeptideLine> &peptide_list,
         }
     }
 
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _error_str = QObject::tr(
                      "ERROR in MascotDatParser::savePeptideList "
@@ -1020,7 +1020,7 @@ MascotDatParser::savePeptideList(std::vector<PeptideLine> &peptide_list,
       qDebug() << _error_str;
       throw pappso::PappsoException(_error_str);
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _error_str = QObject::tr(
                      "ERROR in MascotDatParser::savePeptideList std "
diff --git a/src/input/pepxmlsaxhandler.cpp b/src/input/pepxmlsaxhandler.cpp
index b47dc86c3baa876f785f3ec1e85ff8dabf7b9d2b..3dffd12d43f15ed17cac79b829bc32f85cb49c7b 100644
--- a/src/input/pepxmlsaxhandler.cpp
+++ b/src/input/pepxmlsaxhandler.cpp
@@ -173,7 +173,7 @@ PepXmlSaxHandler::endElement(const QString &namespaceURI,
       // else if ((_tag_stack.size() > 1) &&
       //         (_tag_stack[_tag_stack.size() - 2] == "detection_moulon"))
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _errorStr = QObject::tr(
                     "ERROR in PepXmlSaxHandler::endElement tag %1, "
@@ -182,7 +182,7 @@ PepXmlSaxHandler::endElement(const QString &namespaceURI,
                     .arg(exception_pappso.qwhat());
       return false;
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _errorStr =
         QObject::tr(
@@ -332,7 +332,7 @@ PepXmlSaxHandler::startElement_spectrum_query(QXmlAttributes attributes)
 
 //<alternative_protein protein="sp|P46784|RS10B_YEAST" protein_descr="40S
 //       ribosomal protein S10-B OS=Saccharomyces cerevisiae (strain ATCC 204508
-//                                                     \
+//
 //S288c) GN=RPS10B PE=1 SV=1" num_tol_term="2" peptide_prev_aa="K"
 // peptide_next_aa="N"/>
 bool
diff --git a/src/input/xpipsaxhandler.cpp b/src/input/xpipsaxhandler.cpp
index 60b5f0238d14477a0bd355b12e9c0b0741945d3e..49201f967b04f6bae8f3f2bdf29574f5c493cd16 100644
--- a/src/input/xpipsaxhandler.cpp
+++ b/src/input/xpipsaxhandler.cpp
@@ -115,7 +115,7 @@ XpipSaxHandler::startElement(const QString &namespaceURI,
 
       _current_text.clear();
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _errorStr =
         QObject::tr(
@@ -124,7 +124,7 @@ XpipSaxHandler::startElement(const QString &namespaceURI,
           .arg(exception_pappso.qwhat());
       return false;
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _errorStr =
         QObject::tr(
@@ -171,7 +171,7 @@ XpipSaxHandler::endElement(const QString &namespaceURI,
       // else if ((_tag_stack.size() > 1) &&
       //         (_tag_stack[_tag_stack.size() - 2] == "detection_moulon"))
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _errorStr =
         QObject::tr(
@@ -180,7 +180,7 @@ XpipSaxHandler::endElement(const QString &namespaceURI,
           .arg(exception_pappso.qwhat());
       return false;
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _errorStr =
         QObject::tr(
diff --git a/src/input/xtandemparamsaxhandler.cpp b/src/input/xtandemparamsaxhandler.cpp
index e805807afb42dfd5338d6d1491bd8f2c4f1d99c9..fcc559b9f32085239a336e01d60439304bb17f0f 100644
--- a/src/input/xtandemparamsaxhandler.cpp
+++ b/src/input/xtandemparamsaxhandler.cpp
@@ -90,7 +90,7 @@ XtandemParamSaxHandler::startElement(const QString &namespaceURI,
         }
       _current_text.clear();
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _errorStr = QObject::tr(
                     "ERROR in XtandemParamSaxHandler::startElement "
@@ -99,7 +99,7 @@ XtandemParamSaxHandler::startElement(const QString &namespaceURI,
                     .arg(exception_pappso.qwhat());
       return false;
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _errorStr = QObject::tr(
                     "ERROR in XtandemParamSaxHandler::startElement "
@@ -127,7 +127,7 @@ XtandemParamSaxHandler::endElement(const QString &namespaceURI,
           is_ok = endElement_note();
         }
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _errorStr = QObject::tr(
                     "ERROR in XtandemParamSaxHandler::endElement tag "
@@ -136,7 +136,7 @@ XtandemParamSaxHandler::endElement(const QString &namespaceURI,
                     .arg(exception_pappso.qwhat());
       return false;
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _errorStr = QObject::tr(
                     "ERROR in XtandemParamSaxHandler::endElement tag "
diff --git a/src/input/xtpxpipsaxhandler.cpp b/src/input/xtpxpipsaxhandler.cpp
index a755348deedbe1d8d5664da8617ddb5a3f5422b8..d818d4c007b79916dcada7189e5438f2d12d5619 100644
--- a/src/input/xtpxpipsaxhandler.cpp
+++ b/src/input/xtpxpipsaxhandler.cpp
@@ -203,7 +203,7 @@ XtpXpipSaxHandler::startElement(const QString &namespaceURI,
 
       _current_text.clear();
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _errorStr = QObject::tr(
                     "ERROR in XtpXpipSaxHandler::startElement tag "
@@ -212,7 +212,7 @@ XtpXpipSaxHandler::startElement(const QString &namespaceURI,
                     .arg(exception_pappso.qwhat());
       return false;
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _errorStr =
         QObject::tr(
@@ -282,7 +282,7 @@ XtpXpipSaxHandler::endElement(const QString &namespaceURI,
       // else if ((_tag_stack.size() > 1) &&
       //         (_tag_stack[_tag_stack.size() - 2] == "detection_moulon"))
     }
-  catch(pappso::PappsoException exception_pappso)
+  catch(pappso::PappsoException &exception_pappso)
     {
       _errorStr = QObject::tr(
                     "ERROR in XtpXpipSaxHandler::endElement tag %1, "
@@ -291,7 +291,7 @@ XtpXpipSaxHandler::endElement(const QString &namespaceURI,
                     .arg(exception_pappso.qwhat());
       return false;
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       _errorStr =
         QObject::tr(
diff --git a/src/output/mcqr/mcqrscpeptide.cpp b/src/output/mcqr/mcqrscpeptide.cpp
index 8d9bca9bd6982f71d1b9ad9a355925b4c3477d0d..2327a08cacfb01f43341d2b619840845a4768d11 100644
--- a/src/output/mcqr/mcqrscpeptide.cpp
+++ b/src/output/mcqr/mcqrscpeptide.cpp
@@ -204,7 +204,7 @@ McqRscPeptide::writePeptidesInMsrun(
         }
       qDebug() << "McqRscPeptide::writePeptidesInMsrun end";
     }
-  catch(pappso::PappsoException error)
+  catch(pappso::PappsoException &error)
     {
       throw pappso::PappsoException(
         QObject::tr("Error writing scan count in msrun %1 :\n%2")
diff --git a/src/output/mcqr/mcqrscprotein.cpp b/src/output/mcqr/mcqrscprotein.cpp
index c6c34ce3c8212c6d5707f275f5364d16755e58ce..fb49cd012c731db99fffb1e8c6a12a56b60ebd91 100644
--- a/src/output/mcqr/mcqrscprotein.cpp
+++ b/src/output/mcqr/mcqrscprotein.cpp
@@ -140,7 +140,7 @@ McqRscProtein::writeOneProtein(const GroupingGroup *p_group,
         }
       qDebug() << "McqRscProtein::writeOneProtein end";
     }
-  catch(pappso::PappsoException error)
+  catch(pappso::PappsoException &error)
     {
       throw pappso::PappsoException(
         QObject::tr("Error writing protein %1 :\n%2")
diff --git a/src/output/mcqrspectralcount.cpp b/src/output/mcqrspectralcount.cpp
index 77fc580f0b586e5dfebd452ecfbdfc5930bb8403..dc5e1c2807032e5bb4a21bb4e7b9bb0bc8695d85 100644
--- a/src/output/mcqrspectralcount.cpp
+++ b/src/output/mcqrspectralcount.cpp
@@ -160,7 +160,7 @@ McqrSpectralCount::writeOneProtein(const GroupingGroup *p_group,
         }
       qDebug() << "McqrSpectralCount::writeOneProtein end";
     }
-  catch(pappso::PappsoException error)
+  catch(pappso::PappsoException &error)
     {
       throw pappso::PappsoException(
         QObject::tr("Error writing protein %1 :\n%2")
diff --git a/src/output/ods/proteinsheet.cpp b/src/output/ods/proteinsheet.cpp
index 87111d39110be0d4c80ea7fc340577f46e22b837..acc6b9908a9ad521ea55f3452a06db7f3dd2f8ed 100644
--- a/src/output/ods/proteinsheet.cpp
+++ b/src/output/ods/proteinsheet.cpp
@@ -248,7 +248,7 @@ ProteinSheet::writeOneProtein(const GroupingGroup *p_group,
 
       qDebug() << "ProteinSheet::writeOneProtein end";
     }
-  catch(pappso::PappsoException error)
+  catch(pappso::PappsoException &error)
     {
       throw pappso::PappsoException(
         QObject::tr("Error writing protein %1 :\n%2")
diff --git a/src/output/ods/ptm/ptmislandsheet.cpp b/src/output/ods/ptm/ptmislandsheet.cpp
index e6d9489f00d53cf0446998849266ad2ad59fba4f..535e2217377eb32c59bd16195169b1fe1873f8a2 100644
--- a/src/output/ods/ptm/ptmislandsheet.cpp
+++ b/src/output/ods/ptm/ptmislandsheet.cpp
@@ -217,7 +217,7 @@ PtmIslandSheet::writeOnePtmIsland(PtmIslandSp &sp_ptm_island)
 
       qDebug() << "ProteinSheet::writeOneProtein end";
     }
-  catch(pappso::PappsoException error)
+  catch(pappso::PappsoException &error)
     {
       throw pappso::PappsoException(
         QObject::tr("Error writing PTM island of protein %1 :\n%2")
diff --git a/src/output/xpip.cpp b/src/output/xpip.cpp
index aae02636f11a5a18864636076b8c89880bbe0944..66c6d312898fb82b9d0a7b9a6772b27e22ee549c 100644
--- a/src/output/xpip.cpp
+++ b/src/output/xpip.cpp
@@ -622,7 +622,7 @@ Xpip::writePeptideEvidence(const PeptideEvidence *p_peptide_evidence)
         "peptide_id",
         _map_peptides.at(p_peptide_evidence->getPeptideXtpSp().get()));
     }
-  catch(std::out_of_range exception_std)
+  catch(std::out_of_range &exception_std)
     {
       throw pappso::PappsoException(
         QObject::tr("ERROR in Xpip::writePeptideEvidence peptide %1 not found "
diff --git a/src/utils/msrunstatisticshandler.cpp b/src/utils/msrunstatisticshandler.cpp
index 23120773b0971a81c8208664e558c9c81f54d373..52ea990979b8d3f25e1fc95e51cbefbcaee6ccc6 100644
--- a/src/utils/msrunstatisticshandler.cpp
+++ b/src/utils/msrunstatisticshandler.cpp
@@ -30,7 +30,9 @@
 #include <pappsomspp/msrun/msrunreader.h>
 #include <QDebug>
 
-
+MsRunStatisticsHandler::~MsRunStatisticsHandler()
+{
+}
 bool
 MsRunStatisticsHandler::needPeakList() const
 {
diff --git a/src/utils/msrunstatisticshandler.h b/src/utils/msrunstatisticshandler.h
index 974545ecb75ba68892d0df449f3afeec2c49734a..eefeee9bd2a0ea7149a15176fd6a503d7f43f25d 100644
--- a/src/utils/msrunstatisticshandler.h
+++ b/src/utils/msrunstatisticshandler.h
@@ -34,6 +34,7 @@
 class MsRunStatisticsHandler : public pappso::SpectrumCollectionHandlerInterface
 {
   public:
+  virtual ~MsRunStatisticsHandler();
   virtual void setQualifiedMassSpectrum(
     const pappso::QualifiedMassSpectrum &qspectrum) override;
   virtual bool needPeakList() const override;
diff --git a/src/utils/utils.cpp b/src/utils/utils.cpp
index ff13342bf8d094d04ec3801d2214e646efd833b0..667c965a0727edba2dbfaa45fc987d410007a2f6 100644
--- a/src/utils/utils.cpp
+++ b/src/utils/utils.cpp
@@ -118,7 +118,7 @@ Utils::getHistogram(std::vector<pappso::pappso_double> data_values,
           histogram.at(i).second++;
         }
     }
-  catch(std::exception exception_std)
+  catch(std::exception &exception_std)
     {
       throw pappso::PappsoException(
         QObject::tr("Utils::getHistogram error %1").arg(exception_std.what()));
@@ -343,7 +343,7 @@ Utils::checkXtandemVersion(const QString &tandem_bin_path)
 }
 
 
-const double
+double
 Utils::computeFdr(std::size_t count_decoy, std::size_t count_target)
 {
   return ((double)count_decoy / (double)count_target);
diff --git a/src/utils/utils.h b/src/utils/utils.h
index e4ec72c5ad6944282a8a1d68184dc9a4ee53d5b1..7da00ffe0e434e861bc5379f860b4e291370af83 100644
--- a/src/utils/utils.h
+++ b/src/utils/utils.h
@@ -36,7 +36,7 @@ class Utils
   static const QString getDatabaseName(ExternalDatabase database);
   static const QString getXmlDouble(pappso::pappso_double number);
   static const QString checkXtandemVersion(const QString &tandem_bin_path);
-  static const double computeFdr(std::size_t count_decoy,
+  static double computeFdr(std::size_t count_decoy,
                                  std::size_t count_target);
   static pappso::AaModificationP
   guessAaModificationPbyMonoisotopicMassDelta(pappso::pappso_double mass);
diff --git a/win64/work.cmake b/win64/work.cmake
index 91f3501be74713e89f24f0de761dc2279ba7e4ad..7792f8a71470235deb88ca9185f182f3ddf4f8e6 100644
--- a/win64/work.cmake
+++ b/win64/work.cmake
@@ -9,8 +9,8 @@
 set(PAPPSOMSPP_QT5_FOUND 1)
 set(PAPPSOMSPP_WIDGET_QT5_FOUND 1)
 set(PAPPSOMSPP_INCLUDE_DIR "/home/langella/developpement/git/pappsomspp/src")
-set(PAPPSOMSPP_QT5_LIBRARY "/home/langella/developpement/git/pappsomspp/cbuild/src/libpappsomspp-qt5.so")
-set(PAPPSOMSPP_WIDGET_QT5_LIBRARY "/home/langella/developpement/git/pappsomspp/cbuild/src/pappsomspp/widget/libpappsomspp-widget-qt5.so")
+set(PAPPSOMSPP_QT5_LIBRARY "/home/langella/developpement/git/pappsomspp/cbuild/src/libpappsomspp.so")
+set(PAPPSOMSPP_WIDGET_QT5_LIBRARY "/home/langella/developpement/git/pappsomspp/cbuild/src/pappsomspp/widget/libpappsomspp-widget.so")