1- cmake_minimum_required (VERSION 3.15.0 )
1+ cmake_minimum_required (VERSION 3.17.0 )
2+
3+ if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.27.0" )
4+ cmake_policy (SET CMP0144 NEW ) # Remove once we set min cmake version accordingly
5+ endif ()
26
37set (PROJECT "DualAnalysisPlugin" )
48PROJECT (${PROJECT} )
59
6- include (FetchContent )
7- FetchContent_Declare (cmakesupport
8- GIT_REPOSITORY https://github.com/ManiVaultStudio/github-actions
9- GIT_TAG main
10- GIT_SHALLOW TRUE
11- SOURCE_SUBDIR CMakeSupport
12- )
13- FetchContent_MakeAvailable (cmakesupport)
1410
1511# -----------------------------------------------------------------------------
1612# User options
1713# -----------------------------------------------------------------------------
18- option (USE_ARTIFACTORY_LIBS "Use the prebuilt libraries from artifactory" ON )
19- option (ENABLE_AVX "Enable AVX support" OFF )
14+ option (MV_SNE_USE_ARTIFACTORY_LIBS "Use the prebuilt libraries from artifactory" ON )
15+ option (MV_SNE_USE_AVX "Enable AVX support" OFF )
2016option (MV_UNITY_BUILD "Combine target source files into batches for faster compilation" OFF )
21- set (OPTIMIZATION_LEVEL "2" CACHE STRING "Optimization level for all targets in release builds, e.g. 0, 1, 2" )
17+ set (MV_SNE_OPTIMIZATION_LEVEL "2" CACHE STRING "Optimization level for all targets in release builds, e.g. 0, 1, 2" )
2218
2319# -----------------------------------------------------------------------------
2420# CMake options
@@ -33,10 +29,9 @@ set(CMAKE_AUTOUIC ON)
3329# macros for linking both prebuilt artifactory libraries and locally built ones
3430include (CMakeLinkUtilities )
3531
36- # Test hardware avx capabilities
37- include (CMakeSetOptimizationAndAVX )
3832
39- include (InstallArtifactoryPackage )
33+ # set optimization in release mode
34+ include (CMakeSetOptimizationLevel )
4035
4136if (MSVC )
4237 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DWIN32 /EHsc /MP /permissive- /Zc:__cplusplus" )
@@ -49,20 +44,22 @@ endif(MSVC)
4944# -----------------------------------------------------------------------------
5045
5146set (LIBRARY_INSTALL_DIR ${PROJECT_BINARY_DIR} )
52- message (status "FetchContent: ${cmakesupport_SOURCE_DIR} ${cmakesupport_BINARY_DIR} " )
53- include ("${cmakesupport_SOURCE_DIR} /CMakeSupport/InstallArtifactoryPackage.cmake" )
5447if (USE_ARTIFACTORY_LIBS AND NOT DUAL_ANALYSIS_ARTIFACTORY_LIBS_INSTALLED)
5548 message (STATUS "Installing artifactory packages to: ${LIBRARY_INSTALL_DIR} " )
5649
57- set (HDILib_VERSION 1.2.7 )
50+ set (HDILib_VERSION 1.2.9 )
5851 set (flann_VERSION 1.9.2)
59- set (lz4_VERSION 1.9.3 )
52+ set (lz4_VERSION 1.10.0 )
6053
6154 # Both HDILib and flann are available prebuilt in the lkeb-artifactory as combined Debug/Release packages
6255 # lz4 is also available in the lkb-artifactory in separate Debug and |Release packages
6356 install_artifactory_package (HDILib ${HDILib_VERSION} biovault TRUE )
6457 install_artifactory_package (flann ${flann_VERSION} lkeb TRUE )
65- install_artifactory_package (lz4 ${lz4_VERSION} _ FALSE )
58+ install_artifactory_package (lz4 ${lz4_VERSION} lkeb TRUE )
59+
60+ set (lz4_ROOT "${LIBRARY_INSTALL_DIR} /lz4/lib/cmake/lz4" CACHE PATH "Location of lz4 cmake file" )
61+ set (flann_ROOT "${LIBRARY_INSTALL_DIR} /flann/lib/cmake/flann" CACHE PATH "Location of flann cmake file" )
62+ set (HDILIB_ROOT "${LIBRARY_INSTALL_DIR} /HDILib/lib/cmake/HDILib" CACHE PATH "Location of HDILib cmake file" )
6663
6764 message (STATUS "module path ${CMAKE_MODULE_PATH} " )
6865 message (STATUS "Call find_package HDILib search ${CMAKE_SOURCE_DIR} /HDILib/lib/cmake/HDILib" )
@@ -74,22 +71,51 @@ endif()
7471# -----------------------------------------------------------------------------
7572# Dependencies
7673# -----------------------------------------------------------------------------
74+ find_package (lz4 CONFIG )
75+ if (NOT ${lz4_FOUND} )
76+ find_package (PkgConfig REQUIRED )
77+
78+ pkg_check_modules (lz4 REQUIRED IMPORTED_TARGET liblz4 )
79+ set (LZ4_TARGET PkgConfig::lz4)
80+ endif ()
81+
82+ if (NOT ${lz4_FOUND} )
83+ message (FATAL_ERROR "lz4 NOT found" )
84+ endif ()
85+ message (STATUS "Found lz4 version ${lz4_VERSION} " )
86+
87+ find_package (flann CONFIG )
88+ if (NOT ${flann_FOUND} )
89+ find_package (PkgConfig REQUIRED )
90+
91+ pkg_check_modules (flann REQUIRED flann )
92+ set (FLANN_TARGET flann_cpp)
93+ set (flann_INCLUDE_DIR "${flann_INCLUDE_DIRS} /flann" )
94+ endif ()
95+
96+ if (NOT ${flann_FOUND} )
97+ message (FATAL_ERROR "flann NOT found" )
98+ endif ()
99+ message (STATUS "Found flann version ${flann_VERSION} " )
77100
78- if (USE_ARTIFACTORY_LIBS AND DUAL_ANALYSIS_ARTIFACTORY_LIBS_INSTALLED)
79- # If the HDILib_VERSION is not a x.y.z version number
80- # omit the version argument from find package
81- find_package (HDILib COMPONENTS hdidimensionalityreduction hdiutils hdidata PATHS "${LIBRARY_INSTALL_DIR} /HDILib" CONFIG REQUIRED )
82- else ()
83- if (NOT HDILIB_ROOT)
84- message (FATAL_ERROR "Define HDILIB_ROOT" )
85- endif ()
101+ if (NOT HDILIB_ROOT)
102+ message (FATAL_ERROR "Define HDILIB_ROOT" )
103+ endif ()
104+
105+ find_package (HDILib COMPONENTS hdidimensionalityreduction hdiutils hdidata CONFIG REQUIRED PATHS ${HDILIB_ROOT} )
106+
107+ if (${HDILib_FOUND} )
108+ message (STATUS "HDILib found at ${HDILIB_ROOT} with ${HDILib_LINK_LIBS} " )
109+ endif ()
86110
87- find_package (flann CONFIG REQUIRED )
88- find_package (HDILib COMPONENTS hdidimensionalityreduction hdiutils hdidata PATHS " ${HDILIB_ROOT} " CONFIG REQUIRED )
111+ find_package (OpenGL REQUIRED )
112+ find_package (OpenMP )
89113
90- message (STATUS "HDILib found at ${HDILIB_ROOT} with ${HDILib_LINK_LIBS} " )
114+ if (OpenMP_CXX_FOUND)
115+ message (STATUS "Found OpenMP" )
91116endif ()
92117
118+
93119find_package (Qt6 6.3.1 COMPONENTS Widgets WebEngineWidgets REQUIRED )
94120
95121find_package (ManiVault COMPONENTS Core PointData ImageData CONFIG )
@@ -198,14 +224,14 @@ target_include_directories(${PROJECT} PRIVATE "src/Common")
198224target_include_directories (${PROJECT} PRIVATE "third_party/json" )
199225
200226set_HDILib_project_includes (${PROJECT} )
201- set_flann_project_includes (${PROJECT} )
202- set_lz4_project_includes (${PROJECT} )
203227
204228# -----------------------------------------------------------------------------
205229# Target properties
206230# -----------------------------------------------------------------------------
207231# Request C++17
208- target_compile_features (${PROJECT} PRIVATE cxx_std_17 )
232+ set_target_properties (${PROJECT} PROPERTIES CXX_STANDARD 17 )
233+
234+ target_compile_definitions (${PROJECT} PRIVATE QT_MESSAGELOGCONTEXT )
209235
210236# Enable unity build
211237if (MV_UNITY_BUILD)
@@ -235,8 +261,8 @@ set_flann_project_link_libraries(${PROJECT})
235261set_HDILib_project_link_libraries (${PROJECT} )
236262set_lz4_project_link_libraries (${PROJECT} )
237263
238- set_optimization_level (${PROJECT} ${OPTIMIZATION_LEVEL } )
239- check_and_set_AVX (${PROJECT} ${ENABLE_AVX } )
264+ set_optimization_level (${PROJECT} ${MV_SNE_OPTIMIZATION_LEVEL } )
265+ mv_check_and_set_AVX (${PROJECT} ${MV_SNE_USE_AVX } )
240266
241267silence_opengl_deprecation (${PROJECT} )
242268
@@ -257,6 +283,11 @@ add_custom_command(TARGET ${PROJECT} POST_BUILD
257283 --prefix ${ManiVault_INSTALL_DIR} /$<CONFIGURATION>
258284)
259285
286+ set_target_properties (${PROJECT}
287+ PROPERTIES
288+ FOLDER AnalysisPlugins
289+ )
290+
260291# -----------------------------------------------------------------------------
261292# Miscellaneous
262293# -----------------------------------------------------------------------------
0 commit comments