1- cmake_minimum_required (VERSION 3.17.0 )
1+ cmake_minimum_required (VERSION 3.22 )
22
33if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.27.0" )
44 cmake_policy (SET CMP0144 NEW ) # Remove once we set min cmake version accordingly
@@ -11,10 +11,10 @@ PROJECT(${PROJECT})
1111# -----------------------------------------------------------------------------
1212# User options
1313# -----------------------------------------------------------------------------
14- option (MV_SNE_USE_ARTIFACTORY_LIBS "Use the prebuilt libraries from artifactory" ON )
15- option (MV_SNE_USE_AVX "Enable AVX support" OFF )
14+ option (MV_DUAL_USE_ARTIFACTORY_LIBS "Use the prebuilt libraries from artifactory" ON )
15+ option (MV_DUAL_USE_AVX "Enable AVX support" OFF )
1616option (MV_UNITY_BUILD "Combine target source files into batches for faster compilation" OFF )
17- set (MV_SNE_OPTIMIZATION_LEVEL "2" CACHE STRING "Optimization level for all targets in release builds, e.g. 0, 1, 2" )
17+ set (MV_DUAL_OPTIMIZATION_LEVEL "2" CACHE STRING "Optimization level for all targets in release builds, e.g. 0, 1, 2" )
1818
1919# -----------------------------------------------------------------------------
2020# CMake options
@@ -36,41 +36,58 @@ include(CMakeSetOptimizationLevel)
3636if (MSVC )
3737 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DWIN32 /EHsc /MP /permissive- /Zc:__cplusplus" )
3838 set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd" )
39+ set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MD" )
3940 set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD" )
4041endif (MSVC )
4142
4243# -----------------------------------------------------------------------------
4344# Install dependency libraries
4445# -----------------------------------------------------------------------------
4546
46- set (LIBRARY_INSTALL_DIR ${PROJECT_BINARY_DIR} )
47- if (USE_ARTIFACTORY_LIBS AND NOT DUAL_ANALYSIS_ARTIFACTORY_LIBS_INSTALLED)
48- message (STATUS "Installing artifactory packages to: ${LIBRARY_INSTALL_DIR} " )
47+ if (MV_DUAL_USE_ARTIFACTORY_LIBS)
48+ set (LIBRARY_INSTALL_DIR ${PROJECT_BINARY_DIR} )
49+
50+ if (NOT DUAL_ANALYSIS_ARTIFACTORY_LIBS_INSTALLED)
51+ message (STATUS "Installing artifactory packages to: ${LIBRARY_INSTALL_DIR} " )
4952
50- set (HDILib_VERSION 1.2.9 )
51- set (flann_VERSION 1.9.2)
52- set (lz4_VERSION 1.10.0)
53+ set (HDILib_VERSION 1.2.10 )
54+ set (flann_VERSION 1.9.2)
55+ set (lz4_VERSION 1.10.0)
5356
54- # Both HDILib and flann are available prebuilt in the lkeb-artifactory as combined Debug/Release packages
55- # lz4 is also available in the lkb-artifactory in separate Debug and |Release packages
56- install_artifactory_package (HDILib ${HDILib_VERSION} biovault TRUE )
57- install_artifactory_package (flann ${flann_VERSION} lkeb TRUE )
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" )
57+ include (FetchContent )
58+ FetchContent_Declare (cmakesupport
59+ GIT_REPOSITORY https://github.com/ManiVaultStudio/github-actions
60+ GIT_TAG main
61+ GIT_SHALLOW TRUE
62+ SOURCE_SUBDIR CMakeSupport
63+ )
64+ FetchContent_MakeAvailable (cmakesupport)
65+
66+ message (STATUS "FetchContent: ${cmakesupport_SOURCE_DIR} ${cmakesupport_BINARY_DIR} " )
67+ include ("${cmakesupport_SOURCE_DIR} /CMakeSupport/InstallArtifactoryPackage.cmake" )
6368
64- message (STATUS "module path ${CMAKE_MODULE_PATH} " )
65- message (STATUS "Call find_package HDILib search ${CMAKE_SOURCE_DIR} /HDILib/lib/cmake/HDILib" )
66- message (STATUS "Run find_package HDILib" )
69+ install_artifactory_package (HDILib ${HDILib_VERSION} biovault TRUE )
70+ install_artifactory_package (flann ${flann_VERSION} lkeb TRUE )
71+ install_artifactory_package (lz4 ${lz4_VERSION} lkeb TRUE )
72+
73+ endif ()
74+
75+ set (lz4_ROOT "${LIBRARY_INSTALL_DIR} /lz4/lib/cmake" CACHE PATH "Location of lz4 cmake file" )
76+ set (flann_ROOT "${LIBRARY_INSTALL_DIR} /flann/lib/cmake/" CACHE PATH "Location of flann cmake file" )
77+ set (HDILIB_ROOT "${LIBRARY_INSTALL_DIR} /HDILib/lib/cmake/HDILib" CACHE PATH "Location of HDILib cmake file" )
6778
6879 set (DUAL_ANALYSIS_ARTIFACTORY_LIBS_INSTALLED TRUE CACHE BOOL "Use the prebuilt libraries from artifactory" FORCE )
6980endif ()
7081
82+
7183# -----------------------------------------------------------------------------
7284# Dependencies
7385# -----------------------------------------------------------------------------
86+
87+ find_package (Qt6 COMPONENTS Widgets WebEngineWidgets REQUIRED )
88+
89+ find_package (ManiVault COMPONENTS Core PointData ImageData CONFIG QUIET )
90+
7491find_package (lz4 CONFIG )
7592if (NOT ${lz4_FOUND} )
7693 find_package (PkgConfig REQUIRED )
@@ -98,15 +115,37 @@ if(NOT ${flann_FOUND})
98115endif ()
99116message (STATUS "Found flann version ${flann_VERSION} " )
100117
101- if (NOT HDILIB_ROOT)
102- message (FATAL_ERROR "Define HDILIB_ROOT" )
118+ # if this project and the HDILib are build as subproject together, we don't need to look for the library
119+ if (TARGET hdidimensionalityreduction AND TARGET hdiutils AND TARGET hdidata)
120+ if (NOT HDILib_LINK_LIBS)
121+ set (HDILib_LINK_LIBS hdidimensionalityreduction hdiutils hdidata)
122+ endif ()
123+
124+ if (NOT HDILib_INCLUDE_DIR AND HDILib_SOURCE_DIR )
125+ set (HDILib_INCLUDE_DIR ${HDILib_SOURCE_DIR} )
126+ endif ()
127+ else ()
128+ if (NOT HDILIB_ROOT)
129+ message (FATAL_ERROR "Define HDILIB_ROOT" )
130+ endif ()
131+
132+ find_package (HDILib COMPONENTS hdidimensionalityreduction hdiutils hdidata CONFIG REQUIRED PATHS ${HDILIB_ROOT} )
103133endif ()
104134
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} " )
135+ if (NOT ${HDILib_FOUND} )
136+ message (FATAL_ERROR "HDILib NOT found" )
109137endif ()
138+ message (STATUS "Found HDILib at ${HDILIB_ROOT} with ${HDILib_LINK_LIBS} " )
139+
140+ # if(NOT HDILIB_ROOT)
141+ # message(FATAL_ERROR "Define HDILIB_ROOT")
142+ # endif()
143+
144+ # find_package(HDILib COMPONENTS hdidimensionalityreduction hdiutils hdidata CONFIG REQUIRED PATHS ${HDILIB_ROOT})
145+
146+ # if(${HDILib_FOUND})
147+ # message(STATUS "HDILib found at ${HDILIB_ROOT} with ${HDILib_LINK_LIBS}")
148+ # endif()
110149
111150find_package (OpenGL REQUIRED )
112151find_package (OpenMP )
@@ -116,10 +155,6 @@ if(OpenMP_CXX_FOUND)
116155endif ()
117156
118157
119- find_package (Qt6 6.3.1 COMPONENTS Widgets WebEngineWidgets REQUIRED )
120-
121- find_package (ManiVault COMPONENTS Core PointData ImageData CONFIG )
122-
123158find_package (OpenGL REQUIRED )
124159find_package (OpenMP )
125160
@@ -229,7 +264,8 @@ set_HDILib_project_includes(${PROJECT})
229264# Target properties
230265# -----------------------------------------------------------------------------
231266# Request C++17
232- set_target_properties (${PROJECT} PROPERTIES CXX_STANDARD 17 )
267+ # set_target_properties(${PROJECT} PROPERTIES CXX_STANDARD 17)
268+ target_compile_features (${PROJECT} PRIVATE cxx_std_20 )
233269
234270target_compile_definitions (${PROJECT} PRIVATE QT_MESSAGELOGCONTEXT )
235271
@@ -261,8 +297,8 @@ set_flann_project_link_libraries(${PROJECT})
261297set_HDILib_project_link_libraries (${PROJECT} )
262298set_lz4_project_link_libraries (${PROJECT} )
263299
264- set_optimization_level (${PROJECT} ${MV_SNE_OPTIMIZATION_LEVEL } )
265- mv_check_and_set_AVX (${PROJECT} ${MV_SNE_USE_AVX } )
300+ set_optimization_level (${PROJECT} ${MV_DUAL_OPTIMIZATION_LEVEL } )
301+ mv_check_and_set_AVX (${PROJECT} ${MV_DUAL_USE_AVX } )
266302
267303silence_opengl_deprecation (${PROJECT} )
268304
@@ -293,6 +329,10 @@ set_target_properties(${PROJECT}
293329# -----------------------------------------------------------------------------
294330# Automatically set the debug environment (command + working directory) for MSVC
295331if (MSVC )
296- set_property (TARGET ${PROJECT} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY $<IF :$<CONFIG :DEBUG >,${ManiVault_INSTALL_DIR} /debug ,${ManiVault_INSTALL_DIR} /release >)
297- set_property (TARGET ${PROJECT} PROPERTY VS_DEBUGGER_COMMAND $<IF :$<CONFIG :DEBUG >,${ManiVault_INSTALL_DIR} /debug /ManiVault \ Studio .exe ,${ManiVault_INSTALL_DIR} /release /ManiVault \ Studio .exe >)
332+ # set_property(TARGET ${PROJECT} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY $<IF:$<CONFIG:DEBUG>,${ManiVault_INSTALL_DIR}/debug,${ManiVault_INSTALL_DIR}/release>)
333+ # set_property(TARGET ${PROJECT} PROPERTY VS_DEBUGGER_COMMAND $<IF:$<CONFIG:DEBUG>,${ManiVault_INSTALL_DIR}/debug/ManiVault\ Studio.exe,${ManiVault_INSTALL_DIR}/release/ManiVault\ Studio.exe>)
334+
335+ set_property (TARGET ${PROJECT} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY $<IF :$<CONFIG :DEBUG >,${ManiVault_INSTALL_DIR} /Debug ,$<IF :$<CONFIG :RELWITHDEBINFO >,${ManiVault_INSTALL_DIR} /RelWithDebInfo ,${ManiVault_INSTALL_DIR} /Release >>)
336+ set_property (TARGET ${PROJECT} PROPERTY VS_DEBUGGER_COMMAND $<IF :$<CONFIG :DEBUG >,"${ManiVault_INSTALL_DIR} /Debug /ManiVault Studio .exe ",$<IF :$<CONFIG :RELWITHDEBINFO >,"${ManiVault_INSTALL_DIR} /RelWithDebInfo /ManiVault Studio .exe ","${ManiVault_INSTALL_DIR} /Release /ManiVault Studio .exe ">>)
337+
298338endif ()
0 commit comments