Skip to content

Commit 4c9a081

Browse files
committed
2 parents 5a5a6fb + fa74259 commit 4c9a081

1 file changed

Lines changed: 77 additions & 37 deletions

File tree

CMakeLists.txt

Lines changed: 77 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.17.0)
1+
cmake_minimum_required(VERSION 3.22)
22

33
if(${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)
1616
option(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)
3636
if(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")
4041
endif(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)
6980
endif()
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+
7491
find_package(lz4 CONFIG)
7592
if(NOT ${lz4_FOUND})
7693
find_package(PkgConfig REQUIRED)
@@ -98,15 +115,37 @@ if(NOT ${flann_FOUND})
98115
endif()
99116
message (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})
103133
endif()
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")
109137
endif()
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

111150
find_package(OpenGL REQUIRED)
112151
find_package(OpenMP)
@@ -116,10 +155,6 @@ if(OpenMP_CXX_FOUND)
116155
endif()
117156

118157

119-
find_package(Qt6 6.3.1 COMPONENTS Widgets WebEngineWidgets REQUIRED)
120-
121-
find_package(ManiVault COMPONENTS Core PointData ImageData CONFIG)
122-
123158
find_package(OpenGL REQUIRED)
124159
find_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

234270
target_compile_definitions(${PROJECT} PRIVATE QT_MESSAGELOGCONTEXT)
235271

@@ -261,8 +297,8 @@ set_flann_project_link_libraries(${PROJECT})
261297
set_HDILib_project_link_libraries(${PROJECT})
262298
set_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

267303
silence_opengl_deprecation(${PROJECT})
268304

@@ -293,6 +329,10 @@ set_target_properties(${PROJECT}
293329
# -----------------------------------------------------------------------------
294330
# Automatically set the debug environment (command + working directory) for MSVC
295331
if(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+
298338
endif()

0 commit comments

Comments
 (0)