Skip to content

Commit 22b97fc

Browse files
committed
Read optional plugin type from config file
1 parent 46890dd commit 22b97fc

File tree

1 file changed

+34
-12
lines changed

1 file changed

+34
-12
lines changed

CMakeLists.txt

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,7 @@ option(MV_UNITY_BUILD "Combine target source files into batches for faster compi
77
# -----------------------------------------------------------------------------
88
set(PROJECT "ScatterplotPlugin")
99

10-
set(PLUGIN_CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/PluginInfo.json")
11-
12-
if(NOT EXISTS "${PLUGIN_CONFIG_FILE}")
13-
message(FATAL_ERROR "JSON file not found: ${PLUGIN_CONFIG_FILE}")
14-
endif()
15-
16-
file(READ ${PLUGIN_CONFIG_FILE} PLUGIN_INFO_JSON)
17-
string(JSON PLUGIN_VERSION GET "${PLUGIN_INFO_JSON}" version plugin)
18-
message(STATUS "PLUGIN_VERSION: ${PLUGIN_VERSION}")
19-
2010
PROJECT(${PROJECT}
21-
VERSION ${PLUGIN_VERSION}
2211
DESCRIPTION "A scatterplot viewer plugin for ManiVault"
2312
LANGUAGES CXX
2413
)
@@ -158,11 +147,44 @@ add_custom_command(TARGET ${PROJECT} POST_BUILD
158147
--prefix ${ManiVault_INSTALL_DIR}/$<CONFIGURATION>
159148
)
160149

150+
# Read config file
151+
set(PLUGIN_CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/PluginInfo.json")
152+
153+
if(NOT EXISTS "${PLUGIN_CONFIG_FILE}")
154+
message(FATAL_ERROR "JSON file not found: ${PLUGIN_CONFIG_FILE}")
155+
endif()
156+
157+
file(READ ${PLUGIN_CONFIG_FILE} PLUGIN_INFO_JSON)
158+
159+
# Check if config file contains certain entries
160+
set(HAS_PLUGIN_TYPE 0)
161+
162+
# Get the number of top-level keys
163+
string(JSON TOP_LEVEL_COUNT LENGTH "${PLUGIN_INFO_JSON}")
164+
165+
math(EXPR LAST_INDEX "${TOP_LEVEL_COUNT} - 1")
166+
foreach(I RANGE 0 ${LAST_INDEX})
167+
string(JSON KEY_NAME MEMBER "${PLUGIN_INFO_JSON}" ${I})
168+
if("${KEY_NAME}" STREQUAL "type")
169+
set(HAS_PLUGIN_TYPE 1)
170+
endif()
171+
endforeach()
172+
173+
# Extract plugin version
174+
string(JSON PLUGIN_VERSION GET "${PLUGIN_INFO_JSON}" version plugin)
175+
message(STATUS "PLUGIN_VERSION: ${PLUGIN_VERSION}")
161176
set_target_properties(${PROJECT} PROPERTIES
162-
FOLDER ViewPlugins
163177
OUTPUT_NAME "${PROJECT}_p${PLUGIN_VERSION}_c${ManiVault_VERSION}"
164178
)
165179

180+
# Extract plugin type
181+
if(HAS_PLUGIN_TYPE)
182+
string(JSON PLUGIN_TYPE GET "${PLUGIN_INFO_JSON}" type)
183+
set_target_properties(${PROJECT} PROPERTIES
184+
FOLDER "${PLUGIN_TYPE}Plugins"
185+
)
186+
endif()
187+
166188
# -----------------------------------------------------------------------------
167189
# Miscellaneous
168190
# -----------------------------------------------------------------------------

0 commit comments

Comments
 (0)