2 cmake_policy(SET CMP0057 NEW)
4 set(_ParaViewPlugin_cmake_dir
"${CMAKE_CURRENT_LIST_DIR}")
7 # ParaView Plugin CMake API
14 ## Conditionally output debug statements
17 controlled by the `_paraview_plugin_log` variable which contains a list of
24 If the `domain` is
enabled for debugging, the `format` argument is configured
25 and printed. It should contain `@` variable expansions to
replace rather than
26 it being done outside. This helps to avoid the cost of generating large strings
27 when debugging is disabled.
30 if (NOT _paraview_plugin_log STREQUAL
"ALL" AND
31 NOT domain IN_LIST _paraview_plugin_log)
35 string(CONFIGURE "${format}
" _paraview_plugin_debug_msg) 36 if (_paraview_plugin_debug_msg) 38 "ParaView plugin debug ${domain}: ${_paraview_plugin_debug_msg}
") 45 Similar to VTK modules, plugins first have to be discovered. The 46 `paraview_plugin_find_plugins` function does this. The output variable is the 47 list of discovered `paraview.plugin` files. 50 paraview_plugin_find_plugins(<output> [<directory>...]) 53 function (paraview_plugin_find_plugins output) 54 set(_paraview_find_plugins_all) 55 foreach (_paraview_find_plugins_directory IN LISTS ARGN) 56 file(GLOB_RECURSE _paraview_find_plugins_plugins 57 "${_paraview_find_plugins_directory}/paraview.plugin
") 58 list(APPEND _paraview_find_plugins_all 59 ${_paraview_find_plugins_plugins}) 61 set("${output}
" ${_paraview_find_plugins_all} PARENT_SCOPE) 67 The `paraview.plugin` file is parsed and used as arguments to a CMake function. 77 Pixie file reader using ADIOS 82 The supported arguments are: 84 * `NAME`: (Required) The name of the plugin. 85 * `DESCRIPTION`: (Recommended) Short text describing what the plugin does. 86 * `CONDITION`: Arguments to CMake's `if` command which may be used to hide 87 the plugin for certain platforms or other reasons. If the expression is 88 false, the module is completely ignored. 89 * `REQUIRES_MODULES`: If the plugin is enabled, these modules will be listed 90 as those required to build the enabled plugins. 92 macro (_paraview_plugin_parse_args name_output) 93 cmake_parse_arguments("_name
" 101 "A ParaView plugin requires a
name (from ${_paraview_scan_plugin_file}).
") 103 set("${name_output}
" "${_name_NAME}
") 105 cmake_parse_arguments("${_name_NAME}
" 108 "DESCRIPTION;REQUIRES_MODULES;CONDITION
" 111 if (${_name_NAME}_UNPARSED_ARGUMENTS) 113 "Unparsed arguments
for ${_name_NAME}:
" 114 "${${_name_NAME}_UNPARSED_ARGUMENTS}
") 117 if (NOT ${_name_NAME}_DESCRIPTION) 118 message(WARNING "The ${_name_NAME} module should have a
description") 120 string(REPLACE ";
" " " "${_name_NAME}_DESCRIPTION
" "${${_name_NAME}_DESCRIPTION}
") 126 Once the `paraview.plugin` files have been found, they need to be scanned to 127 determine which should be built. Generally, plugins should be scanned first in 128 order to use the `REQUIRES_MODULES` list to enable them during the scan for 129 their required modules. 132 paraview_plugin_scan( 133 PLUGIN_FILES <file>... 134 PROVIDES_PLUGINS <variable> 135 [ENABLE_BY_DEFAULT <ON|OFF>] 136 [HIDE_PLUGINS_FROM_CACHE <ON|OFF>] 137 [REQUIRES_MODULES <module>...]) 140 * `PLUGIN_FILES`: (Required) The list of plugin files to scan. 141 * `PROVIDES_PLUGINS`: (Required) This variable contains a list of the plugins 143 * `ENABLE_BY_DEFAULT`: (Defaults to `OFF`) Whether to enable plugins by 145 * `HIDE_PLUGINS_FROM_CACHE`: (Defaults to `OFF`) Whether to display options 146 to enable and disable plugins in the cache or not. 147 * `REQUIRES_MODULES`: The list of modules required by the enabled plugins. 150 function (paraview_plugin_scan) 151 cmake_parse_arguments(_paraview_scan 153 "ENABLE_BY_DEFAULT;HIDE_PLUGINS_FROM_CACHE;REQUIRES_MODULES;PROVIDES_PLUGINS
" 157 if (_paraview_scan_UNPARSED_ARGUMENTS) 160 "${_paraview_scan_UNPARSED_ARGUMENTS}
") 163 if (NOT DEFINED _paraview_scan_ENABLE_BY_DEFAULT) 164 set(_paraview_scan_ENABLE_BY_DEFAULT OFF) 167 if (NOT DEFINED _paraview_scan_HIDE_PLUGINS_FROM_CACHE) 168 set(_paraview_scan_HIDE_PLUGINS_FROM_CACHE OFF) 171 if (NOT DEFINED _paraview_scan_PROVIDES_PLUGINS) 173 "The `PROVIDES_PLUGINS` argument is required.
") 176 if (NOT _paraview_scan_PLUGIN_FILES) 178 "No plugin files given to scan.
") 181 set(_paraview_scan_option_default_type BOOL) 182 if (_paraview_scan_HIDE_PLUGINS_FROM_CACHE) 183 set(_paraview_scan_option_default_type INTERNAL) 186 set(_paraview_scan_provided_plugins) 187 set(_paraview_scan_required_modules) 189 foreach (_paraview_scan_plugin_file IN LISTS _paraview_scan_PLUGIN_FILES) 190 if (NOT IS_ABSOLUTE "${_paraview_scan_plugin_file}
") 191 set(_paraview_scan_plugin_file 192 "${CMAKE_CURRENT_SOURCE_DIR}/${_paraview_scan_plugin_file}
") 195 set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}
" APPEND 197 CMAKE_CONFIGURE_DEPENDS "${_paraview_scan_plugin_file}
") 199 file(READ "${_paraview_scan_plugin_file}
" _paraview_scan_plugin_args) 201 string(REGEX REPLACE "#[^\n]*\n
" "\n
" _paraview_scan_plugin_args "${_paraview_scan_plugin_args}
") 202 # Use argument splitting. 203 string(REGEX REPLACE "( |\n)+
" ";
" _paraview_scan_plugin_args "${_paraview_scan_plugin_args}
") 204 _paraview_plugin_parse_args(_paraview_scan_plugin_name ${_paraview_scan_plugin_args}) 205 _paraview_plugin_debug(plugin "@_paraview_scan_plugin_name@ declared by @_paraview_scan_plugin_file
@") 207 list(APPEND _paraview_scan_all_plugins 208 "${_paraview_scan_plugin_name}
") 210 set(_paraview_scan_plugin_default "${_paraview_scan_ENABLE_BY_DEFAULT}
") 211 if (DEFINED "_paraview_plugin_default_${_paraview_scan_plugin_name}
") 212 set(_paraview_scan_plugin_default "${_paraview_plugin_default_${_paraview_scan_plugin_name}}
") 214 option("PARAVIEW_PLUGIN_ENABLE_${_paraview_scan_plugin_name}
" 215 "Enable the ${_paraview_scan_plugin_name} plugin. ${${_paraview_scan_plugin_name}_DESCRIPTION}
" 216 "${_paraview_scan_plugin_default}
") 217 set("_paraview_scan_enable_${_paraview_scan_plugin_name}
" 218 "${PARAVIEW_PLUGIN_ENABLE_${_paraview_scan_plugin_name}}
") 220 set_property(CACHE "PARAVIEW_PLUGIN_ENABLE_${_paraview_scan_plugin_name}
" 222 TYPE "${_paraview_scan_option_default_type}
") 224 if (DEFINED ${_paraview_scan_plugin_name}_CONDITION) 225 if (NOT (${${_paraview_scan_plugin_name}_CONDITION})) 226 if (DEFINED "PARAVIEW_PLUGIN_ENABLE_${_paraview_scan_plugin_name}
") 227 set_property(CACHE "PARAVIEW_PLUGIN_ENABLE_${_paraview_scan_plugin_name}
" 231 _paraview_plugin_debug(plugin "@_paraview_scan_plugin_name@ hidden by its `CONDITION`
") 236 if (_paraview_scan_enable_${_paraview_scan_plugin_name}) 237 _paraview_plugin_debug(plugin "@_paraview_scan_plugin_name@ requested via cache
value") 238 list(APPEND _paraview_scan_provided_plugins 239 "${_paraview_scan_plugin_name}
") 240 list(APPEND _paraview_scan_required_modules 241 ${${_paraview_scan_plugin_name}_REQUIRES_MODULES}) 246 "_paraview_plugin_${_paraview_scan_plugin_name}_file
" "${_paraview_scan_plugin_file}
") 249 "_paraview_plugin_${_paraview_scan_plugin_name}_description
" "${${_paraview_scan_plugin_name}_DESCRIPTION}
") 252 "_paraview_plugin_${_paraview_scan_plugin_name}_required_modules
" "${${_paraview_scan_plugin_name}_REQUIRES_MODULES}
") 255 if (DEFINED _paraview_scan_REQUIRES_MODULES) 256 set("${_paraview_scan_REQUIRES_MODULES}
" 257 ${_paraview_scan_required_modules} 261 set("${_paraview_scan_PROVIDES_PLUGINS}
" 262 ${_paraview_scan_provided_plugins} 266 function (_paraview_plugin_check_destdir variable) 267 if (NOT DEFINED "${variable}
") 269 "It appears as though ${variable} is not defined, but is needed to
" 270 "default a destination directory
for build artifacts. Usually
this is
" 271 "resolved by `include(GNUInstallDirs)` at the
top of the project.
") 278 Once all plugins have been scanned, they need to be built. 281 paraview_plugin_build( 283 [AUTOLOAD <plugin>...] 284 [DELAYED_LOAD <plugin>...] 285 [PLUGINS_COMPONENT <component>] 288 [INSTALL_EXPORT <export>] 289 [CMAKE_DESTINATION <destination>] 290 [TARGET_COMPONENT <component>] 291 [INSTALL_HEADERS <ON|OFF>] 292 [USE_FILE_SETS <ON|OFF>] 294 [HEADERS_DESTINATION <destination>] 295 [RUNTIME_DESTINATION <destination>] 296 [LIBRARY_DESTINATION <destination>] 297 [LIBRARY_SUBDIRECTORY <subdirectory>] 298 [ADD_INSTALL_RPATHS <ON|OFF>] 300 [PLUGINS_FILE_NAME <filename>] 301 [DISABLE_XML_DOCUMENTATION <ON|OFF>]) 303 [GENERATE_SPDX <ON|OFF>] 304 [SPDX_DOCUMENT_NAMESPACE <uri>] 305 [SPDX_DOWNLOAD_LOCATION <url>] 308 * `PLUGINS`: (Required) The list of plugins to build. May be empty. 309 * `AUTOLOAD`: A list of plugins to mark for autoloading. 310 * `DELAYED_LOAD`: A list of plugins to mark for delayed loading. A delayed load 311 plugin is a plugin where only the XMLs are loaded on load, while the actual 312 shared library of the plugin is loaded only when a proxy defined in these XMLs 314 * `PLUGINS_COMPONENT`: (Defaults to `paraview_plugins`) The installation 315 component to use for installed plugins. 316 * `TARGET`: (Recommended) The name of an interface target to generate. This 317 provides. an initialization function `<TARGET>_initialize` which 318 initializes static plugins. The function is provided, but is a no-op for 319 shared plugin builds. 320 * `INSTALL_EXPORT`: If provided, the generated target will be added to the 322 * `CMAKE_DESTINATION`: If provided, the plugin target's properties will be 323 written to a file named `<TARGET>-paraview-plugin-properties.cmake` in the 324 specified destination. 325 * `TARGET_COMPONENT`: (Defaults to `development`) The component to use for 327 * `INSTALL_HEADERS`: (Defaults to `ON`) Whether to install headers or not. 328 * `USE_FILE_SETS`: (Defaults to `OFF`) Whether to use `FILE_SET` source 329 specification or not. 330 * `HEADERS_DESTINATION`: (Defaults to `${CMAKE_INSTALL_INCLUDEDIR}`) Where to 331 install include files. 332 * `RUNTIME_DESTINATION`: (Defaults to `${CMAKE_INSTALL_BINDIR}`) Where to 333 install runtime files. 334 * `LIBRARY_DESTINATION`: (Defaults to `${CMAKE_INSTALL_LIBDIR}`) Where to 335 install modules built by plugins. 336 * `LIBRARY_SUBDIRECTORY`: (Defaults to `""`) Where to install the plugins 337 themselves. Each plugin lives in a directory of its name in 338 `<RUNTIME_DESTINATION>/<LIBRARY_SUBDIRECTORY>` (for Windows) or 339 `<LIBRARY_DESTINATION>/<LIBRARY_SUBDIRECTORY>` for other platforms. 340 * `ADD_INSTALL_RPATHS`: (Defaults to `ON`) If specified, an RPATH to load 341 dependent libraries from the `LIBRARY_DESTINATION` from the plugins will be 343 * `PLUGINS_FILE_NAME`: The name of the XML plugin file to generate for the 344 built plugins. This file will be placed under 345 `<LIBRARY_DESTINATION>/<LIBRARY_SUBDIRECTORY>`. It will be installed with 346 the `plugin` component. 347 * `DISABLE_XML_DOCUMENTATION`: (Defaults to `OFF`) Whether to forcefully 348 disable XML documentation or not. 349 * ``GENERATE_SPDX``: (Defaults to ``OFF``) Whether or not to generate and install 350 SPDX file for each modules. 351 * ``SPDX_DOCUMENT_NAMESPACE``: (Defaults to ``""``) Document namespace to use when 352 generating SPDX files. 353 * ``SPDX_DOWNLOAD_LOCATION``: (Defaults to ``""``) Download location to use when 354 generating SPDX files. 356 function (paraview_plugin_build) 357 cmake_parse_arguments(_paraview_build 359 "HEADERS_DESTINATION;RUNTIME_DESTINATION;LIBRARY_DESTINATION;LIBRARY_SUBDIRECTORY;TARGET;PLUGINS_FILE_NAME;INSTALL_EXPORT;CMAKE_DESTINATION;PLUGINS_COMPONENT;TARGET_COMPONENT;ADD_INSTALL_RPATHS;INSTALL_HEADERS;DISABLE_XML_DOCUMENTATION;GENERATE_SPDX;SPDX_DOCUMENT_NAMESPACE;SPDX_DOWNLOAD_LOCATION;USE_FILE_SETS
" 360 "PLUGINS;AUTOLOAD;DELAYED_LOAD
" 363 if (_paraview_build_UNPARSED_ARGUMENTS) 366 "${_paraview_build_UNPARSED_ARGUMENTS}
") 369 if (NOT DEFINED _paraview_build_HEADERS_DESTINATION) 370 _paraview_plugin_check_destdir(CMAKE_INSTALL_INCLUDEDIR) 371 set(_paraview_build_HEADERS_DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}
") 374 if (NOT DEFINED _paraview_build_RUNTIME_DESTINATION) 375 _paraview_plugin_check_destdir(CMAKE_INSTALL_BINDIR) 376 set(_paraview_build_RUNTIME_DESTINATION "${CMAKE_INSTALL_BINDIR}
") 379 if (NOT DEFINED _paraview_build_LIBRARY_DESTINATION) 380 _paraview_plugin_check_destdir(CMAKE_INSTALL_LIBDIR) 381 set(_paraview_build_LIBRARY_DESTINATION "${CMAKE_INSTALL_LIBDIR}
") 384 if (NOT DEFINED _paraview_build_LIBRARY_SUBDIRECTORY) 385 set(_paraview_build_LIBRARY_SUBDIRECTORY "") 388 if (NOT _paraview_build_DISABLE_XML_DOCUMENTATION) 389 set(_paraview_build_DISABLE_XML_DOCUMENTATION OFF) 392 if (NOT DEFINED _paraview_build_GENERATE_SPDX) 393 set(_paraview_build_GENERATE_SPDX OFF) 396 if (NOT _paraview_build_SPDX_DOCUMENT_NAMESPACE) 397 set(_paraview_build_SPDX_DOCUMENT_NAMESPACE "") 400 if (NOT _paraview_build_SPDX_DOWNLOAD_LOCATION) 401 set(_paraview_build_SPDX_DOWNLOAD_LOCATION "") 404 if (NOT DEFINED _paraview_build_INSTALL_HEADERS) 405 set(_paraview_build_INSTALL_HEADERS ON) 408 if (NOT DEFINED _paraview_build_USE_FILE_SETS) 409 set(_paraview_build_USE_FILE_SETS OFF) 412 if (NOT DEFINED _paraview_build_ADD_INSTALL_RPATHS) 413 set(_paraview_build_ADD_INSTALL_RPATHS ON) 415 if (_paraview_build_ADD_INSTALL_RPATHS) 416 if (NOT _paraview_build_LIBRARY_SUBDIRECTORY STREQUAL "") 417 file(RELATIVE_PATH _paraview_build_relpath 418 "/prefix/${_paraview_build_LIBRARY_DESTINATION}/${_paraview_build_LIBRARY_SUBDIRECTORY}/plugin
" 419 "/prefix/${_paraview_build_LIBRARY_DESTINATION}
") 421 file(RELATIVE_PATH _paraview_build_relpath 422 "/prefix/${_paraview_build_LIBRARY_DESTINATION}/plugin
" 423 "/prefix/${_paraview_build_LIBRARY_DESTINATION}
") 426 list(APPEND CMAKE_INSTALL_RPATH 427 "@loader_path/${_paraview_build_relpath}
") 429 list(APPEND CMAKE_INSTALL_RPATH 430 "$ORIGIN/${_paraview_build_relpath}
") 434 if (DEFINED _paraview_build_INSTALL_EXPORT 435 AND NOT DEFINED _paraview_build_TARGET) 437 "The `INSTALL_EXPORT` argument requires the `TARGET` argument.
") 440 if (DEFINED _paraview_build_INSTALL_EXPORT 441 AND NOT DEFINED _paraview_build_CMAKE_DESTINATION) 443 "The `INSTALL_EXPORT` argument requires the `CMAKE_DESTINATION` argument.
") 446 set(_paraview_build_extra_destinations) 447 if (DEFINED _paraview_build_CMAKE_DESTINATION) 448 list(APPEND _paraview_build_extra_destinations 450 if (NOT DEFINED _paraview_build_TARGET) 452 "The `CMAKE_DESTINATION` argument requires the `TARGET` argument.
") 456 if (DEFINED _paraview_build_TARGET) 457 _vtk_module_split_module_name("${_paraview_build_TARGET}
" _paraview_build) 458 string(REPLACE "::
" "_
" _paraview_build_target_safe "${_paraview_build_TARGET}
") 461 _vtk_module_check_destinations(_paraview_build_ 466 ${_paraview_build_extra_destinations}) 468 if (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) 469 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${_paraview_build_RUNTIME_DESTINATION}
") 471 if (NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) 472 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${_paraview_build_LIBRARY_DESTINATION}
") 474 if (NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY) 475 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${_paraview_build_LIBRARY_DESTINATION}
") 479 set(_paraview_build_plugin_destination "${_paraview_build_RUNTIME_DESTINATION}
") 481 set(_paraview_build_plugin_destination "${_paraview_build_LIBRARY_DESTINATION}
") 483 if (NOT _paraview_build_LIBRARY_SUBDIRECTORY STREQUAL "") 484 string(APPEND _paraview_build_plugin_destination "/${_paraview_build_LIBRARY_SUBDIRECTORY}
") 487 foreach (_paraview_build_plugin IN LISTS _paraview_build_PLUGINS) 488 get_property(_paraview_build_plugin_file GLOBAL 489 PROPERTY "_paraview_plugin_${_paraview_build_plugin}_file
") 490 if (NOT _paraview_build_plugin_file) 492 "The requested ${_paraview_build_plugin} plugin is not a ParaView plugin.
") 495 _paraview_plugin_debug(building "@_paraview_build_plugin@ is being built
") 497 # Make a variable for where the plugin should go. 498 set(_paraview_build_plugin_directory 499 "${_paraview_build_plugin_destination}/${_paraview_build_plugin}
") 501 # TODO: Support external plugins? 502 get_filename_component(_paraview_build_plugin_dir "${_paraview_build_plugin_file}
" DIRECTORY) 503 file(RELATIVE_PATH _paraview_build_plugin_subdir "${CMAKE_SOURCE_DIR}
" "${_paraview_build_plugin_dir}
") 505 "${CMAKE_SOURCE_DIR}/${_paraview_build_plugin_subdir}
" 506 "${CMAKE_BINARY_DIR}/${_paraview_build_plugin_subdir}
") 509 if (DEFINED _paraview_build_TARGET) 510 add_library("${_paraview_build_TARGET_NAME}
" INTERFACE) 511 if (_paraview_build_NAMESPACE) 512 add_library("${_paraview_build_TARGET}
" ALIAS "${_paraview_build_TARGET_NAME}
") 514 target_include_directories("${_paraview_build_TARGET_NAME}
" 516 "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_paraview_build_target_safe}>
" 517 "$<INSTALL_INTERFACE:${_paraview_build_HEADERS_DESTINATION}>
") 518 set(_paraview_build_include_file 519 "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_paraview_build_target_safe}/${_paraview_build_target_safe}.h
") 521 set(_paraview_static_plugins) 522 foreach (_paraview_build_plugin IN LISTS _paraview_build_PLUGINS) 523 get_property(_paraview_build_plugin_type 524 TARGET "${_paraview_build_plugin}
" 526 if (_paraview_build_plugin_type STREQUAL "STATIC_LIBRARY
") 527 list(APPEND _paraview_static_plugins 528 "${_paraview_build_plugin}
") 532 if (_paraview_static_plugins) 533 target_link_libraries("${_paraview_build_TARGET_NAME}
" 535 ParaView::RemotingCore 536 ${_paraview_static_plugins}) 538 set(_paraview_build_declarations) 539 set(_paraview_build_calls) 540 set(_paraview_build_names) 541 foreach (_paraview_build_plugin IN LISTS _paraview_static_plugins) 542 string(APPEND _paraview_build_declarations 543 "PV_PLUGIN_IMPORT_INIT(${_paraview_build_plugin});\n
") 544 string(APPEND _paraview_build_calls 545 " if (sname == \
"${_paraview_build_plugin}\") 549 static bool loaded = false; 552 loaded = PV_PLUGIN_IMPORT(${_paraview_build_plugin}); 557 string(APPEND _paraview_build_names
558 " names.emplace_back(\"${_paraview_build_plugin}\");\n")
561 set(_paraview_build_include_content
562 "#ifndef ${_paraview_build_target_safe}_h 563 #define ${_paraview_build_target_safe}_h 565 #define PARAVIEW_BUILDING_PLUGIN 566 #define PARAVIEW_PLUGIN_BUILT_SHARED 0 567 #include \"vtkPVPlugin.h\" 568 #include \"vtkPVPluginLoader.h\" 569 #include \"vtkPVPluginTracker.h\" 572 ${_paraview_build_declarations} 573 static bool ${_paraview_build_target_safe}_static_plugins_load(const char* name); 574 static bool ${_paraview_build_target_safe}_static_plugins_search(const char* name); 575 static void ${_paraview_build_target_safe}_static_plugins_list(const char* appname, std::vector<std::string>& names); 577 static void ${_paraview_build_target_safe}_initialize() 579 vtkPVPluginLoader::RegisterLoadPluginCallback(${_paraview_build_target_safe}_static_plugins_load); 580 vtkPVPluginTracker::RegisterStaticPluginSearchFunction(${_paraview_build_target_safe}_static_plugins_search); 581 vtkPVPluginTracker::RegisterStaticPluginListFunction(${_paraview_build_target_safe}_static_plugins_list); 584 static bool ${_paraview_build_target_safe}_static_plugins_func(const char* name, bool load); 586 static bool ${_paraview_build_target_safe}_static_plugins_load(const char* name) 588 return ${_paraview_build_target_safe}_static_plugins_func(name, true); 591 static bool ${_paraview_build_target_safe}_static_plugins_search(const char* name) 593 return ${_paraview_build_target_safe}_static_plugins_func(name, false); 596 static void ${_paraview_build_target_safe}_static_plugins_list(const char* appname, std::vector<std::string>& names) 598 ${_paraview_build_names} 603 static bool ${_paraview_build_target_safe}_static_plugins_func(const char* name, bool load) 605 std::string const sname = name; 607 ${_paraview_build_calls} 613 set(_paraview_build_include_content
614 "#ifndef ${_paraview_build_target_safe}_h 615 #define ${_paraview_build_target_safe}_h 617 static void ${_paraview_build_target_safe}_initialize() 625 OUTPUT
"${_paraview_build_include_file}" 626 CONTENT
"${_paraview_build_include_content}")
627 if (_paraview_build_INSTALL_HEADERS)
629 FILES
"${_paraview_build_include_file}" 630 DESTINATION
"${_paraview_build_HEADERS_DESTINATION}" 631 COMPONENT
"${_paraview_build_TARGET_COMPONENT}")
634 if (DEFINED _paraview_build_INSTALL_EXPORT)
636 TARGETS
"${_paraview_build_TARGET_NAME}" 637 EXPORT "${_paraview_build_INSTALL_EXPORT}" 638 COMPONENT
"${_paraview_build_TARGET_COMPONENT}")
640 set(_paraview_build_required_exports_include_file_name
"${_paraview_build_INSTALL_EXPORT}-${_paraview_build_TARGET_NAME}-targets-depends.cmake")
641 set(_paraview_build_required_exports_include_build_file
642 "${CMAKE_BINARY_DIR}/${_paraview_build_CMAKE_DESTINATION}/${_paraview_build_required_exports_include_file_name}")
643 set(_paraview_build_required_exports_include_contents
"")
644 get_property(_paraview_build_required_exports GLOBAL
645 PROPERTY
"paraview_plugin_${_paraview_build_TARGET}_required_exports")
646 if (_paraview_build_required_exports)
647 foreach (_paraview_build_required_export IN LISTS _paraview_build_required_exports)
648 string(APPEND _paraview_build_required_exports_include_contents
649 "include(\"\${CMAKE_CURRENT_LIST_DIR}/${_paraview_build_required_export}-targets.cmake\")\n" 650 "include(\"\${CMAKE_CURRENT_LIST_DIR}/${_paraview_build_required_export}-vtk-module-properties.cmake\")\n" 653 get_property(_paraview_build_modules GLOBAL
654 PROPERTY
"paraview_plugin_${_paraview_build_required_export}_modules")
655 if (_paraview_build_modules)
656 vtk_module_export_find_packages(
657 CMAKE_DESTINATION
"${_paraview_build_CMAKE_DESTINATION}" 658 FILE_NAME
"${_paraview_build_required_export}-vtk-module-find-packages.cmake" 659 MODULES ${_paraview_build_modules})
661 # TODO: The list of modules should be checked
for their `_FOUND`
662 # variables being
false and propagate it up through the parent
663 # project
's `_FOUND` variable. 664 string(APPEND _paraview_build_required_exports_include_contents 665 "set(CMAKE_FIND_PACKAGE_NAME_save \"\${CMAKE_FIND_PACKAGE_NAME}\")\n" 666 "set(${_paraview_build_required_export}_FIND_QUIETLY \"\${\${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY}\")\n" 667 "set(${_paraview_build_required_export}_FIND_COMPONENTS)\n" 668 "set(CMAKE_FIND_PACKAGE_NAME \"${_paraview_build_required_export}\")\n" 669 "include(\"\${CMAKE_CURRENT_LIST_DIR}/${_paraview_build_required_export}-vtk-module-find-packages.cmake\")\n" 670 "set(CMAKE_FIND_PACKAGE_NAME \"\${CMAKE_FIND_PACKAGE_NAME_save}\")\n" 671 "unset(${_paraview_build_required_export}_FIND_QUIETLY)\n" 672 "unset(${_paraview_build_required_export}_FIND_COMPONENTS)\n" 673 "unset(CMAKE_FIND_PACKAGE_NAME_save)\n" 680 OUTPUT "${_paraview_build_required_exports_include_build_file}" 681 CONTENT "${_paraview_build_required_exports_include_contents}") 682 if (_paraview_build_INSTALL_HEADERS) 684 FILES "${_paraview_build_required_exports_include_build_file}" 685 DESTINATION "${_paraview_build_CMAKE_DESTINATION}" 686 COMPONENT "${_paraview_build_TARGET_COMPONENT}") 689 set(_paraview_build_namespace_args) 690 if (_paraview_build_NAMESPACE) 691 list(APPEND _paraview_build_namespace_args 692 NAMESPACE "${_paraview_build_NAMESPACE}::") 695 if (_paraview_build_INSTALL_HEADERS) 697 EXPORT "${_paraview_build_INSTALL_EXPORT}" 698 ${_paraview_build_namespace_args} 699 FILE "${CMAKE_BINARY_DIR}/${_paraview_build_CMAKE_DESTINATION}/${_paraview_build_INSTALL_EXPORT}-targets.cmake") 701 EXPORT "${_paraview_build_INSTALL_EXPORT}" 702 DESTINATION "${_paraview_build_CMAKE_DESTINATION}" 703 ${_paraview_build_namespace_args} 704 FILE "${_paraview_build_INSTALL_EXPORT}-targets.cmake" 705 COMPONENT "${_paraview_build_TARGET_COMPONENT}") 710 if (DEFINED _paraview_build_PLUGINS_FILE_NAME) 711 set(_paraview_build_xml_file 712 "${CMAKE_BINARY_DIR}/${_paraview_build_plugin_destination}/${_paraview_build_PLUGINS_FILE_NAME}") 713 set(_paraview_build_xml_content 714 "<?xml version=\"1.0\"?>\n<Plugins>\n") 715 foreach (_paraview_build_plugin IN LISTS _paraview_build_PLUGINS) 717 # Make a variable for where the plugin should go. 718 set(_paraview_build_plugin_directory 719 "${_paraview_build_plugin_destination}/${_paraview_build_plugin}") 721 # Recover different attributes of the plugin 722 set(_paraview_build_autoload 0) 723 if (_paraview_build_plugin IN_LIST _paraview_build_AUTOLOAD) 724 set(_paraview_build_autoload 1) 726 set(_paraview_build_delayed_load 0) 727 if (_paraview_build_plugin IN_LIST _paraview_build_DELAYED_LOAD) 728 set(_paraview_build_delayed_load 1) 730 get_property(_paraview_build_plugin_version GLOBAL 731 PROPERTY "_paraview_plugin_${_paraview_build_plugin}_version") 732 get_property(_paraview_build_plugin_description GLOBAL 733 PROPERTY "_paraview_plugin_${_paraview_build_plugin}_description") 735 string(APPEND _paraview_build_xml_content 736 " <Plugin name=\"${_paraview_build_plugin}\" auto_load=\"${_paraview_build_autoload}\" delayed_load=\"${_paraview_build_delayed_load}\" version=\"${_paraview_build_plugin_version}\" description=\"${_paraview_build_plugin_description}\"") 738 if (_paraview_build_delayed_load) 739 string(APPEND _paraview_build_xml_content ">\n") 741 get_property(_paraview_build_plugin_delayed_load_xmls GLOBAL 742 PROPERTY "_paraview_plugin_${_paraview_build_plugin}_xmls") 743 foreach (_paraview_build_plugin_delayed_load_xml IN LISTS _paraview_build_plugin_delayed_load_xmls) 744 # Copy XML to build for easier usage 745 configure_file(${_paraview_build_plugin_delayed_load_xml} "${CMAKE_BINARY_DIR}/${_paraview_build_plugin_directory}" COPYONLY) 747 # Add XML relative path to to plugin config file 748 cmake_path(GET _paraview_build_plugin_delayed_load_xml FILENAME _paraview_build_plugin_delayed_load_xml_name) 749 string(APPEND _paraview_build_xml_content " <XML filename=\"${_paraview_build_plugin}/${_paraview_build_plugin_delayed_load_xml_name}\"/>\n") 751 string(APPEND _paraview_build_xml_content " </Plugin>\n") 755 FILES ${_paraview_build_plugin_delayed_load_xmls} 756 DESTINATION "${_paraview_build_plugin_directory}" 757 COMPONENT "${_paraview_build_TARGET_COMPONENT}") 759 string(APPEND _paraview_build_xml_content "/>\n") 763 string(APPEND _paraview_build_xml_content 767 OUTPUT "${_paraview_build_xml_file}" 768 CONTENT "${_paraview_build_xml_content}") 770 FILES "${_paraview_build_xml_file}" 771 DESTINATION "${_paraview_build_plugin_destination}" 772 COMPONENT "${_paraview_build_TARGET_COMPONENT}") 774 if (DEFINED _paraview_build_INSTALL_EXPORT) 775 set_property(TARGET "${_paraview_build_TARGET_NAME}" 777 "INTERFACE_paraview_plugin_plugins_file" "${_paraview_build_xml_file}") 779 if (DEFINED _paraview_build_RUNTIME_DESTINATION) 780 set_property(TARGET "${_paraview_build_TARGET_NAME}" 782 "INTERFACE_paraview_plugin_plugins_file_install" "${_paraview_build_plugin_destination}/${_paraview_build_PLUGINS_FILE_NAME}") 785 if (DEFINED _paraview_build_CMAKE_DESTINATION) 786 set(_paraview_build_properties_filename "${_paraview_build_INSTALL_EXPORT}-paraview-plugin-properties.cmake") 787 set(_paraview_build_properties_build_file 788 "${CMAKE_BINARY_DIR}/${_paraview_build_CMAKE_DESTINATION}/${_paraview_build_properties_filename}") 789 set(_paraview_build_properties_install_file 790 "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_paraview_build_properties_filename}.install") 792 file(WRITE "${_paraview_build_properties_build_file}") 793 file(WRITE "${_paraview_build_properties_install_file}") 795 _vtk_module_write_import_prefix( 796 "${_paraview_build_properties_install_file}" 797 "${_paraview_build_CMAKE_DESTINATION}") 799 file(APPEND "${_paraview_build_properties_build_file}" 800 "set_property(TARGET \"${_paraview_build_TARGET}\" 802 INTERFACE_paraview_plugin_plugins_file \"${_paraview_build_xml_file}\")\n") 803 file(APPEND "${_paraview_build_properties_install_file}" 804 "set_property(TARGET \"${_paraview_build_TARGET}\" 806 INTERFACE_paraview_plugin_plugins_file \"\${_vtk_module_import_prefix}/${_paraview_build_plugin_destination}/${_paraview_build_PLUGINS_FILE_NAME}\") 807 unset(_vtk_module_import_prefix)\n") 809 if (_paraview_build_INSTALL_HEADERS) 811 FILES "${_paraview_build_properties_install_file}" 812 DESTINATION "${_paraview_build_CMAKE_DESTINATION}" 813 RENAME "${_paraview_build_properties_filename}" 814 COMPONENT "${_paraview_build_TARGET_COMPONENT}") 822 ## Plugin configuration files 824 Applications will want to consume plugin targets by discovering their locations 825 at runtime. In order to facilitate this, ParaView supports loading a `conf` 826 file which contains the locations of plugin targets' XML files. The plugins
827 specified in that file is then
832 PLUGINS_TARGETS <target>...
833 BUILD_DESTINATION <destination>
835 [INSTALL_DESTINATION <destination>]
836 [COMPONENT <component>])
839 * `
NAME`: (Required) The base
name of the configuration file.
840 * `PLUGINS_TARGETS`: (Required) The list of plugin targets to add to the
842 * `BUILD_DESTINATION`: (Required) Where to place the configuration file in
844 * `INSTALL_DESTINATION`: Where to install the configuration file in the
845 install tree. If not provided, the configuration file will not be
847 * `COMPONENT`: (Defaults to `runtime`) The
component to use when installing
848 the configuration file.
851 cmake_parse_arguments(_paraview_plugin_conf
853 "NAME;BUILD_DESTINATION;INSTALL_DESTINATION;COMPONENT" 857 if (_paraview_plugin_conf_UNPARSED_ARGUMENTS)
859 "Unparsed arguments for paraview_plugin_write_conf: " 860 "${_paraview_plugin_conf_UNPARSED_ARGUMENTS}")
863 if (NOT _paraview_plugin_conf_NAME)
865 "The `NAME` must not be empty.")
868 if (NOT DEFINED _paraview_plugin_conf_BUILD_DESTINATION)
870 "The `BUILD_DESTINATION` argument is required.")
873 if (NOT DEFINED _paraview_plugin_conf_PLUGINS_TARGETS)
875 "The `PLUGINS_TARGETS` argument is required.")
878 if (NOT DEFINED _paraview_plugin_conf_COMPONENT)
879 set(_paraview_plugin_conf_COMPONENT
"runtime")
882 set(_paraview_plugin_conf_file_name
883 "${_paraview_plugin_conf_NAME}.conf")
884 set(_paraview_plugin_conf_build_file
885 "${CMAKE_BINARY_DIR}/${_paraview_plugin_conf_BUILD_DESTINATION}/${_paraview_plugin_conf_file_name}")
886 set(_paraview_plugin_conf_install_file
887 "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_paraview_plugin_conf_file_name}.install")
888 set(_paraview_plugin_conf_build_contents)
889 set(_paraview_plugin_conf_install_contents)
890 foreach (_paraview_plugin_conf_target IN LISTS _paraview_plugin_conf_PLUGINS_TARGETS)
891 get_property(_paraview_plugin_conf_plugins_target_is_imported
892 TARGET
"${_paraview_plugin_conf_target}" 894 if (_paraview_plugin_conf_plugins_target_is_imported)
895 get_property(_paraview_plugin_conf_plugins_target_xml_build
896 TARGET
"${_paraview_plugin_conf_target}" 897 PROPERTY
"INTERFACE_paraview_plugin_plugins_file")
898 set(_paraview_plugin_conf_plugins_target_xml_install
899 "${_paraview_plugin_conf_plugins_target_xml_build}")
901 file(RELATIVE_PATH _paraview_plugin_conf_rel_path
902 "/prefix/${CMAKE_INSTALL_PREFIX}" 903 "/prefix/${_paraview_plugin_conf_plugins_target_xml_install}")
904 # If the external plugins XML file is under our installation destination, 905 # use a relative path to it, otherwise keep the absolute path. 906 if (NOT _paraview_plugin_conf_rel_path MATCHES
"^\.\./")
907 file(RELATIVE_PATH _paraview_plugin_conf_plugins_target_xml_install
908 "/prefix/${CMAKE_INSTALL_PREFIX}/${_paraview_plugin_conf_INSTALL_DESTINATION}" 909 "/prefix/${_paraview_plugin_conf_plugins_target_xml_install}")
912 get_property(_paraview_plugin_conf_plugins_target_is_alias
913 TARGET
"${_paraview_plugin_conf_target}" 914 PROPERTY ALIASED_TARGET
916 if (_paraview_plugin_conf_plugins_target_is_alias)
917 get_property(_paraview_plugin_conf_target
918 TARGET
"${_paraview_plugin_conf_target}" 919 PROPERTY ALIASED_TARGET)
921 get_property(_paraview_plugin_conf_plugins_target_xml_build
922 TARGET
"${_paraview_plugin_conf_target}" 923 PROPERTY
"INTERFACE_paraview_plugin_plugins_file")
924 get_property(_paraview_plugin_conf_plugins_target_xml_install
925 TARGET
"${_paraview_plugin_conf_target}" 926 PROPERTY
"INTERFACE_paraview_plugin_plugins_file_install")
928 if (_paraview_plugin_conf_plugins_target_xml_install)
929 # Compute the relative path within the install tree. 930 file(RELATIVE_PATH _paraview_plugin_conf_plugins_target_xml_install
931 "/prefix/${_paraview_plugin_conf_INSTALL_DESTINATION}" 932 "/prefix/${_paraview_plugin_conf_plugins_target_xml_install}")
936 # TODO: Write out in JSON instead. 937 if (_paraview_plugin_conf_plugins_target_xml_build)
938 string(APPEND _paraview_plugin_conf_build_contents
939 "${_paraview_plugin_conf_plugins_target_xml_build}\n")
941 if (_paraview_plugin_conf_plugins_target_xml_install)
942 string(APPEND _paraview_plugin_conf_install_contents
943 "${_paraview_plugin_conf_plugins_target_xml_install}\n")
948 OUTPUT
"${_paraview_plugin_conf_build_file}" 949 CONTENT
"${_paraview_plugin_conf_build_contents}")
951 if (_paraview_plugin_conf_INSTALL_DESTINATION)
953 OUTPUT
"${_paraview_plugin_conf_install_file}" 954 CONTENT
"${_paraview_plugin_conf_install_contents}")
956 FILES
"${_paraview_plugin_conf_install_file}" 957 DESTINATION
"${_paraview_plugin_conf_INSTALL_DESTINATION}" 958 RENAME
"${_paraview_plugin_conf_file_name}" 959 COMPONENT
"${_paraview_plugin_conf_COMPONENT}")
963 set(_paraview_plugin_source_dir
"${CMAKE_CURRENT_LIST_DIR}")
972 [REQUIRED_ON_SERVER] [REQUIRED_ON_CLIENT]
975 [MODULE_FILES <vtk.module>...]
976 [MODULE_ARGS <arg>...]
977 [MODULES <module>...]
978 [SOURCES <source>...]
979 [SERVER_MANAGER_XML <xml>...]
980 [MODULE_INSTALL_EXPORT <export>]
982 [UI_INTERFACES <interface>...]
983 [UI_RESOURCES <resource>...]
986 [PYTHON_MODULES <module>...]
988 [INITIALIZERS <initializerFunction>...]
990 [EXTRA_INCLUDES <file>...]
992 [REQUIRED_PLUGINS <plugin>...]
995 [XML_DOCUMENTATION <ON|OFF>]
996 [DOCUMENTATION_DIR <directory>]
997 [DOCUMENTATION_ADD_PATTERNS <pattern>...]
998 [DOCUMENTATION_TOC <string>]
999 [DOCUMENTATION_DEPENDENCIES <target>...]
1001 [FORCE_STATIC <ON|OFF>])
1003 [TRANSLATIONS_DIRECTORY <directory>]
1004 [TRANSLATIONS_TARGET <target>]
1007 * `REQUIRED_ON_SERVER`: The plugin is required to be loaded
on the server
for 1008 proper functionality.
1009 * `REQUIRED_ON_CLIENT`: The plugin is required to be loaded
on the client
for 1010 proper functionality.
1012 * `MODULE_FILES`: Paths to `
vtk.module` files describing modules to include
1014 * `MODULE_ARGS`: Arguments to pass to `vtk_module_build`
for included modules.
1015 * `MODULES`: Modules to include in the plugin. These modules will be wrapped
1016 using client server and have their server manager XML files processed.
1017 * `SOURCES`: Source files
for the plugin.
1018 * `SERVER_MANAGER_XML`: Server manager XML files
for the plugin.
1019 * `UI_INTERFACES`: Interfaces to initialize, in the given
order. See the
1020 plugin interfaces section
for more
details.
1021 * `MODULE_INSTALL_EXPORT`: (Defaults to `<
name>`) If provided, any modules
1022 will be added to the given export
set.
1023 * `UI_RESOURCES`: Qt resource files to include with the plugin.
1024 * `UI_FILES`: Qt `.ui` files to include with the plugin.
1025 * `PYTHON_MODULES`: Python modules to embed into the plugin. Each entry should be a valid single-file Python plugin.
1026 Relative
import between them is not supported. Thus Python packages are not supported.
1027 * `INITIALIZERS`: An ordered list of free functions (declared in `EXTRA_INCLUDES`
1028 if needed) to be invoked when the plugin is loaded. Each
function must be
1029 callable with no arguments.
1030 * `EXTRA_INCLUDES`: Headers needed by the generated plugin code (such as `INITIALIZERS`).
1031 Filename paths passed without quotes will be
double-quoted (e.g., \verbatim`#include
"foo.h"`\endverbatim),
1032 while paths that start with angle- or
double-quotes will not be.
1033 * `REQUIRED_PLUGINS`: Plugins which must be loaded
for this plugin to
1034 function. These plugins
do not need to be available at build
time and are
1035 therefore their existence is not checked here.
1036 * `EULA`: A file with
content to display as an end-user license agreement
1037 before the plugin is initialized at runtime.
1038 * `XML_DOCUMENTATION`: (Defaults to `ON`) If
set,
documentation will be
1039 generated
for the associated XML files.
1040 * `DOCUMENTATION_DIR`: If specified, `*.html`, `*.css`, `*.png`, `*.js`, and `*.jpg`
1041 files in
this directory will be copied and made available to the
1043 * `DOCUMENTATION_ADD_PATTERNS`: If specified, adds patterns
for the
documentation files
1044 within `DOCUMENTATION_DIR` other than the
default ones (see `DOCUMENTATION_DIR` help)
1045 * `DOCUMENTATION_TOC`: If specified, use
this string for describing the table of
1047 * `DOCUMENTATION_DEPENDENCIES`: Targets that are needed to be built before
1050 * `FORCE_STATIC`: (Defaults to `OFF`) If
set, the plugin will be built
1051 statically so that it can be embedded into an application.
1052 * `TRANSLATIONS_DIRECTORY`: (Defaults to `${CMAKE_CURRENT_BINARY_DIR}/Translations`)
1053 The path of the directory where translation source files are stored.
1054 * `TRANSLATION_TARGET` : The name of the target on which to add the ts file as
1058 if (NOT name STREQUAL _paraview_build_plugin)
1060 "The ${_paraview_build_plugin}'s CMakeLists.txt may not add the ${name} " 1064 cmake_parse_arguments(_paraview_add_plugin
1065 "REQUIRED_ON_SERVER;REQUIRED_ON_CLIENT"
1066 "
VERSION;EULA;EXPORT;MODULE_INSTALL_EXPORT;XML_DOCUMENTATION;DOCUMENTATION_DIR;FORCE_STATIC;DOCUMENTATION_TOC;TRANSLATIONS_DIRECTORY;TRANSLATIONS_TARGET"
1067 "REQUIRED_PLUGINS;SERVER_MANAGER_XML;SOURCES;MODULES;UI_INTERFACES;UI_RESOURCES;UI_FILES;PYTHON_MODULES;MODULE_FILES;MODULE_ARGS;DOCUMENTATION_ADD_PATTERNS;DOCUMENTATION_DEPENDENCIES;INITIALIZERS;EXTRA_INCLUDES"
1070 if (_paraview_add_plugin_UNPARSED_ARGUMENTS)
1072 "Unparsed arguments for paraview_add_plugin: " 1073 "${_paraview_add_plugin_UNPARSED_ARGUMENTS}")
1076 if (NOT DEFINED _paraview_add_plugin_VERSION)
1078 "The `VERSION` argument is required.")
1082 "_paraview_plugin_${name}_version" "${_paraview_add_plugin_VERSION}")
1084 if (NOT DEFINED _paraview_add_plugin_XML_DOCUMENTATION)
1085 set(_paraview_add_plugin_XML_DOCUMENTATION ON)
1087 if (DEFINED _paraview_add_plugin_DOCUMENTATION_DIR AND
1088 NOT _paraview_add_plugin_XML_DOCUMENTATION)
1090 "Specifying `DOCUMENTATION_DIR` and turning off `XML_DOCUMENTATION` " 1093 if (_paraview_build_DISABLE_XML_DOCUMENTATION)
1094 set(_paraview_add_plugin_XML_DOCUMENTATION OFF)
1097 if (NOT DEFINED _paraview_add_plugin_FORCE_STATIC)
1098 set(_paraview_add_plugin_FORCE_STATIC OFF)
1101 if (DEFINED _paraview_add_plugin_EXPORT)
1103 "The `paraview_add_plugin(EXPORT)` argument is ignored in favor of " 1104 "`paraview_plugin_build(INSTALL_EXPORT)`.")
1107 if (_paraview_add_plugin_MODULE_ARGS)
1108 if (NOT _paraview_add_plugin_MODULE_FILES OR
1109 NOT _paraview_add_plugin_MODULES)
1111 "The `MODULE_ARGS` argument requires `MODULE_FILES` and `MODULES` to be provided.")
1115 if (_paraview_add_plugin_UI_INTERFACES OR _paraview_add_plugin_UI_FILES OR _paraview_add_plugin_UI_RESOURCES)
1116 if (NOT PARAVIEW_USE_QT)
1117 message(FATAL_ERROR
"UI_INTERFACES, UI_FILES and UI_RESOURCES require ParaView to be built with Qt enabled.")
1121 if (DEFINED _paraview_build_INSTALL_EXPORT AND
1122 NOT DEFINED _paraview_add_plugin_MODULE_INSTALL_EXPORT)
1123 set(_paraview_add_plugin_MODULE_INSTALL_EXPORT
1127 if (_paraview_add_plugin_MODULE_FILES)
1128 if (NOT _paraview_add_plugin_MODULES)
1130 "The `MODULE_FILES` argument requires `MODULES` to be provided.")
1133 if (_paraview_build_ADD_INSTALL_RPATHS)
1135 list(INSERT CMAKE_INSTALL_RPATH 0
1138 list(INSERT CMAKE_INSTALL_RPATH 0
1143 set(_paraview_add_plugin_module_install_export_args)
1144 if (DEFINED _paraview_add_plugin_MODULE_INSTALL_EXPORT)
1145 list(APPEND _paraview_add_plugin_module_install_export_args
1146 INSTALL_EXPORT
"${_paraview_add_plugin_MODULE_INSTALL_EXPORT}")
1147 if (DEFINED _paraview_build_TARGET)
1148 set_property(GLOBAL APPEND
1150 "paraview_plugin_${_paraview_build_TARGET}_required_exports" "${_paraview_add_plugin_MODULE_INSTALL_EXPORT}")
1155 MODULE_FILES ${_paraview_add_plugin_MODULE_FILES}
1156 REQUEST_MODULES ${_paraview_add_plugin_MODULES}
1157 PROVIDES_MODULES plugin_modules
1158 REQUIRES_MODULES required_modules
1159 HIDE_MODULES_FROM_CACHE ON)
1161 if (required_modules)
1162 foreach (required_module IN LISTS required_modules)
1163 if (NOT TARGET
"${required_module}")
1165 "Failed to find the required module ${required_module}.")
1171 set(_paraview_plugin_subdir
"${_paraview_build_RUNTIME_DESTINATION}")
1173 set(_paraview_plugin_subdir
"${_paraview_build_LIBRARY_DESTINATION}")
1175 if (NOT _paraview_build_LIBRARY_SUBDIRECTORY STREQUAL
"")
1176 string(APPEND _paraview_plugin_subdir
"/${_paraview_build_LIBRARY_SUBDIRECTORY}")
1178 string(APPEND _paraview_plugin_subdir
"/${_paraview_build_plugin}")
1179 set(_paraview_plugin_CMAKE_RUNTIME_OUTPUT_DIRECTORY
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
1180 set(_paraview_plugin_CMAKE_LIBRARY_OUTPUT_DIRECTORY
"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
1181 set(_paraview_plugin_CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")
1182 set(_paraview_plugin_CMAKE_INSTALL_NAME_DIR
"${CMAKE_INSTALL_NAME_DIR}")
1183 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${_paraview_plugin_subdir}")
1184 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${_paraview_plugin_subdir}")
1185 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${_paraview_plugin_subdir}")
1186 set(CMAKE_INSTALL_NAME_DIR
"@loader_path")
1189 MODULES ${plugin_modules}
1190 PACKAGE "${_paraview_build_plugin}" 1191 USE_FILE_SETS
"${_paraview_build_USE_FILE_SETS}" 1192 ${_paraview_add_plugin_module_install_export_args}
1193 INSTALL_HEADERS
"${_paraview_build_INSTALL_HEADERS}" 1194 TARGETS_COMPONENT
"${_paraview_build_PLUGINS_COMPONENT}" 1195 HEADERS_DESTINATION
"${_paraview_build_HEADERS_DESTINATION}/${_paraview_build_target_safe}" 1196 ARCHIVE_DESTINATION
"${_paraview_plugin_subdir}" 1197 LIBRARY_DESTINATION
"${_paraview_plugin_subdir}" 1198 RUNTIME_DESTINATION
"${_paraview_plugin_subdir}" 1199 CMAKE_DESTINATION
"${_paraview_build_CMAKE_DESTINATION}" 1200 ${_paraview_add_plugin_MODULE_ARGS}
1201 GENERATE_SPDX
"${_paraview_build_GENERATE_SPDX}" 1202 SPDX_DOCUMENT_NAMESPACE
"${_paraview_build_SPDX_DOCUMENT_NAMESPACE}" 1203 SPDX_DOWNLOAD_LOCATION
"${_paraview_build_SPDX_DOWNLOAD_LOCATION}")
1205 set_property(GLOBAL APPEND
1207 "paraview_plugin_${_paraview_add_plugin_MODULE_INSTALL_EXPORT}_modules" "${plugin_modules}")
1209 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
"${_paraview_plugin_CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
1210 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
"${_paraview_plugin_CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
1211 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"${_paraview_plugin_CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")
1212 set(CMAKE_INSTALL_NAME_DIR
"${_paraview_plugin_CMAKE_INSTALL_NAME_DIR}")
1213 unset(_paraview_plugin_CMAKE_RUNTIME_OUTPUT_DIRECTORY)
1214 unset(_paraview_plugin_CMAKE_LIBRARY_OUTPUT_DIRECTORY)
1215 unset(_paraview_plugin_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
1216 unset(_paraview_plugin_CMAKE_INSTALL_NAME_DIR)
1219 # TODO: resource initialization for static builds 1221 if (_paraview_add_plugin_REQUIRED_ON_SERVER)
1222 set(_paraview_add_plugin_required_on_server
"true")
1224 set(_paraview_add_plugin_required_on_server
"false")
1227 if (_paraview_add_plugin_REQUIRED_ON_CLIENT)
1228 set(_paraview_add_plugin_required_on_client
"true")
1230 set(_paraview_add_plugin_required_on_client
"false")
1233 set(_paraview_add_plugin_export_args)
1234 set(_paraview_add_plugin_install_export_args)
1235 if (DEFINED _paraview_build_INSTALL_EXPORT)
1236 list(APPEND _paraview_add_plugin_export_args
1237 EXPORT "${_paraview_build_INSTALL_EXPORT}")
1238 list(APPEND _paraview_add_plugin_install_export_args
1239 INSTALL_EXPORT
"${_paraview_build_INSTALL_EXPORT}")
1242 set(_paraview_add_plugin_includes)
1243 set(_paraview_add_plugin_required_libraries)
1245 if (_paraview_add_plugin_EXTRA_INCLUDES)
1246 foreach (_include IN LISTS _paraview_add_plugin_EXTRA_INCLUDES)
1247 if ((${_include} MATCHES
"^\".*\"$") OR (${_include} MATCHES
"^<.*>$"))
1248 string(APPEND _paraview_add_plugin_includes
"#include ${_include}\n")
1250 string(APPEND _paraview_add_plugin_includes
"#include \"${_include}\"\n")
1255 set(_paraview_add_plugin_module_xmls)
1257 if (_paraview_add_plugin_MODULES)
1260 list(APPEND _paraview_add_plugin_required_libraries
1261 ${_paraview_add_plugin_MODULES})
1264 MODULES ${_paraview_add_plugin_MODULES}
1265 TARGET
"${_paraview_build_plugin}_client_server" 1266 ${_paraview_add_plugin_install_export_args})
1268 if (NOT DEFINED _paraview_add_plugin_TRANSLATIONS_DIRECTORY)
1269 set(_paraview_add_plugin_TRANSLATIONS_DIRECTORY
1270 "${CMAKE_CURRENT_BINARY_DIR}/Translations")
1272 set(_paraview_add_plugin_translation_args)
1273 if (_paraview_add_plugin_TRANSLATIONS_DIRECTORY AND _paraview_add_plugin_TRANSLATIONS_TARGET)
1274 list(APPEND _paraview_add_plugin_translation_args
1275 TRANSLATIONS_DIRECTORY
"${_paraview_add_plugin_TRANSLATIONS_DIRECTORY}")
1276 list(APPEND _paraview_add_plugin_translation_args
1277 TRANSLATIONS_TARGET
"${_paraview_add_plugin_TRANSLATIONS_TARGET}")
1281 MODULES ${_paraview_add_plugin_MODULES}
1282 TARGET
"${_paraview_build_plugin}_server_manager_modules" 1283 ${_paraview_add_plugin_install_export_args}
1284 XML_FILES _paraview_add_plugin_module_xmls
1285 ${_paraview_add_plugin_translation_args})
1287 list(APPEND _paraview_add_plugin_required_libraries
1288 "${_paraview_build_plugin}_client_server" 1289 "${_paraview_build_plugin}_server_manager_modules")
1292 set(_paraview_add_plugin_binary_resources
"")
1293 set(_paraview_add_plugin_binary_headers)
1294 if (_paraview_add_plugin_SERVER_MANAGER_XML)
1297 set(_paraview_add_plugin_xmls)
1298 foreach (_paraview_add_plugin_xml IN LISTS _paraview_add_plugin_SERVER_MANAGER_XML)
1299 if (NOT IS_ABSOLUTE
"${_paraview_add_plugin_xml}")
1300 set(_paraview_add_plugin_xml
"${CMAKE_CURRENT_SOURCE_DIR}/${_paraview_add_plugin_xml}")
1303 list(APPEND _paraview_add_plugin_xmls
1304 "${_paraview_add_plugin_xml}")
1307 set_property(GLOBAL APPEND
1309 "_paraview_plugin_${_paraview_build_plugin}_xmls" "${_paraview_add_plugin_xmls}")
1312 TARGET
"${_paraview_build_plugin}_server_manager" 1313 ${_paraview_add_plugin_install_export_args}
1314 FILES ${_paraview_add_plugin_xmls})
1315 list(APPEND _paraview_add_plugin_required_libraries
1316 "${_paraview_build_plugin}_server_manager")
1319 if ((_paraview_add_plugin_module_xmls OR _paraview_add_plugin_xmls) AND
1320 PARAVIEW_USE_QT AND _paraview_add_plugin_XML_DOCUMENTATION)
1321 set(_paraview_build_plugin_docdir
1322 "${CMAKE_CURRENT_BINARY_DIR}/paraview_help")
1325 TARGET
"${_paraview_build_plugin}_doc" 1326 OUTPUT_DIR
"${_paraview_build_plugin_docdir}" 1327 XMLS ${_paraview_add_plugin_module_xmls}
1328 ${_paraview_add_plugin_xmls})
1330 set(_paraview_build_plugin_doc_source_args)
1331 if (DEFINED _paraview_add_plugin_DOCUMENTATION_DIR)
1332 list(APPEND _paraview_build_plugin_doc_source_args
1333 SOURCE_DIR
"${_paraview_add_plugin_DOCUMENTATION_DIR}")
1337 NAME "${_paraview_build_plugin}" 1338 OUTPUT_PATH _paraview_build_plugin_qch_path
1339 OUTPUT_DIR
"${_paraview_build_plugin_docdir}" 1340 TARGET
"${_paraview_build_plugin}_qch" 1341 ${_paraview_build_plugin_doc_source_args}
1342 TABLE_OF_CONTENTS
"${_paraview_add_plugin_DOCUMENTATION_TOC}" 1343 DEPENDS
"${_paraview_build_plugin}_doc" 1344 "${_paraview_add_plugin_DOCUMENTATION_DEPENDENCIES}" 1345 PATTERNS
"*.html" "*.css" "*.png" "*.jpg" "*.js" 1346 ${_paraview_add_plugin_DOCUMENTATION_ADD_PATTERNS})
1348 set(_paraview_add_plugin_depends_args)
1349 if (CMAKE_VERSION VERSION_GREATER_EQUAL
"3.27")
1350 list(APPEND _paraview_add_plugin_depends_args
1351 DEPENDS_EXPLICIT_ONLY)
1354 list(APPEND _paraview_add_plugin_extra_include_dirs
1355 "${CMAKE_CURRENT_BINARY_DIR}")
1356 set(_paraview_add_plugin_qch_output
1357 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_build_plugin}_qch.h")
1358 list(APPEND _paraview_add_plugin_binary_headers
1359 "${_paraview_add_plugin_qch_output}")
1361 OUTPUT
"${_paraview_add_plugin_qch_output}" 1362 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR}
1363 "$<TARGET_FILE:ParaView::ProcessXML>" 1365 "${_paraview_add_plugin_qch_output}" 1369 "${_paraview_build_plugin_qch_path}
" 1370 DEPENDS "${_paraview_build_plugin_qch_path}
" 1371 "${_paraview_build_plugin}_qch
" 1372 "$<TARGET_FILE:ParaView::ProcessXML>
" 1373 COMMENT "Generating header
for ${_paraview_build_plugin}
documentation" 1374 ${_paraview_add_plugin_depends_args}) 1375 set_property(SOURCE "${_paraview_add_plugin_qch_output}
" 1379 string(APPEND _paraview_add_plugin_includes 1380 "#include \
"${_paraview_build_plugin}_qch.h\"\n")
1381 string(APPEND _paraview_add_plugin_binary_resources
1383 const char *text = ${_paraview_build_plugin}_qch(); 1384 resources.emplace_back(text); 1389 set(_paraview_add_plugin_eula_sources)
1390 if (_paraview_add_plugin_EULA)
1392 INPUT
"${_paraview_add_plugin_EULA}" 1393 NAME "${_paraview_build_plugin}_EULA" 1394 HEADER_OUTPUT _paraview_add_plugin_eula_header
1395 SOURCE_OUTPUT _paraview_add_plugin_eula_source)
1396 list(APPEND _paraview_add_plugin_eula_sources
1397 "${_paraview_add_plugin_eula_header}" 1398 "${_paraview_add_plugin_eula_source}")
1402 set(_paraview_add_plugin_ui_sources)
1403 if (_paraview_add_plugin_UI_INTERFACES)
1405 set(CMAKE_AUTOMOC 1)
1406 set(_paraview_add_plugin_push_back_interfaces
1407 "#define PARAVIEW_ADD_INTERFACES(arg) \\\n")
1408 set(_paraview_add_plugin_include_interfaces
"")
1410 foreach (_paraview_add_plugin_ui_interface IN LISTS _paraview_add_plugin_UI_INTERFACES)
1411 string(APPEND _paraview_add_plugin_push_back_interfaces
1412 " (arg).push_back(new ${_paraview_add_plugin_ui_interface}(this)); \\\n")
1413 string(APPEND _paraview_add_plugin_include_interfaces
1414 "#include \"${_paraview_add_plugin_ui_interface}.h\"\n")
1416 list(APPEND _paraview_add_plugin_required_libraries
1417 ParaView::pqComponents)
1421 if (_paraview_add_plugin_INITIALIZERS)
1423 set(_paraview_add_plugin_invoke_initializers)
1425 foreach (_paraview_add_plugin_initializer IN LISTS _paraview_add_plugin_INITIALIZERS)
1426 string(APPEND _paraview_add_plugin_invoke_initializers
1427 " ${_paraview_add_plugin_initializer}();\n")
1431 set(_paraview_add_plugin_with_resources 0)
1432 set(_paraview_add_plugin_resources_init)
1433 if (_paraview_add_plugin_UI_RESOURCES)
1434 set(_paraview_add_plugin_with_resources 1)
1435 set(CMAKE_AUTORCC 1)
1437 foreach (_paraview_add_plugin_ui_resource IN LISTS _paraview_add_plugin_UI_RESOURCES)
1438 get_filename_component(_paraview_add_plugin_ui_resource_base
"${_paraview_add_plugin_ui_resource}" NAME_WE)
1439 string(APPEND _paraview_add_plugin_resources_init
1440 " Q_INIT_RESOURCE(${_paraview_add_plugin_ui_resource_base});\n")
1443 list(APPEND _paraview_add_plugin_ui_sources
1444 ${_paraview_add_plugin_UI_RESOURCES})
1447 set(_paraview_add_plugin_qt_extra_components)
1448 if (_paraview_add_plugin_UI_FILES)
1450 set(CMAKE_AUTOUIC 1)
1451 list(APPEND _paraview_add_plugin_qt_extra_components
1453 list(APPEND _paraview_add_plugin_required_libraries
1454 "Qt${PARAVIEW_QT_MAJOR_VERSION}::Widgets")
1455 list(APPEND _paraview_add_plugin_ui_sources
1456 ${_paraview_add_plugin_UI_FILES})
1460 include(
"${_ParaViewPlugin_cmake_dir}/paraview-find-package-helpers.cmake" OPTIONAL)
1461 find_package(
"Qt${PARAVIEW_QT_MAJOR_VERSION}" QUIET REQUIRED COMPONENTS Core ${_paraview_add_plugin_qt_extra_components})
1462 list(APPEND _paraview_add_plugin_required_libraries
1463 "Qt${PARAVIEW_QT_MAJOR_VERSION}::Core")
1465 list(APPEND _paraview_add_plugin_required_libraries
1469 # CMake 3.13 started using Qt5's version variables to detect what version 1470 # of Qt's tools to run for automoc, autouic, and autorcc. However, they are 1471 # looked up using the target's directory scope, but these are here in a 1472 # local scope and unset when AutoGen gets around to asking about the 1473 # variables at generate time. 1475 # Fix for 3.13.0–3.13.3. Does not work if `paraview_add_plugin` is called 1476 # from another function. 1477 set(
"Qt${PARAVIEW_QT_MAJOR_VERSION}Core_VERSION_MAJOR" "${Qt${PARAVIEW_QT_MAJOR_VERSION}Core_VERSION_MAJOR}" PARENT_SCOPE)
1478 set(
"Qt${PARAVIEW_QT_MAJOR_VERSION}Core_VERSION_MINOR" "${Qt${PARAVIEW_QT_MAJOR_VERSION}Core_VERSION_MINOR}" PARENT_SCOPE)
1480 set_property(DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}" 1482 "Qt${PARAVIEW_QT_MAJOR_VERSION}Core_VERSION_MAJOR" "${Qt${PARAVIEW_QT_MAJOR_VERSION}Core_VERSION_MAJOR}")
1483 set_property(DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}" 1485 "Qt${PARAVIEW_QT_MAJOR_VERSION}Core_VERSION_MINOR" "${Qt${PARAVIEW_QT_MAJOR_VERSION}Core_VERSION_MAJOR}")
1489 set(_paraview_add_plugin_python_sources)
1490 set(_paraview_add_plugin_python_includes)
1491 set(_paraview_add_plugin_python_modules)
1492 set(_paraview_add_plugin_python_module_sources)
1493 set(_paraview_add_plugin_python_package_flags)
1494 set(_paraview_add_plugin_python_libraries)
1495 if (_paraview_add_plugin_PYTHON_MODULES)
1497 # python code may include servermanager XML
1499 list(APPEND _paraview_add_plugin_python_libraries
"ParaView::RemotingServerManagerPython")
1500 foreach (_paraview_add_plugin_python_module IN LISTS _paraview_add_plugin_PYTHON_MODULES)
1501 set(_paraview_add_plugin_python_path
1502 "${CMAKE_CURRENT_SOURCE_DIR}/${_paraview_add_plugin_python_module}")
1503 get_filename_component(_paraview_add_plugin_python_package
"${_paraview_add_plugin_python_module}" PATH)
1504 get_filename_component(_paraview_add_plugin_python_name
"${_paraview_add_plugin_python_module}" NAME_WE)
1505 if (_paraview_add_plugin_python_package)
1506 set(_paraview_add_plugin_python_full_name
1507 "${_paraview_add_plugin_python_package}.${_paraview_add_plugin_python_name}")
1509 set(_paraview_add_plugin_python_full_name
1510 "${_paraview_add_plugin_python_name}")
1512 string(REPLACE
"." "_" _paraview_add_plugin_python_module_mangled
"${_paraview_add_plugin_python_full_name}")
1513 set(_paraview_add_plugin_python_is_package 0)
1514 set(_paraview_add_plugin_python_import
1515 "${_paraview_add_plugin_python_full_name}")
1516 if (_paraview_add_plugin_python_name STREQUAL
"__init__")
1517 set(_paraview_add_plugin_python_is_package 1)
1518 set(_paraview_add_plugin_python_import
1519 "${_paraview_add_plugin_python_package}")
1521 set(_paraview_add_plugin_python_header_name
1522 "WrappedPython_${_paraview_build_plugin}_${_paraview_add_plugin_python_module_mangled}.h")
1523 set(_paraview_add_plugin_python_header
1524 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_add_plugin_python_header_name}")
1526 set(_paraview_add_plugin_python_depends_args)
1527 if (CMAKE_VERSION VERSION_GREATER_EQUAL
"3.27")
1528 list(APPEND _paraview_add_plugin_python_depends_args
1529 DEPENDS_EXPLICIT_ONLY)
1533 OUTPUT
"${_paraview_add_plugin_python_header}" 1534 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR}
1535 "$<TARGET_FILE:ParaView::ProcessXML>" 1536 "${_paraview_add_plugin_python_header}" 1537 "module_${_paraview_add_plugin_python_module_mangled}_" 1540 "${_paraview_add_plugin_python_path}" 1541 DEPENDS
"${_paraview_add_plugin_python_path}" 1542 "$<TARGET_FILE:ParaView::ProcessXML>" 1543 COMMENT
"Convert Python module ${_paraview_add_plugin_python_module_name} for ${_paraview_build_plugin}" 1544 ${_paraview_add_plugin_python_depends_args})
1546 list(APPEND _paraview_add_plugin_python_sources
1547 "${_paraview_add_plugin_python_header}")
1548 string(APPEND _paraview_add_plugin_python_includes
1549 "#include \"${_paraview_add_plugin_python_header_name}\"\n")
1550 string(APPEND _paraview_add_plugin_python_modules
1551 " \"${_paraview_add_plugin_python_import}\",\n")
1552 string(APPEND _paraview_add_plugin_python_module_sources
1553 " module_${_paraview_add_plugin_python_module_mangled}_${_paraview_add_plugin_python_name}_source(),\n")
1554 string(APPEND _paraview_add_plugin_python_package_flags
1555 " ${_paraview_add_plugin_python_is_package},\n")
1558 # Add terminators to the list. 1559 string(APPEND _paraview_add_plugin_python_modules
1561 string(APPEND _paraview_add_plugin_python_module_sources
1563 string(APPEND _paraview_add_plugin_python_package_flags
1567 set(_paraview_add_plugin_header
1568 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_build_plugin}Plugin.h")
1569 set(_paraview_add_plugin_source
1570 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_build_plugin}Plugin.cxx")
1572 get_property(_paraview_add_plugin_description GLOBAL
1573 PROPERTY
"_paraview_plugin_${_paraview_build_plugin}_description")
1575 set(_paraview_build_plugin_type MODULE)
1578 set(_paraview_build_plugin_type STATIC)
1583 "${_paraview_plugin_source_dir}/paraview_plugin.h.in" 1584 "${_paraview_add_plugin_header}")
1586 "${_paraview_plugin_source_dir}/paraview_plugin.cxx.in" 1587 "${_paraview_add_plugin_source}")
1590 # On Windows, we want `MODULE` libraries to go to the runtime directory, 1591 # but CMake always uses `CMAKE_LIBRARY_OUTPUT_DIRECTORY`. 1592 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
1594 if (NOT _paraview_build_LIBRARY_SUBDIRECTORY STREQUAL
"")
1595 string(APPEND CMAKE_LIBRARY_OUTPUT_DIRECTORY
"/${_paraview_build_LIBRARY_SUBDIRECTORY}")
1597 string(APPEND CMAKE_LIBRARY_OUTPUT_DIRECTORY
"/${_paraview_build_plugin}")
1599 # Place static plugins in the same place they would be if they were shared. 1600 if (NOT _paraview_build_LIBRARY_SUBDIRECTORY STREQUAL
"")
1601 string(APPEND CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"/${_paraview_build_LIBRARY_SUBDIRECTORY}")
1603 string(APPEND CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"/${_paraview_build_plugin}")
1605 add_library(
"${_paraview_build_plugin}" "${_paraview_build_plugin_type}")
1606 target_sources(
"${_paraview_build_plugin}" 1608 ${_paraview_add_plugin_source}
1609 ${_paraview_add_plugin_eula_sources}
1610 ${_paraview_add_plugin_ui_sources}
1611 ${_paraview_add_plugin_python_sources}
1612 ${_paraview_add_plugin_SOURCES})
1613 # Forward the file
set option internally.
1614 set(_vtk_build_USE_FILE_SETS
"${_paraview_build_USE_FILE_SETS}")
1615 _vtk_module_add_file_set(
"${_paraview_build_plugin}" 1616 NAME paraview_plugin_headers
1618 BASE_DIRS
"${CMAKE_CURRENT_BINARY_DIR}" 1619 FILES ${_paraview_add_plugin_header}
1620 ${_paraview_add_plugin_binary_headers})
1622 target_compile_definitions(
"${_paraview_build_plugin}" 1626 target_link_libraries(
"${_paraview_build_plugin}" 1628 ParaView::RemotingCore
1629 ${_paraview_add_plugin_python_libraries}
1630 ${_paraview_add_plugin_required_libraries})
1631 target_include_directories(
"${_paraview_build_plugin}" 1633 "${CMAKE_CURRENT_SOURCE_DIR}" 1634 ${_paraview_add_plugin_extra_include_dirs})
1635 set_property(TARGET
"${_paraview_build_plugin}" 1639 set(_paraview_add_plugin_destination
1640 "${_paraview_build_plugin_destination}/${_paraview_build_plugin}")
1642 TARGETS
"${_paraview_build_plugin}" 1643 ${_paraview_add_plugin_export_args}
1644 COMPONENT
"${_paraview_build_PLUGINS_COMPONENT}" 1645 ARCHIVE DESTINATION
"${_paraview_add_plugin_destination}" 1646 LIBRARY DESTINATION
"${_paraview_add_plugin_destination}")
1650 ## Plugin interfaces 1652 ParaView plugins may satisfy a number of interfaces. These functions all take a
1653 `INTERFACES` argument which takes the name of a variable to
set with the name
1654 of the
interface generated. This variable's should be passed to
1655 `paraview_add_plugin`'s `UI_INTERFACES` argument.
1661 TODO: What is a
property widget?
1665 KIND <WIDGET|GROUP_WIDGET|WIDGET_DECORATOR>
1668 INTERFACES <variable>
1672 * `KIND`: The kind of widget represented.
1673 * `
TYPE`: The name of the
property type.
1674 * `CLASS_NAME`: The name of the
property widget
class.
1675 * `INTERFACES`: The name of the generated interface.
1676 * `SOURCES`: The
source files generated by the interface.
1679 cmake_parse_arguments(_paraview_property_widget
1681 "KIND;TYPE;CLASS_NAME;INTERFACES;SOURCES" 1685 if (_paraview_property_widget_UNPARSED_ARGUMENTS)
1687 "Unparsed arguments for paraview_plugin_add_property_widget: " 1688 "${_paraview_property_widget_UNPARSED_ARGUMENTS}")
1691 set(_paraview_property_widget_kind_widget 0)
1692 set(_paraview_property_widget_kind_group_widget 0)
1693 set(_paraview_property_widget_kind_widget_decorator 0)
1694 if (_paraview_property_widget_KIND STREQUAL
"WIDGET")
1695 set(_paraview_property_widget_kind_widget 1)
1696 elseif (_paraview_property_widget_KIND STREQUAL
"GROUP_WIDGET")
1697 set(_paraview_property_widget_kind_group_widget 1)
1698 elseif (_paraview_property_widget_KIND STREQUAL
"WIDGET_DECORATOR")
1699 set(_paraview_property_widget_kind_widget_decorator 1)
1702 "The `KIND` argument must be one of `WIDGET`, `GROUP_WIDGET`, or " 1703 "`WIDGET_DECORATOR`.")
1706 if (NOT DEFINED _paraview_property_widget_TYPE)
1708 "The `TYPE` argument is required.")
1711 if (NOT DEFINED _paraview_property_widget_CLASS_NAME)
1713 "The `CLASS_NAME` argument is required.")
1716 if (NOT DEFINED _paraview_property_widget_INTERFACES)
1718 "The `INTERFACES` argument is required.")
1721 if (NOT DEFINED _paraview_property_widget_SOURCES)
1723 "The `SOURCES` argument is required.")
1727 "${_ParaViewPlugin_cmake_dir}/pqPropertyWidgetInterface.h.in" 1728 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_property_widget_CLASS_NAME}PWIImplementation.h" 1731 "${_ParaViewPlugin_cmake_dir}/pqPropertyWidgetInterface.cxx.in" 1732 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_property_widget_CLASS_NAME}PWIImplementation.cxx" 1735 set(
"${_paraview_property_widget_INTERFACES}" 1736 "${_paraview_property_widget_CLASS_NAME}PWIImplementation" 1739 set(
"${_paraview_property_widget_SOURCES}" 1740 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_property_widget_CLASS_NAME}PWIImplementation.cxx" 1741 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_property_widget_CLASS_NAME}PWIImplementation.h" 1748 TODO: What is a dock window?
1753 [DOCK_AREA <Right|Left|Top|Bottom>]
1754 INTERFACES <variable>
1758 * `CLASS_NAME`: The name of the dock window
class.
1759 * `DOCK_AREA`: (Default `Left`) Where to dock the window within the
1761 * `INTERFACES`: The name of the generated interface.
1762 * `SOURCES`: The
source files generated by the interface.
1765 cmake_parse_arguments(_paraview_dock_window
1767 "DOCK_AREA;CLASS_NAME;INTERFACES;SOURCES" 1771 if (_paraview_dock_window_UNPARSED_ARGUMENTS)
1773 "Unparsed arguments for paraview_plugin_add_dock_window: " 1774 "${_paraview_dock_window_UNPARSED_ARGUMENTS}")
1777 if (NOT DEFINED _paraview_dock_window_CLASS_NAME)
1779 "The `CLASS_NAME` argument is required.")
1782 if (NOT DEFINED _paraview_dock_window_INTERFACES)
1784 "The `INTERFACES` argument is required.")
1787 if (NOT DEFINED _paraview_dock_window_SOURCES)
1789 "The `SOURCES` argument is required.")
1792 if (NOT DEFINED _paraview_dock_window_DOCK_AREA)
1793 set(_paraview_dock_window_DOCK_AREA
"Left")
1796 if (NOT _paraview_dock_window_DOCK_AREA STREQUAL
"Left" AND
1797 NOT _paraview_dock_window_DOCK_AREA STREQUAL
"Right" AND
1798 NOT _paraview_dock_window_DOCK_AREA STREQUAL
"Top" AND
1799 NOT _paraview_dock_window_DOCK_AREA STREQUAL
"Bottom")
1801 "`DOCK_AREA` must be one of `Left`, `Right`, `Top`, or `Bottom`. Got " 1802 "`${_paraview_dock_window_DOCK_AREA}`.")
1806 "${_ParaViewPlugin_cmake_dir}/pqDockWindowImplementation.h.in" 1807 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_dock_window_CLASS_NAME}Implementation.h" 1810 "${_ParaViewPlugin_cmake_dir}/pqDockWindowImplementation.cxx.in" 1811 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_dock_window_CLASS_NAME}Implementation.cxx" 1814 set(
"${_paraview_dock_window_INTERFACES}" 1815 "${_paraview_dock_window_CLASS_NAME}Implementation" 1818 set(
"${_paraview_dock_window_SOURCES}" 1819 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_dock_window_CLASS_NAME}Implementation.cxx" 1820 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_dock_window_CLASS_NAME}Implementation.h" 1827 TODO: What is an action group?
1833 INTERFACES <variable>
1837 * `CLASS_NAME`: The name of the action group
class.
1838 * `GROUP_NAME`: The name of the action group.
1839 * `INTERFACES`: The name of the generated interface.
1840 * `SOURCES`: The
source files generated by the interface.
1843 cmake_parse_arguments(_paraview_action_group
1845 "CLASS_NAME;GROUP_NAME;INTERFACES;SOURCES" 1849 if (_paraview_action_group_UNPARSED_ARGUMENTS)
1851 "Unparsed arguments for paraview_plugin_add_action_group: " 1852 "${_paraview_action_group_UNPARSED_ARGUMENTS}")
1855 if (NOT DEFINED _paraview_action_group_CLASS_NAME)
1857 "The `CLASS_NAME` argument is required.")
1860 if (NOT DEFINED _paraview_action_group_GROUP_NAME)
1862 "The `GROUP_NAME` argument is required.")
1865 if (NOT DEFINED _paraview_action_group_INTERFACES)
1867 "The `INTERFACES` argument is required.")
1870 if (NOT DEFINED _paraview_action_group_SOURCES)
1872 "The `SOURCES` argument is required.")
1876 "${_ParaViewPlugin_cmake_dir}/pqActionGroupImplementation.h.in" 1877 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_action_group_CLASS_NAME}Implementation.h" 1880 "${_ParaViewPlugin_cmake_dir}/pqActionGroupImplementation.cxx.in" 1881 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_action_group_CLASS_NAME}Implementation.cxx" 1884 set(
"${_paraview_action_group_INTERFACES}" 1885 "${_paraview_action_group_CLASS_NAME}Implementation" 1888 set(
"${_paraview_action_group_SOURCES}" 1889 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_action_group_CLASS_NAME}Implementation.cxx" 1890 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_action_group_CLASS_NAME}Implementation.h" 1897 TODO: What is a toolbar?
1902 INTERFACES <variable>
1906 * `CLASS_NAME`: The name of the toolbar
class.
1907 * `INTERFACES`: The name of the generated interface.
1908 * `SOURCES`: The
source files generated by the interface.
1911 cmake_parse_arguments(_paraview_toolbar
1913 "CLASS_NAME;INTERFACES;SOURCES" 1917 if (_paraview_toolbar_UNPARSED_ARGUMENTS)
1919 "Unparsed arguments for paraview_plugin_add_toolbar: " 1920 "${_paraview_toolbar_UNPARSED_ARGUMENTS}")
1923 if (NOT DEFINED _paraview_toolbar_CLASS_NAME)
1925 "The `CLASS_NAME` argument is required.")
1928 if (NOT DEFINED _paraview_toolbar_INTERFACES)
1930 "The `INTERFACES` argument is required.")
1933 if (NOT DEFINED _paraview_toolbar_SOURCES)
1935 "The `SOURCES` argument is required.")
1939 "${_ParaViewPlugin_cmake_dir}/pqToolBarImplementation.h.in" 1940 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_toolbar_CLASS_NAME}Implementation.h" 1943 "${_ParaViewPlugin_cmake_dir}/pqToolBarImplementation.cxx.in" 1944 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_toolbar_CLASS_NAME}Implementation.cxx" 1947 set(
"${_paraview_toolbar_INTERFACES}" 1948 "${_paraview_toolbar_CLASS_NAME}Implementation" 1951 set(
"${_paraview_toolbar_SOURCES}" 1952 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_toolbar_CLASS_NAME}Implementation.cxx" 1953 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_toolbar_CLASS_NAME}Implementation.h" 1960 TODO: What is an
auto start?
1965 [STARTUP <function>]
1966 [SHUTDOWN <function>]
1967 INTERFACES <variable>
1971 * `CLASS_NAME`: The name of the
auto start
class.
1972 * `STARTUP`: (Defaults to `startup`) The name of the method to call
on 1974 * `SHUTDOWN`: (Defaults to `shutdown`) The name of the method to call
on 1976 * `INTERFACES`: The name of the generated interface.
1977 * `SOURCES`: The
source files generated by the interface.
1980 cmake_parse_arguments(_paraview_auto_start
1982 "CLASS_NAME;INTERFACES;SOURCES;STARTUP;SHUTDOWN" 1986 if (_paraview_auto_start_UNPARSED_ARGUMENTS)
1988 "Unparsed arguments for paraview_plugin_add_auto_start: " 1989 "${_paraview_auto_start_UNPARSED_ARGUMENTS}")
1992 if (NOT DEFINED _paraview_auto_start_CLASS_NAME)
1994 "The `CLASS_NAME` argument is required.")
1997 if (NOT DEFINED _paraview_auto_start_INTERFACES)
1999 "The `INTERFACES` argument is required.")
2002 if (NOT DEFINED _paraview_auto_start_SOURCES)
2004 "The `SOURCES` argument is required.")
2007 if (NOT DEFINED _paraview_auto_start_STARTUP)
2008 set(_paraview_auto_start_STARTUP
"startup")
2011 if (NOT DEFINED _paraview_auto_start_SHUTDOWN)
2012 set(_paraview_auto_start_SHUTDOWN
"shutdown")
2016 "${_ParaViewPlugin_cmake_dir}/pqAutoStartImplementation.h.in" 2017 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_auto_start_CLASS_NAME}Implementation.h" 2020 "${_ParaViewPlugin_cmake_dir}/pqAutoStartImplementation.cxx.in" 2021 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_auto_start_CLASS_NAME}Implementation.cxx" 2024 set(
"${_paraview_auto_start_INTERFACES}" 2025 "${_paraview_auto_start_CLASS_NAME}Implementation" 2028 set(
"${_paraview_auto_start_SOURCES}" 2029 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_auto_start_CLASS_NAME}Implementation.cxx" 2030 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_auto_start_CLASS_NAME}Implementation.h" 2037 The filesystem
location of dynamically-loaded plugin.
2043 INTERFACES <variable>
2047 * `CLASS_NAME`: The name of the
location class.
2048 * `STORE`: (Defaults to `StoreLocation`) The name of the method to call
on 2049 startup, passing in the plugin
location (
const char*).
2050 * `INTERFACES`: The name of the generated interface.
2051 * `SOURCES`: The
source files generated by the interface.
2054 cmake_parse_arguments(_paraview_location
2056 "CLASS_NAME;INTERFACES;SOURCES;STORE" 2060 if (_paraview_location_UNPARSED_ARGUMENTS)
2062 "Unparsed arguments for paraview_plugin_add_location: " 2063 "${_paraview_location_UNPARSED_ARGUMENTS}")
2066 if (NOT DEFINED _paraview_location_CLASS_NAME)
2068 "The `CLASS_NAME` argument is required.")
2071 if (NOT DEFINED _paraview_location_INTERFACES)
2073 "The `INTERFACES` argument is required.")
2076 if (NOT DEFINED _paraview_location_SOURCES)
2078 "The `SOURCES` argument is required.")
2081 if (NOT DEFINED _paraview_location_STORE)
2082 set(_paraview_location_STORE
"StoreLocation")
2086 "${_ParaViewPlugin_cmake_dir}/pqPluginLocationImplementation.h.in" 2087 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_location_CLASS_NAME}Implementation.h" 2090 "${_ParaViewPlugin_cmake_dir}/pqPluginLocationImplementation.cxx.in" 2091 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_location_CLASS_NAME}Implementation.cxx" 2094 set(
"${_paraview_location_INTERFACES}" 2095 "${_paraview_location_CLASS_NAME}Implementation" 2098 set(
"${_paraview_location_SOURCES}" 2099 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_location_CLASS_NAME}Implementation.cxx" 2100 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_location_CLASS_NAME}Implementation.h" 2105 ### Tree layout strategy 2107 TODO: What is a tree layout strategy?
2111 STRATEGY_TYPE <type>
2112 STRATEGY_LABEL <label>
2113 INTERFACES <variable>
2117 * `STRATEGY_TYPE`: The name of the tree layout strategy
class.
2118 * `STRATEGY_LABEL`: The label to use
for the strategy.
2119 * `INTERFACES`: The name of the generated interface.
2120 * `SOURCES`: The
source files generated by the interface.
2123 cmake_parse_arguments(_paraview_tree_layout_strategy
2125 "INTERFACES;SOURCES;STRATEGY_TYPE;STRATEGY_LABEL" 2129 if (_paraview_tree_layout_strategy_UNPARSED_ARGUMENTS)
2131 "Unparsed arguments for paraview_plugin_add_tree_layout_strategy: " 2132 "${_paraview_tree_layout_strategy_UNPARSED_ARGUMENTS}")
2135 if (NOT DEFINED _paraview_tree_layout_strategy_STRATEGY_TYPE)
2137 "The `STRATEGY_TYPE` argument is required.")
2140 if (NOT DEFINED _paraview_tree_layout_strategy_STRATEGY_LABEL)
2142 "The `STRATEGY_LABEL` argument is required.")
2145 if (NOT DEFINED _paraview_tree_layout_strategy_INTERFACES)
2147 "The `INTERFACES` argument is required.")
2150 if (NOT DEFINED _paraview_tree_layout_strategy_SOURCES)
2152 "The `SOURCES` argument is required.")
2156 "${_ParaViewPlugin_cmake_dir}/pqTreeLayoutStrategyImplementation.h.in" 2157 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_tree_layout_strategy_STRATEGY_TYPE}Implementation.h" 2160 "${_ParaViewPlugin_cmake_dir}/pqTreeLayoutStrategyImplementation.cxx.in" 2161 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_tree_layout_strategy_STRATEGY_TYPE}Implementation.cxx" 2164 set(
"${_paraview_tree_layout_strategy_INTERFACES}" 2165 "${_paraview_tree_layout_strategy_STRATEGY_TYPE}Implementation" 2168 set(
"${_paraview_tree_layout_strategy_SOURCES}" 2169 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_tree_layout_strategy_STRATEGY_TYPE}Implementation.cxx" 2170 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_tree_layout_strategy_STRATEGY_TYPE}Implementation.h" 2177 TODO: What is a proxy?
2182 INTERFACES <variable>
2185 [CLASS_NAME <class>]
2187 <XML_NAME|XML_NAME_REGEX> <name>]...)
2190 * `
NAME`: The name of the proxy.
2191 * `INTERFACES`: The name of the generated interface.
2192 * `SOURCES`: The
source files generated by the interface.
2194 At least one `PROXY_TYPE` must be specified. Each proxy
type must be given an
2195 `XML_GROUP` and either an `XML_NAME` or `XML_NAME_REGEX`. If `CLASS_NAME` is
2196 not given, the `PROXY_TYPE` name is used instead.
2199 cmake_parse_arguments(_paraview_proxy
2201 "INTERFACES;SOURCES;NAME" 2205 if (NOT DEFINED _paraview_proxy_INTERFACES)
2207 "The `INTERFACES` argument is required.")
2210 if (NOT DEFINED _paraview_proxy_SOURCES)
2212 "The `SOURCES` argument is required.")
2215 if (NOT DEFINED _paraview_proxy_NAME)
2217 "The `NAME` argument is required.")
2220 set(_paraview_proxy_parse
"")
2221 set(_paraview_proxy_type)
2222 set(_paraview_proxy_types)
2223 foreach (_paraview_proxy_arg IN LISTS _paraview_proxy_UNPARSED_ARGUMENTS)
2224 if (_paraview_proxy_parse STREQUAL
"")
2225 set(_paraview_proxy_parse
"${_paraview_proxy_arg}")
2226 elseif (_paraview_proxy_parse STREQUAL
"PROXY_TYPE")
2227 set(_paraview_proxy_type
"${_paraview_proxy_arg}")
2228 list(APPEND _paraview_proxy_types
"${_paraview_proxy_type}")
2229 set(_paraview_proxy_parse
"")
2230 elseif (_paraview_proxy_parse STREQUAL
"CLASS_NAME")
2231 if (NOT _paraview_proxy_type)
2233 "Missing `PROXY_TYPE` for `CLASS_NAME`")
2235 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_class_name")
2237 "Duplicate `CLASS_NAME` for `${_paraview_proxy_type}`")
2239 set(
"_paraview_proxy_type_${_paraview_proxy_type}_class_name" 2240 "${_paraview_proxy_arg}")
2241 set(_paraview_proxy_parse
"")
2242 elseif (_paraview_proxy_parse STREQUAL
"XML_GROUP")
2243 if (NOT _paraview_proxy_type)
2245 "Missing `PROXY_TYPE` for `XML_GROUP`")
2247 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_group")
2249 "Duplicate `XML_GROUP` for `${_paraview_proxy_type}`")
2251 set(
"_paraview_proxy_type_${_paraview_proxy_type}_xml_group" 2252 "${_paraview_proxy_arg}")
2253 set(_paraview_proxy_parse
"")
2254 elseif (_paraview_proxy_parse STREQUAL
"XML_NAME")
2255 if (NOT _paraview_proxy_type)
2257 "Missing `PROXY_TYPE` for `XML_NAME`")
2259 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name" OR
2260 DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name_regex")
2262 "Duplicate `XML_NAME` or `XML_NAME_REGEX` for `${_paraview_proxy_type}`")
2264 set(
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name" 2265 "${_paraview_proxy_arg}")
2266 set(_paraview_proxy_parse
"")
2267 elseif (_paraview_proxy_parse STREQUAL
"XML_NAME_REGEX")
2268 if (NOT _paraview_proxy_type)
2270 "Missing `PROXY_TYPE` for `XML_NAME_REGEX`")
2272 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name" OR
2273 DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name_regex")
2275 "Duplicate `XML_NAME` or `XML_NAME_REGEX` for `${_paraview_proxy_type}`")
2277 set(
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name_regex" 2278 "${_paraview_proxy_arg}")
2279 set(_paraview_proxy_parse
"")
2282 "Unknown argument `${_paraview_proxy_parse}`")
2286 if (_paraview_proxy_parse)
2288 "Missing argument for `${_paraview_proxy_parse}`")
2291 if (NOT _paraview_proxy_types)
2293 "No `PROXY_TYPE` arguments given")
2296 set(_paraview_proxy_includes)
2297 set(_paraview_proxy_body)
2298 foreach (_paraview_proxy_type IN LISTS _paraview_proxy_types)
2299 if (NOT DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_group")
2301 "Missing `XML_GROUP` for `${_paraview_proxy_type}`")
2303 if (NOT DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name" AND
2304 NOT DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name_regex")
2306 "Missing `XML_NAME` or `XML_NAME_REGEX` for `${_paraview_proxy_type}`")
2308 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_class_name")
2309 set(_paraview_proxy_class
2310 "${_paraview_proxy_type_${_paraview_proxy_type}_class_name}")
2312 set(_paraview_proxy_class
2313 "${_paraview_proxy_type}")
2316 set(_paraview_proxy_group
"${_paraview_proxy_type_${_paraview_proxy_type}_xml_group}")
2317 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name")
2318 set(_paraview_proxy_name
"${_paraview_proxy_type_${_paraview_proxy_type}_xml_name}")
2319 set(_paraview_proxy_name_type
"QString")
2320 set(_paraview_proxy_cmp
"name == proxy->GetXMLName()")
2322 set(_paraview_proxy_name
"${_paraview_proxy_type_${_paraview_proxy_type}_xml_name_regex}")
2323 set(_paraview_proxy_name_type
"QRegularExpression")
2324 set(_paraview_proxy_cmp
"QString(proxy->GetXMLName()).contains(name)")
2327 if (NOT DEFINED
"_paraview_proxy_included_${_paraview_proxy_class}")
2328 string(APPEND _paraview_proxy_includes
2329 "#include \"${_paraview_proxy_class}.h\"\n")
2330 set(
"_paraview_proxy_included_${_paraview_proxy_class}" 1)
2332 string(APPEND _paraview_proxy_body
2334 static const QString group(\"${_paraview_proxy_group}\"); 2335 static const ${_paraview_proxy_name_type} name(\"${_paraview_proxy_name}\"); 2336 if (group == proxy->GetXMLGroup() && ${_paraview_proxy_cmp}) 2338 return new ${_paraview_proxy_class}(regGroup, regName, proxy, server, nullptr); 2344 "${_ParaViewPlugin_cmake_dir}/pqServerManagerModelImplementation.h.in" 2345 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_proxy_NAME}ServerManagerModelImplementation.h" 2348 "${_ParaViewPlugin_cmake_dir}/pqServerManagerModelImplementation.cxx.in" 2349 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_proxy_NAME}ServerManagerModelImplementation.cxx" 2352 set(
"${_paraview_proxy_INTERFACES}" 2353 "${_paraview_proxy_NAME}ServerManagerModelImplementation" 2356 set(
"${_paraview_proxy_SOURCES}" 2357 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_proxy_NAME}ServerManagerModelImplementation.cxx" 2358 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_proxy_NAME}ServerManagerModelImplementation.h"
function paraview_server_manager_process_files()
.md The second way to process XML files directly.
function paraview_plugin_add_tree_layout_strategy()
.md Tree layout strategy
function paraview_plugin_build()
.md Building plugins
#define _paraview_add_plugin_with_ui
#define _paraview_add_plugin_with_initializers
#define _paraview_add_plugin_with_xml
function paraview_plugin_add_action_group()
.md Action group
function paraview_plugin_add_auto_start()
.md Auto start
function paraview_plugin_add_dock_window()
.md Dock window
#define _paraview_add_plugin_built_shared
function paraview_server_manager_process()
.md Building XML files
function paraview_plugin_add_proxy()
.md Proxy
std::string replace(std::string source, const std::string &search, const std::string &replace, bool all)
function paraview_plugin_add_toolbar()
.md Toolbar
function paraview_plugin_add_property_widget()
.md Plugin interfaces
function vtk_module_wrap_client_server()
.md Wrapping a set of VTK modules for ClientServer
function paraview_plugin_add_location()
.md Location
function paraview_plugin_write_conf()
.md Plugin configuration files
#define BUILD_SHARED_LIBS
function paraview_plugin_scan()
.md Scanning plugins
function paraview_client_generate_help()
.md Generating help documentation
function paraview_client_documentation()
.md Documentation from XML files
function paraview_add_plugin(name)
.md Adding a plugin
#define _paraview_add_plugin_with_python
function _paraview_plugin_debug(domain, format)
.md ParaView Plugin CMake API