@@ -3,50 +3,36 @@ cmake_minimum_required(VERSION 3.22)
33# -----------------------------------------------------------------------------
44# Differential Expression Plugin
55# -----------------------------------------------------------------------------
6- PROJECT ("DifferentialExpressionPlugin" )
6+ PROJECT ("DifferentialExpressionPlugin"
7+ LANGUAGES CXX )
78
89# -----------------------------------------------------------------------------
910# CMake Options
1011# -----------------------------------------------------------------------------
1112set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR } /cmake)
1213set (CMAKE_INCLUDE_CURRENT_DIR ON )
13- set (CMAKE_AUTORCC ON )
1414set (CMAKE_AUTOMOC ON )
1515
16- if (MSVC )
16+ if (CMAKE_CXX_COMPILER_ID STREQUAL " MSVC" )
1717 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } /DWIN32 /EHsc /MP /permissive- /Zc:__cplusplus" )
18- set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS } /NODEFAULTLIB:LIBCMT" )
19- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG } /MDd " )
18+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG } /MDd" )
19+ set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO } /MD " )
2020 set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE } /MD" )
21- endif (MSVC )
22-
23- # -----------------------------------------------------------------------------
24- # Set install directory
25- # -----------------------------------------------------------------------------
26- # Check if the directory to the ManiVault installation has been provided
27- # if(NOT DEFINED MV_INSTALL_DIR)
28- # set(MV_INSTALL_DIR "" CACHE PATH "Directory where ManiVault is installed")
29- # message(FATAL_ERROR "Please set MV_INSTALL_DIR to the directory where ManiVault is installed")
30- # endif()
31- # file(TO_CMAKE_PATH ${MV_INSTALL_DIR} MV_INSTALL_DIR)
21+ endif ()
3222
3323# -----------------------------------------------------------------------------
3424# Dependencies
3525# -----------------------------------------------------------------------------
3626find_package (Qt6 COMPONENTS Widgets WebEngineWidgets REQUIRED )
3727
38- find_package (ManiVault COMPONENTS Core PointData ClusterData CONFIG QUIET )
28+ find_package (ManiVault COMPONENTS Core PointData CONFIG QUIET )
3929
40- find_package (OpenMP )
30+ find_package (OpenMP REQUIRED )
4131
42- if (OpenMP_CXX_FOUND)
43- message (STATUS "Found OpenMP" )
44- endif ()
4532
4633# -----------------------------------------------------------------------------
4734# Source files
4835# -----------------------------------------------------------------------------
49- # Define the plugin sources
5036
5137set (MODEL
5238 src/TableModel.h
@@ -56,7 +42,6 @@ set(MODEL
5642)
5743
5844set (WIDGETS
59-
6045 src/WordWrapHeaderView.h
6146 src/WordWrapHeaderView.cpp
6247 src/TableView.h
@@ -68,6 +53,8 @@ set(WIDGETS
6853set (UTIL
6954 src/ProgressManager.h
7055 src/ProgressManager.cpp
56+ src/AdditionalSettings.h
57+ src/AdditionalSettings.cpp
7158)
7259
7360set (ACTIONS
@@ -79,26 +66,13 @@ set(ACTIONS
7966set (PLUGIN_SOURCES
8067 src/DifferentialExpressionPlugin.h
8168 src/DifferentialExpressionPlugin.cpp
82-
83- src/DifferentialExpressionPlugin.json
8469)
8570
86- set (QRESOURCES
87- res/resources.qrc
71+ set (PLUGIN_SOURCES_AUX
72+ PluginInfo.json
8873)
89- QT6_ADD_RESOURCES (RESOURCE_FILES ${QRESOURCES} )
9074
91- set (PLUGIN_MOC_HEADERS
92- src/DifferentialExpressionPlugin.h
93-
94- src/ButtonProgressBar.h
95- src/TableModel.h
96- src/TableSortFilterProxyModel.h
97- src/TableView.h
98- src/WordWrapHeaderView.h
99- )
100-
101- source_group (Plugin FILES ${PLUGIN_SOURCES} )
75+ source_group (Plugin FILES ${PLUGIN_SOURCES} ${PLUGIN_SOURCES_AUX} )
10276source_group (Model FILES ${MODEL} )
10377source_group (Actions FILES ${ACTIONS} )
10478source_group (Widget FILES ${WIDGETS} )
@@ -108,19 +82,7 @@ source_group(Util FILES ${UTIL})
10882# CMake Target
10983# -----------------------------------------------------------------------------
11084# Create dynamic library for the plugin
111- add_library (${PROJECT_NAME } SHARED ${PLUGIN_SOURCES} ${RESOURCE_FILES} ${UTIL} ${WIDGETS} ${MODEL} ${ACTIONS} )
112-
113- # find_package(OpenMP REQUIRED)
114- # if(OpenMP_FOUND)
115- # message(STATUS "OpenMP found")
116- # target_link_libraries(${PROJECT_NAME} PRIVATE OpenMP::OpenMP_CXX)
117- # target_compile_options(${PROJECT_NAME} PRIVATE ${OpenMP_CXX_FLAGS})
118- # else()
119- # message(WARNING "OpenMP not found!")
120- # endif()
121-
122- # qt_wrap_cpp(PLUGIN_MOC ${PLUGIN_MOC_HEADERS} TARGET ${PROJECT_NAME})
123- # target_sources(${PROJECT_NAME} PRIVATE ${PLUGIN_MOC})
85+ add_library (${PROJECT_NAME } SHARED ${PLUGIN_SOURCES} ${PLUGIN_SOURCES_AUX} ${UTIL} ${WIDGETS} ${MODEL} ${ACTIONS} )
12486
12587# -----------------------------------------------------------------------------
12688# Target include directories
@@ -133,6 +95,7 @@ target_include_directories(${PROJECT_NAME} PRIVATE "${ManiVault_INCLUDE_DIR}")
13395# -----------------------------------------------------------------------------
13496
13597target_compile_features (${PROJECT_NAME } PRIVATE cxx_std_20 )
98+
13699if (MV_UNITY_BUILD)
137100 set_target_properties (${PROJECT_NAME } PROPERTIES UNITY_BUILD ON )
138101endif ()
@@ -146,17 +109,13 @@ target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::WebEngineWidgets)
146109
147110target_link_libraries (${PROJECT_NAME } PRIVATE ManiVault::Core )
148111target_link_libraries (${PROJECT_NAME } PRIVATE ManiVault::PointData )
149- target_link_libraries (${PROJECT_NAME } PRIVATE ManiVault::ClusterData )
150-
151- if (OpenMP_CXX_FOUND)
152- target_link_libraries (${PROJECT_NAME } PRIVATE OpenMP::OpenMP_CXX )
153- endif ()
154112
113+ target_link_libraries (${PROJECT_NAME } PRIVATE OpenMP::OpenMP_CXX )
155114
156115# -----------------------------------------------------------------------------
157116# Target installation
158117# -----------------------------------------------------------------------------
159- # Install the shared plugin libary to the "Plugins" folder in the ManiVault install directory
118+ # Install the shared plugin library to the "Plugins" folder in the ManiVault install directory
160119install (TARGETS ${PROJECT_NAME }
161120 RUNTIME DESTINATION Plugins COMPONENT PLUGINS # Windows .dll
162121 LIBRARY DESTINATION Plugins COMPONENT PLUGINS # Linux/Mac .so
@@ -166,20 +125,19 @@ add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
166125 COMMAND "${CMAKE_COMMAND } "
167126 --install ${CMAKE_CURRENT_BINARY_DIR }
168127 --config $<CONFIGURATION >
169- --prefix ${MV_INSTALL_DIR} /$<CONFIGURATION>
128+ --component PLUGINS
129+ --prefix ${ManiVault_INSTALL_DIR} /$<CONFIGURATION>
170130)
171131
172- set_target_properties (${PROJECT_NAME }
173- PROPERTIES
174- FOLDER ViewPlugins
175- )
132+ mv_handle_plugin_config (${PROJECT_NAME } )
176133
177134
178135# -----------------------------------------------------------------------------
179136# Miscellaneous
180137# -----------------------------------------------------------------------------
181138# Automatically set the debug environment (command + working directory) for MSVC
182- if (MSVC )
139+
140+ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" )
183141 set_property (TARGET ${PROJECT_NAME } PROPERTY VS_DEBUGGER_WORKING_DIRECTORY $<IF :$<CONFIG :DEBUG >,${ManiVault_INSTALL_DIR} /Debug ,$<IF :$<CONFIG :RELWITHDEBINFO >,${ManiVault_INSTALL_DIR} /RelWithDebInfo ,${ManiVault_INSTALL_DIR} /Release >>)
184142 set_property (TARGET ${PROJECT_NAME } 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 ">>)
185143endif ()
0 commit comments