1 set(_ParaViewPlugin_cmake_dir
"${CMAKE_CURRENT_LIST_DIR}")
4 # ParaView Plugin CMake API
13 Similar to VTK modules, plugins first have to be discovered. The
15 list of discovered `paraview.plugin` files.
22 set(_paraview_find_plugins_all)
23 foreach (_paraview_find_plugins_directory IN LISTS ARGN)
24 file(GLOB_RECURSE _paraview_find_plugins_plugins
25 "${_paraview_find_plugins_directory}/paraview.plugin")
26 list(APPEND _paraview_find_plugins_all
27 ${_paraview_find_plugins_plugins})
29 set(
"${output}" ${_paraview_find_plugins_all} PARENT_SCOPE)
35 The `paraview.plugin` file is parsed and used as arguments to a CMake
function.
45 Pixie file reader
using ADIOS 50 The supported arguments are:
52 * `NAME`: (Required) The
name of the plugin.
53 * `DESCRIPTION`: (Recommended) Short text describing what the plugin does.
54 * `CONDITION`: Arguments to CMake
's `if` command which may be used to hide 55 the plugin for certain platforms or other reasons. If the expression is 56 false, the module is completely ignored. 57 * `REQUIRES_MODULES`: If the plugin is enabled, these modules will be listed 58 as those required to build the enabled plugins. 60 macro (_paraview_plugin_parse_args name_output) 61 cmake_parse_arguments("_name" 69 "A ParaView plugin requires a name (from ${_paraview_scan_plugin_file}).") 71 set("${name_output}" "${_name_NAME}") 73 cmake_parse_arguments("${_name_NAME}" 76 "DESCRIPTION;REQUIRES_MODULES;CONDITION" 79 if (${_name_NAME}_UNPARSED_ARGUMENTS) 81 "Unparsed arguments for ${_name_NAME}: " 82 "${${_name_NAME}_UNPARSED_ARGUMENTS}") 85 if (NOT ${_name_NAME}_DESCRIPTION) 86 message(WARNING "The ${_name_NAME} module should have a description") 88 string(REPLACE ";" " " "${_name_NAME}_DESCRIPTION" "${${_name_NAME}_DESCRIPTION}") 94 Once the `paraview.plugin` files have been found, they need to be scanned to 95 determine which should be built. Generally, plugins should be scanned first in 96 order to use the `REQUIRES_MODULES` list to enable them during the scan for 97 their required modules. 100 paraview_plugin_scan( 101 PLUGIN_FILES <file>... 102 PROVIDES_PLUGINS <variable> 103 [ENABLE_BY_DEFAULT <ON|OFF>] 104 [HIDE_PLUGINS_FROM_CACHE <ON|OFF>] 105 [REQUIRES_MODULES <module>...]) 108 * `PLUGIN_FILES`: (Required) The list of plugin files to scan. 109 * `PROVIDES_PLUGINS`: (Required) This variable contains a list of the plugins 111 * `ENABLE_BY_DEFAULT`: (Defaults to `OFF`) Whether to enable plugins by 113 * `HIDE_PLUGINS_FROM_CACHE`: (Defaults to `OFF`) Whether to display options 114 to enable and disable plugins in the cache or not. 115 * `REQUIRES_MODULES`: The list of modules required by the enabled plugins. 118 function (paraview_plugin_scan) 119 cmake_parse_arguments(_paraview_scan 121 "ENABLE_BY_DEFAULT;HIDE_PLUGINS_FROM_CACHE;REQUIRES_MODULES;PROVIDES_PLUGINS" 125 if (_paraview_scan_UNPARSED_ARGUMENTS) 127 "Unparsed arguments for paraview_plugin_scan: " 128 "${_paraview_scan_UNPARSED_ARGUMENTS}") 131 if (NOT DEFINED _paraview_scan_ENABLE_BY_DEFAULT) 132 set(_paraview_scan_ENABLE_BY_DEFAULT OFF) 135 if (NOT DEFINED _paraview_scan_HIDE_PLUGINS_FROM_CACHE) 136 set(_paraview_scan_HIDE_PLUGINS_FROM_CACHE OFF) 139 if (NOT DEFINED _paraview_scan_PROVIDES_PLUGINS) 141 "The `PROVIDES_PLUGINS` argument is required.") 144 if (NOT _paraview_scan_PLUGIN_FILES) 146 "No plugin files given to scan.") 149 set(_paraview_scan_option_default_type BOOL) 150 if (_paraview_scan_HIDE_PLUGINS_FROM_CACHE) 151 set(_paraview_scan_option_default_type INTERNAL) 154 set(_paraview_scan_provided_plugins) 155 set(_paraview_scan_required_modules) 157 foreach (_paraview_scan_plugin_file IN LISTS _paraview_scan_PLUGIN_FILES) 158 if (NOT IS_ABSOLUTE "${_paraview_scan_plugin_file}") 159 set(_paraview_scan_plugin_file 160 "${CMAKE_CURRENT_SOURCE_DIR}/${_paraview_scan_plugin_file}") 163 set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" APPEND 165 CMAKE_CONFIGURE_DEPENDS "${_paraview_scan_plugin_file}") 167 file(READ "${_paraview_scan_plugin_file}" _paraview_scan_plugin_args) 169 string(REGEX REPLACE "#[^\n]*\n" "\n" _paraview_scan_plugin_args "${_paraview_scan_plugin_args}") 170 # Use argument splitting. 171 string(REGEX REPLACE "( |\n)+" ";" _paraview_scan_plugin_args "${_paraview_scan_plugin_args}") 172 _paraview_plugin_parse_args(_paraview_scan_plugin_name ${_paraview_scan_plugin_args}) 174 list(APPEND _paraview_scan_all_plugins 175 "${_paraview_scan_plugin_name}") 177 set(_paraview_scan_plugin_default "${_paraview_scan_ENABLE_BY_DEFAULT}") 178 if (DEFINED "_paraview_plugin_default_${_paraview_scan_plugin_name}") 179 set(_paraview_scan_plugin_default "${_paraview_plugin_default_${_paraview_scan_plugin_name}}") 181 option("PARAVIEW_PLUGIN_ENABLE_${_paraview_scan_plugin_name}" 182 "Enable the ${_paraview_scan_plugin_name} plugin. ${${_paraview_scan_plugin_name}_DESCRIPTION}" 183 "${_paraview_scan_plugin_default}") 184 set("_paraview_scan_enable_${_paraview_scan_plugin_name}" 185 "${PARAVIEW_PLUGIN_ENABLE_${_paraview_scan_plugin_name}}") 187 set_property(CACHE "PARAVIEW_PLUGIN_ENABLE_${_paraview_scan_plugin_name}" 189 TYPE "${_paraview_scan_option_default_type}") 191 if (DEFINED ${_paraview_scan_plugin_name}_CONDITION) 192 if (NOT (${${_paraview_scan_plugin_name}_CONDITION})) 193 if (DEFINED "PARAVIEW_PLUGIN_ENABLE_${_paraview_scan_plugin_name}") 194 set_property(CACHE "PARAVIEW_PLUGIN_ENABLE_${_paraview_scan_plugin_name}" 202 if (_paraview_scan_enable_${_paraview_scan_plugin_name}) 203 list(APPEND _paraview_scan_provided_plugins 204 "${_paraview_scan_plugin_name}") 205 list(APPEND _paraview_scan_required_modules 206 ${${_paraview_scan_plugin_name}_REQUIRES_MODULES}) 211 "_paraview_plugin_${_paraview_scan_plugin_name}_file" "${_paraview_scan_plugin_file}") 214 "_paraview_plugin_${_paraview_scan_plugin_name}_description" "${${_paraview_scan_plugin_name}_DESCRIPTION}") 217 "_paraview_plugin_${_paraview_scan_plugin_name}_required_modules" "${${_paraview_scan_plugin_name}_REQUIRES_MODULES}") 220 if (DEFINED _paraview_scan_REQUIRES_MODULES) 221 set("${_paraview_scan_REQUIRES_MODULES}" 222 ${_paraview_scan_required_modules} 226 set("${_paraview_scan_PROVIDES_PLUGINS}" 227 ${_paraview_scan_provided_plugins} 231 function (_paraview_plugin_check_destdir variable) 232 if (NOT DEFINED "${variable}") 234 "It appears as though ${variable} is not defined, but is needed to " 235 "default a destination directory for build artifacts. Usually this is " 236 "resolved by `include(GNUInstallDirs)` at the top of the project.") 243 Once all plugins have been scanned, they need to be built. 246 paraview_plugin_build( 248 [AUTOLOAD <plugin>...] 249 [PLUGINS_COMPONENT <component>] 252 [INSTALL_EXPORT <export>] 253 [CMAKE_DESTINATION <destination>] 254 [TARGET_COMPONENT <component>] 255 [INSTALL_HEADERS <ON|OFF>] 257 [HEADERS_DESTINATION <destination>] 258 [RUNTIME_DESTINATION <destination>] 259 [LIBRARY_DESTINATION <destination>] 260 [LIBRARY_SUBDIRECTORY <subdirectory>] 261 [ADD_INSTALL_RPATHS <ON|OFF>] 263 [PLUGINS_FILE_NAME <filename>]) 266 * `PLUGINS`: (Required) The list of plugins to build. May be empty. 267 * `AUTOLOAD`: A list of plugins to mark for autoloading. 268 * `PLUGINS_COMPONENT`: (Defaults to `paraview_plugins`) The installation 269 component to use for installed plugins. 270 * `TARGET`: (Recommended) The name of an interface target to generate. This 271 provides. an initialization function `<TARGET>_initialize` which 272 initializes static plugins. The function is provided, but is a no-op for 273 shared plugin builds. 274 * `INSTALL_EXPORT`: If provided, the generated target will be added to the 276 * `CMAKE_DESTINATION`: If provided, the plugin target's properties will be
277 written to a file named `<TARGET>-paraview-plugin-properties.cmake` in the
278 specified destination.
279 * `TARGET_COMPONENT`: (Defaults to `development`) The component to use
for 281 * `INSTALL_HEADERS`: (Defaults to `ON`) Whether to install headers or not.
282 * `HEADERS_DESTINATION`: (Defaults to `${CMAKE_INSTALL_INCLUDEDIR}`) Where to
283 install include files.
284 * `RUNTIME_DESTINATION`: (Defaults to `${CMAKE_INSTALL_BINDIR}`) Where to
285 install runtime files.
286 * `LIBRARY_DESTINATION`: (Defaults to `${CMAKE_INSTALL_LIBDIR}`) Where to
287 install modules built by plugins.
288 * `LIBRARY_SUBDIRECTORY`: (Defaults to `
""`) Where to install the plugins
289 themselves. Each plugin lives in a directory of its
name in
290 `<RUNTIME_DESTINATION>/<LIBRARY_SUBDIRECTORY>` (
for Windows) or
291 `<LIBRARY_DESTINATION>/<LIBRARY_SUBDIRECTORY>`
for other platforms.
292 * `ADD_INSTALL_RPATHS`: (Defaults to `ON`) If specified, an RPATH to
load 293 dependent libraries from the `LIBRARY_DESTINATION` from the plugins will be
295 * `PLUGINS_FILE_NAME`: The
name of the XML plugin file to generate
for the
296 built plugins. This file will be placed under
297 `<LIBRARY_DESTINATION>/<LIBRARY_SUBDIRECTORY>`. It will be installed with
301 cmake_parse_arguments(_paraview_build
303 "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" 307 if (_paraview_build_UNPARSED_ARGUMENTS)
309 "Unparsed arguments for paraview_plugin_build: " 310 "${_paraview_build_UNPARSED_ARGUMENTS}")
313 if (NOT DEFINED _paraview_build_HEADERS_DESTINATION)
315 set(_paraview_build_HEADERS_DESTINATION
"${CMAKE_INSTALL_INCLUDEDIR}")
318 if (NOT DEFINED _paraview_build_RUNTIME_DESTINATION)
320 set(_paraview_build_RUNTIME_DESTINATION
"${CMAKE_INSTALL_BINDIR}")
323 if (NOT DEFINED _paraview_build_LIBRARY_DESTINATION)
325 set(_paraview_build_LIBRARY_DESTINATION
"${CMAKE_INSTALL_LIBDIR}")
328 if (NOT DEFINED _paraview_build_LIBRARY_SUBDIRECTORY)
329 set(_paraview_build_LIBRARY_SUBDIRECTORY
"")
332 if (NOT DEFINED _paraview_build_INSTALL_HEADERS)
333 set(_paraview_build_INSTALL_HEADERS ON)
336 if (NOT DEFINED _paraview_build_ADD_INSTALL_RPATHS)
337 set(_paraview_build_ADD_INSTALL_RPATHS ON)
339 if (_paraview_build_ADD_INSTALL_RPATHS)
340 if (NOT _paraview_build_LIBRARY_SUBDIRECTORY STREQUAL
"")
341 file(RELATIVE_PATH _paraview_build_relpath
342 "/prefix/${_paraview_build_LIBRARY_DESTINATION}/${_paraview_build_LIBRARY_SUBDIRECTORY}/plugin" 343 "/prefix/${_paraview_build_LIBRARY_DESTINATION}")
345 file(RELATIVE_PATH _paraview_build_relpath
346 "/prefix/${_paraview_build_LIBRARY_DESTINATION}/plugin" 347 "/prefix/${_paraview_build_LIBRARY_DESTINATION}")
350 list(APPEND CMAKE_INSTALL_RPATH
351 "@loader_path/${_paraview_build_relpath}")
353 list(APPEND CMAKE_INSTALL_RPATH
354 "$ORIGIN/${_paraview_build_relpath}")
358 if (DEFINED _paraview_build_INSTALL_EXPORT
359 AND NOT DEFINED _paraview_build_TARGET)
361 "The `INSTALL_EXPORT` argument requires the `TARGET` argument.")
364 if (DEFINED _paraview_build_INSTALL_EXPORT
365 AND NOT DEFINED _paraview_build_CMAKE_DESTINATION)
367 "The `INSTALL_EXPORT` argument requires the `CMAKE_DESTINATION` argument.")
370 set(_paraview_build_extra_destinations)
371 if (DEFINED _paraview_build_CMAKE_DESTINATION)
372 list(APPEND _paraview_build_extra_destinations
374 if (NOT DEFINED _paraview_build_TARGET)
376 "The `CMAKE_DESTINATION` argument requires the `TARGET` argument.")
380 if (DEFINED _paraview_build_TARGET)
382 string(REPLACE
"::" "_" _paraview_build_target_safe
"${_paraview_build_TARGET}")
390 ${_paraview_build_extra_destinations})
392 if (NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
393 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${_paraview_build_RUNTIME_DESTINATION}")
395 if (NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
396 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${_paraview_build_LIBRARY_DESTINATION}")
398 if (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
399 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${_paraview_build_LIBRARY_DESTINATION}")
403 set(_paraview_build_plugin_destination
"${_paraview_build_RUNTIME_DESTINATION}")
405 set(_paraview_build_plugin_destination
"${_paraview_build_LIBRARY_DESTINATION}")
407 if (NOT _paraview_build_LIBRARY_SUBDIRECTORY STREQUAL
"")
408 string(APPEND _paraview_build_plugin_destination
"/${_paraview_build_LIBRARY_SUBDIRECTORY}")
411 foreach (_paraview_build_plugin IN LISTS _paraview_build_PLUGINS)
412 get_property(_paraview_build_plugin_file GLOBAL
413 PROPERTY
"_paraview_plugin_${_paraview_build_plugin}_file")
414 if (NOT _paraview_build_plugin_file)
416 "The requested ${_paraview_build_plugin} plugin is not a ParaView plugin.")
419 # TODO: Support external plugins? 420 get_filename_component(_paraview_build_plugin_dir
"${_paraview_build_plugin_file}" DIRECTORY)
421 file(RELATIVE_PATH _paraview_build_plugin_subdir
"${CMAKE_SOURCE_DIR}" "${_paraview_build_plugin_dir}")
423 "${CMAKE_SOURCE_DIR}/${_paraview_build_plugin_subdir}" 424 "${CMAKE_BINARY_DIR}/${_paraview_build_plugin_subdir}")
427 if (DEFINED _paraview_build_TARGET)
428 add_library(
"${_paraview_build_TARGET_NAME}" INTERFACE)
429 if (_paraview_build_NAMESPACE)
430 add_library(
"${_paraview_build_TARGET}" ALIAS
"${_paraview_build_TARGET_NAME}")
432 target_include_directories(
"${_paraview_build_TARGET_NAME}" 434 "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_paraview_build_target_safe}>" 435 "$<INSTALL_INTERFACE:${_paraview_build_HEADERS_DESTINATION}>")
436 set(_paraview_build_include_file
437 "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_paraview_build_target_safe}/${_paraview_build_target_safe}.h")
439 set(_paraview_static_plugins)
440 foreach (_paraview_build_plugin IN LISTS _paraview_build_PLUGINS)
441 get_property(_paraview_build_plugin_type
442 TARGET
"${_paraview_build_plugin}" 444 if (_paraview_build_plugin_type STREQUAL
"STATIC_LIBRARY")
445 list(APPEND _paraview_static_plugins
446 "${_paraview_build_plugin}")
450 if (_paraview_static_plugins)
451 target_link_libraries(
"${_paraview_build_TARGET_NAME}" 453 ParaView::RemotingCore
454 ${_paraview_static_plugins})
456 set(_paraview_build_declarations)
457 set(_paraview_build_calls)
458 set(_paraview_build_names)
459 foreach (_paraview_build_plugin IN LISTS _paraview_static_plugins)
460 string(APPEND _paraview_build_declarations
461 "PV_PLUGIN_IMPORT_INIT(${_paraview_build_plugin});\n")
462 string(APPEND _paraview_build_calls
463 " if (sname == \"${_paraview_build_plugin}\") 467 static bool loaded = false; 470 loaded = PV_PLUGIN_IMPORT(${_paraview_build_plugin}); 475 string(APPEND _paraview_build_names
476 " names.push_back(\"${_paraview_build_plugin}\");\n")
479 set(_paraview_build_include_content
480 "#ifndef ${_paraview_build_target_safe}_h 481 #define ${_paraview_build_target_safe}_h 483 #define PARAVIEW_BUILDING_PLUGIN 484 #define PARAVIEW_PLUGIN_BUILT_SHARED 0 485 #include \"vtkPVPlugin.h\" 486 #include \"vtkPVPluginLoader.h\" 487 #include \"vtkPVPluginTracker.h\" 490 ${_paraview_build_declarations} 491 static bool ${_paraview_build_target_safe}_static_plugins_load(const char* name); 492 static bool ${_paraview_build_target_safe}_static_plugins_search(const char* name); 493 static void ${_paraview_build_target_safe}_static_plugins_list(const char* appname, std::vector<std::string>& names); 495 static void ${_paraview_build_target_safe}_initialize() 497 vtkPVPluginLoader::RegisterLoadPluginCallback(${_paraview_build_target_safe}_static_plugins_load); 498 vtkPVPluginTracker::RegisterStaticPluginSearchFunction(${_paraview_build_target_safe}_static_plugins_search); 499 vtkPVPluginTracker::RegisterStaticPluginListFunction(${_paraview_build_target_safe}_static_plugins_list); 502 static bool ${_paraview_build_target_safe}_static_plugins_func(const char* name, bool load); 504 static bool ${_paraview_build_target_safe}_static_plugins_load(const char* name) 506 return ${_paraview_build_target_safe}_static_plugins_func(name, true); 509 static bool ${_paraview_build_target_safe}_static_plugins_search(const char* name) 511 return ${_paraview_build_target_safe}_static_plugins_func(name, false); 514 static void ${_paraview_build_target_safe}_static_plugins_list(const char* appname, std::vector<std::string>& names) 516 ${_paraview_build_names} 521 static bool ${_paraview_build_target_safe}_static_plugins_func(const char* name, bool load) 523 std::string const sname = name; 525 ${_paraview_build_calls} 531 set(_paraview_build_include_content
532 "#ifndef ${_paraview_build_target_safe}_h 533 #define ${_paraview_build_target_safe}_h 535 void ${_paraview_build_target_safe}_initialize() 543 OUTPUT
"${_paraview_build_include_file}" 544 CONTENT
"${_paraview_build_include_content}")
545 if (_paraview_build_INSTALL_HEADERS)
547 FILES
"${_paraview_build_include_file}" 548 DESTINATION
"${_paraview_build_HEADERS_DESTINATION}" 549 COMPONENT
"${_paraview_build_TARGET_COMPONENT}")
552 if (DEFINED _paraview_build_INSTALL_EXPORT)
554 TARGETS
"${_paraview_build_TARGET_NAME}" 555 EXPORT "${_paraview_build_INSTALL_EXPORT}" 556 COMPONENT
"${_paraview_build_TARGET_COMPONENT}")
558 set(_paraview_build_required_exports_include_file_name
"${_paraview_build_INSTALL_EXPORT}-${_paraview_build_TARGET_NAME}-targets-depends.cmake")
559 set(_paraview_build_required_exports_include_build_file
560 "${CMAKE_BINARY_DIR}/${_paraview_build_CMAKE_DESTINATION}/${_paraview_build_required_exports_include_file_name}")
561 set(_paraview_build_required_exports_include_contents
"")
562 get_property(_paraview_build_required_exports GLOBAL
563 PROPERTY
"paraview_plugin_${_paraview_build_TARGET}_required_exports")
564 if (_paraview_build_required_exports)
565 foreach (_paraview_build_required_export IN LISTS _paraview_build_required_exports)
566 string(APPEND _paraview_build_required_exports_include_contents
567 "include(\"\${CMAKE_CURRENT_LIST_DIR}/${_paraview_build_required_export}-targets.cmake\")\n" 568 "include(\"\${CMAKE_CURRENT_LIST_DIR}/${_paraview_build_required_export}-vtk-module-properties.cmake\")\n" 571 get_property(_paraview_build_modules GLOBAL
572 PROPERTY
"paraview_plugin_${_paraview_build_required_export}_modules")
573 if (_paraview_build_modules)
575 CMAKE_DESTINATION
"${_paraview_build_CMAKE_DESTINATION}" 576 FILE_NAME
"${_paraview_build_required_export}-vtk-module-find-packages.cmake" 577 MODULES ${_paraview_build_modules})
579 # TODO: The list of modules should be checked
for their `_FOUND`
580 # variables being
false and propagate it up through the parent
581 # project
's `_FOUND` variable. 582 string(APPEND _paraview_build_required_exports_include_contents 583 "set(CMAKE_FIND_PACKAGE_NAME_save \"\${CMAKE_FIND_PACKAGE_NAME}\")\n" 584 "set(${_paraview_build_required_export}_FIND_QUIETLY \"\${\${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY}\")\n" 585 "set(${_paraview_build_required_export}_FIND_COMPONENTS)\n" 586 "set(CMAKE_FIND_PACKAGE_NAME \"${_paraview_build_required_export}\")\n" 587 "include(\"\${CMAKE_CURRENT_LIST_DIR}/${_paraview_build_required_export}-vtk-module-find-packages.cmake\")\n" 588 "set(CMAKE_FIND_PACKAGE_NAME \"\${CMAKE_FIND_PACKAGE_NAME_save}\")\n" 589 "unset(${_paraview_build_required_export}_FIND_QUIETLY)\n" 590 "unset(${_paraview_build_required_export}_FIND_COMPONENTS)\n" 591 "unset(CMAKE_FIND_PACKAGE_NAME_save)\n" 598 OUTPUT "${_paraview_build_required_exports_include_build_file}" 599 CONTENT "${_paraview_build_required_exports_include_contents}") 600 if (_paraview_build_INSTALL_HEADERS) 602 FILES "${_paraview_build_required_exports_include_build_file}" 603 DESTINATION "${_paraview_build_CMAKE_DESTINATION}" 604 COMPONENT "${_paraview_build_TARGET_COMPONENT}") 607 set(_paraview_build_namespace_args) 608 if (_paraview_build_NAMESPACE) 609 list(APPEND _paraview_build_namespace_args 610 NAMESPACE "${_paraview_build_NAMESPACE}::") 613 if (_paraview_build_INSTALL_HEADERS) 615 EXPORT "${_paraview_build_INSTALL_EXPORT}" 616 ${_paraview_build_namespace_args} 617 FILE "${CMAKE_BINARY_DIR}/${_paraview_build_CMAKE_DESTINATION}/${_paraview_build_INSTALL_EXPORT}-targets.cmake") 619 EXPORT "${_paraview_build_INSTALL_EXPORT}" 620 DESTINATION "${_paraview_build_CMAKE_DESTINATION}" 621 ${_paraview_build_namespace_args} 622 FILE "${_paraview_build_INSTALL_EXPORT}-targets.cmake" 623 COMPONENT "${_paraview_build_TARGET_COMPONENT}") 628 if (DEFINED _paraview_build_PLUGINS_FILE_NAME) 629 set(_paraview_build_xml_file 630 "${CMAKE_BINARY_DIR}/${_paraview_build_plugin_destination}/${_paraview_build_PLUGINS_FILE_NAME}") 631 set(_paraview_build_xml_content 632 "<?xml version=\"1.0\"?>\n<Plugins>\n") 633 foreach (_paraview_build_plugin IN LISTS _paraview_build_PLUGINS) 634 set(_paraview_build_autoload 0) 635 if (_paraview_build_plugin IN_LIST _paraview_build_AUTOLOAD) 636 set(_paraview_build_autoload 1) 638 string(APPEND _paraview_build_xml_content 639 " <Plugin name=\"${_paraview_build_plugin}\" auto_load=\"${_paraview_build_autoload}\"/>\n") 641 string(APPEND _paraview_build_xml_content 645 OUTPUT "${_paraview_build_xml_file}" 646 CONTENT "${_paraview_build_xml_content}") 648 FILES "${_paraview_build_xml_file}" 649 DESTINATION "${_paraview_build_plugin_destination}" 650 COMPONENT "${_paraview_build_TARGET_COMPONENT}") 652 if (DEFINED _paraview_build_INSTALL_EXPORT) 653 set_property(TARGET "${_paraview_build_TARGET_NAME}" 655 "INTERFACE_paraview_plugin_plugins_file" "${_paraview_build_xml_file}") 657 if (DEFINED _paraview_build_RUNTIME_DESTINATION) 658 set_property(TARGET "${_paraview_build_TARGET_NAME}" 660 "INTERFACE_paraview_plugin_plugins_file_install" "${_paraview_build_plugin_destination}/${_paraview_build_PLUGINS_FILE_NAME}") 663 if (DEFINED _paraview_build_CMAKE_DESTINATION) 664 set(_paraview_build_properties_filename "${_paraview_build_INSTALL_EXPORT}-paraview-plugin-properties.cmake") 665 set(_paraview_build_properties_build_file 666 "${CMAKE_BINARY_DIR}/${_paraview_build_CMAKE_DESTINATION}/${_paraview_build_properties_filename}") 667 set(_paraview_build_properties_install_file 668 "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_paraview_build_properties_filename}.install") 670 file(WRITE "${_paraview_build_properties_build_file}") 671 file(WRITE "${_paraview_build_properties_install_file}") 673 _vtk_module_write_import_prefix( 674 "${_paraview_build_properties_install_file}" 675 "${_paraview_build_CMAKE_DESTINATION}") 677 file(APPEND "${_paraview_build_properties_build_file}" 678 "set_property(TARGET \"${_paraview_build_TARGET}\" 680 INTERFACE_paraview_plugin_plugins_file \"${_paraview_build_xml_file}\")\n") 681 file(APPEND "${_paraview_build_properties_install_file}" 682 "set_property(TARGET \"${_paraview_build_TARGET}\" 684 INTERFACE_paraview_plugin_plugins_file \"\${_vtk_module_import_prefix}/${_paraview_build_plugin_destination}/${_paraview_build_PLUGINS_FILE_NAME}\") 685 unset(_vtk_module_import_prefix)\n") 687 if (_paraview_build_INSTALL_HEADERS) 689 FILES "${_paraview_build_properties_install_file}" 690 DESTINATION "${_paraview_build_CMAKE_DESTINATION}" 691 RENAME "${_paraview_build_properties_filename}" 692 COMPONENT "${_paraview_build_TARGET_COMPONENT}") 700 ## Plugin configuration files 702 Applications will want to consume plugin targets by discovering their locations 703 at runtime. In order to facilitate this, ParaView supports loading a `conf` 704 file which contains the locations of plugin targets' XML files. The plugins
705 specified in that file is then
710 PLUGINS_TARGETS <target>...
711 BUILD_DESTINATION <destination>
713 [INSTALL_DESTINATION <destination>]
714 [COMPONENT <component>])
717 * `NAME`: (Required) The base
name of the configuration file.
718 * `PLUGINS_TARGETS`: (Required) The list of plugin targets to add to the
720 * `BUILD_DESTINATION`: (Required) Where to place the configuration file in
722 * `INSTALL_DESTINATION`: Where to install the configuration file in the
723 install tree. If not provided, the configuration file will not be
725 * `COMPONENT`: (Defaults to `runtime`) The
component to use when installing
726 the configuration file.
729 cmake_parse_arguments(_paraview_plugin_conf
731 "NAME;BUILD_DESTINATION;INSTALL_DESTINATION;COMPONENT" 735 if (_paraview_plugin_conf_UNPARSED_ARGUMENTS)
737 "Unparsed arguments for paraview_plugin_write_conf: " 738 "${_paraview_plugin_conf_UNPARSED_ARGUMENTS}")
741 if (NOT _paraview_plugin_conf_NAME)
743 "The `NAME` must not be empty.")
746 if (NOT DEFINED _paraview_plugin_conf_BUILD_DESTINATION)
748 "The `BUILD_DESTINATION` argument is required.")
751 if (NOT DEFINED _paraview_plugin_conf_PLUGINS_TARGETS)
753 "The `PLUGINS_TARGETS` argument is required.")
756 if (NOT DEFINED _paraview_plugin_conf_COMPONENT)
757 set(_paraview_plugin_conf_COMPONENT
"runtime")
760 set(_paraview_plugin_conf_file_name
761 "${_paraview_plugin_conf_NAME}.conf")
762 set(_paraview_plugin_conf_build_file
763 "${CMAKE_BINARY_DIR}/${_paraview_plugin_conf_BUILD_DESTINATION}/${_paraview_plugin_conf_file_name}")
764 set(_paraview_plugin_conf_install_file
765 "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_paraview_plugin_conf_file_name}.install")
766 set(_paraview_plugin_conf_build_contents)
767 set(_paraview_plugin_conf_install_contents)
768 foreach (_paraview_plugin_conf_target IN LISTS _paraview_plugin_conf_PLUGINS_TARGETS)
769 get_property(_paraview_plugin_conf_plugins_target_is_imported
770 TARGET
"${_paraview_plugin_conf_target}" 772 if (_paraview_plugin_conf_plugins_target_is_imported)
773 get_property(_paraview_plugin_conf_plugins_target_xml_build
774 TARGET
"${_paraview_plugin_conf_target}" 775 PROPERTY
"INTERFACE_paraview_plugin_plugins_file")
776 set(_paraview_plugin_conf_plugins_target_xml_install
777 "${_paraview_plugin_conf_plugins_target_xml_build}")
779 file(RELATIVE_PATH _paraview_plugin_conf_rel_path
780 "/prefix/${CMAKE_INSTALL_PREFIX}" 781 "/prefix/${_paraview_plugin_conf_plugins_target_xml_install}")
782 # If the external plugins XML file is under our installation destination, 783 # use a relative path to it, otherwise keep the absolute path. 784 if (NOT _paraview_plugin_conf_rel_path MATCHES
"^\.\./")
785 file(RELATIVE_PATH _paraview_plugin_conf_plugins_target_xml_install
786 "/prefix/${CMAKE_INSTALL_PREFIX}/${_paraview_plugin_conf_INSTALL_DESTINATION}" 787 "/prefix/${_paraview_plugin_conf_plugins_target_xml_install}")
790 get_property(_paraview_plugin_conf_plugins_target_is_alias
791 TARGET
"${_paraview_plugin_conf_target}" 792 PROPERTY ALIASED_TARGET
794 if (_paraview_plugin_conf_plugins_target_is_alias)
795 get_property(_paraview_plugin_conf_target
796 TARGET
"${_paraview_plugin_conf_target}" 797 PROPERTY ALIASED_TARGET)
799 get_property(_paraview_plugin_conf_plugins_target_xml_build
800 TARGET
"${_paraview_plugin_conf_target}" 801 PROPERTY
"INTERFACE_paraview_plugin_plugins_file")
802 get_property(_paraview_plugin_conf_plugins_target_xml_install
803 TARGET
"${_paraview_plugin_conf_target}" 804 PROPERTY
"INTERFACE_paraview_plugin_plugins_file_install")
806 if (_paraview_plugin_conf_plugins_target_xml_install)
807 # Compute the relative path within the install tree. 808 file(RELATIVE_PATH _paraview_plugin_conf_plugins_target_xml_install
809 "/prefix/${_paraview_plugin_conf_INSTALL_DESTINATION}" 810 "/prefix/${_paraview_plugin_conf_plugins_target_xml_install}")
814 # TODO: Write out in JSON instead. 815 if (_paraview_plugin_conf_plugins_target_xml_build)
816 string(APPEND _paraview_plugin_conf_build_contents
817 "${_paraview_plugin_conf_plugins_target_xml_build}\n")
819 if (_paraview_plugin_conf_plugins_target_xml_install)
820 string(APPEND _paraview_plugin_conf_install_contents
821 "${_paraview_plugin_conf_plugins_target_xml_install}\n")
826 OUTPUT
"${_paraview_plugin_conf_build_file}" 827 CONTENT
"${_paraview_plugin_conf_build_contents}")
829 if (_paraview_plugin_conf_INSTALL_DESTINATION)
831 OUTPUT
"${_paraview_plugin_conf_install_file}" 832 CONTENT
"${_paraview_plugin_conf_install_contents}")
834 FILES
"${_paraview_plugin_conf_install_file}" 835 DESTINATION
"${_paraview_plugin_conf_INSTALL_DESTINATION}" 836 RENAME
"${_paraview_plugin_conf_file_name}" 837 COMPONENT
"${_paraview_plugin_conf_COMPONENT}")
841 set(_paraview_plugin_source_dir
"${CMAKE_CURRENT_LIST_DIR}")
850 [REQUIRED_ON_SERVER] [REQUIRED_ON_CLIENT]
853 [MODULE_FILES <vtk.module>...]
854 [MODULE_ARGS <arg>...]
855 [MODULES <module>...]
856 [SOURCES <source>...]
857 [SERVER_MANAGER_XML <xml>...]
858 [MODULE_INSTALL_EXPORT <export>]
860 [UI_INTERFACES <interface>...]
861 [UI_RESOURCES <resource>...]
864 [PYTHON_MODULES <module>...]
866 [REQUIRED_PLUGINS <plugin>...]
869 [XML_DOCUMENTATION <ON|OFF>]
870 [DOCUMENTATION_DIR <directory>]
872 [FORCE_STATIC <ON|OFF>])
875 * `REQUIRED_ON_SERVER`: The plugin is required to be loaded
on the server
for 876 proper functionality.
877 * `REQUIRED_ON_CLIENT`: The plugin is required to be loaded
on the client
for 878 proper functionality.
880 * `MODULE_FILES`: Paths to `
vtk.module` files describing modules to include
882 * `MODULE_ARGS`: Arguments to pass to `
vtk_module_build`
for included modules.
883 * `MODULES`: Modules to include in the plugin. These modules will be wrapped
884 using client server and have their server manager XML files processed.
885 * `SOURCES`: Source files
for the plugin.
886 * `SERVER_MANAGER_XML`: Server manager XML files
for the plugin.
887 * `UI_INTERFACES`: Interfaces to initialize, in the given
order. See the
888 plugin interfaces section
for more details.
889 * `MODULE_INSTALL_EXPORT`: (Defaults to `<
name>`) If provided, any modules
890 will be added to the given export
set.
891 * `UI_RESOURCES`: Qt resource files to include with the plugin.
892 * `UI_FILES`: Qt `.ui` files to include with the plugin.
893 * `PYTHON_MODULES`: Python modules to embed into the plugin.
894 * `REQUIRED_PLUGINS`: Plugins which must be loaded
for this plugin to
895 function. These plugins
do not need to be available at build
time and are
896 therefore their existence is not checked here.
897 * `EULA`: A file with
content to display as an end-user license agreement
898 before the plugin is initialized at runtime.
899 * `XML_DOCUMENTATION`: (Defaults to `ON`) If
set,
documentation will be
900 generated
for the associated XML files.
901 * `DOCUMENTATION_DIR`: If specified, `*.html`, `*.css`, `*.png`, and `*.jpg`
902 files in
this directory will be copied and made available to the
905 * `FORCE_STATIC`: (Defaults to `OFF`) If
set, the plugin will be built
906 statically so that it can be embedded into an application.
909 if (NOT name STREQUAL _paraview_build_plugin)
911 "The ${_paraview_build_plugin}'s CMakeLists.txt may not add the ${name} " 915 cmake_parse_arguments(_paraview_add_plugin
916 "REQUIRED_ON_SERVER;REQUIRED_ON_CLIENT"
917 "
VERSION;EULA;EXPORT;MODULE_INSTALL_EXPORT;XML_DOCUMENTATION;DOCUMENTATION_DIR;FORCE_STATIC"
918 "REQUIRED_PLUGINS;SERVER_MANAGER_XML;SOURCES;MODULES;UI_INTERFACES;UI_RESOURCES;UI_FILES;PYTHON_MODULES;MODULE_FILES;MODULE_ARGS"
921 if (_paraview_add_plugin_UNPARSED_ARGUMENTS)
923 "Unparsed arguments for paraview_add_plugin: " 924 "${_paraview_add_plugin_UNPARSED_ARGUMENTS}")
927 if (NOT DEFINED _paraview_add_plugin_VERSION)
929 "The `VERSION` argument is required.")
932 if (NOT DEFINED _paraview_add_plugin_XML_DOCUMENTATION)
933 set(_paraview_add_plugin_XML_DOCUMENTATION ON)
936 if (NOT DEFINED _paraview_add_plugin_FORCE_STATIC)
937 set(_paraview_add_plugin_FORCE_STATIC OFF)
940 if (DEFINED _paraview_add_plugin_DOCUMENTATION_DIR AND
941 NOT _paraview_add_plugin_XML_DOCUMENTATION)
943 "Specifying `DOCUMENTATION_DIR` and turning off `XML_DOCUMENTATION` " 947 if (DEFINED _paraview_add_plugin_EXPORT)
949 "The `paraview_add_plugin(EXPORT)` argument is ignored in favor of " 950 "`paraview_plugin_build(INSTALL_EXPORT)`.")
953 if (_paraview_add_plugin_MODULE_ARGS)
954 if (NOT _paraview_add_plugin_MODULE_FILES OR
955 NOT _paraview_add_plugin_MODULES)
957 "The `MODULE_ARGS` argument requires `MODULE_FILES` and `MODULES` to be provided.")
961 if (DEFINED _paraview_build_INSTALL_EXPORT AND
962 NOT DEFINED _paraview_add_plugin_MODULE_INSTALL_EXPORT)
963 set(_paraview_add_plugin_MODULE_INSTALL_EXPORT
967 if (_paraview_add_plugin_MODULE_FILES)
968 if (NOT _paraview_add_plugin_MODULES)
970 "The `MODULE_FILES` argument requires `MODULES` to be provided.")
973 if (_paraview_build_ADD_INSTALL_RPATHS)
975 list(INSERT CMAKE_INSTALL_RPATH 0
978 list(INSERT CMAKE_INSTALL_RPATH 0
983 set(_paraview_add_plugin_module_install_export_args)
984 if (DEFINED _paraview_add_plugin_MODULE_INSTALL_EXPORT)
985 list(APPEND _paraview_add_plugin_module_install_export_args
986 INSTALL_EXPORT
"${_paraview_add_plugin_MODULE_INSTALL_EXPORT}")
987 if (DEFINED _paraview_build_TARGET)
988 set_property(GLOBAL APPEND
990 "paraview_plugin_${_paraview_build_TARGET}_required_exports" "${_paraview_add_plugin_MODULE_INSTALL_EXPORT}")
995 MODULE_FILES ${_paraview_add_plugin_MODULE_FILES}
996 REQUEST_MODULES ${_paraview_add_plugin_MODULES}
997 PROVIDES_MODULES plugin_modules
998 REQUIRES_MODULES required_modules
999 HIDE_MODULES_FROM_CACHE ON)
1001 if (required_modules)
1002 foreach (required_module IN LISTS required_modules)
1003 if (NOT TARGET
"${required_module}")
1005 "Failed to find the required module ${required_module}.")
1011 set(_paraview_plugin_subdir
"${_paraview_build_RUNTIME_DESTINATION}")
1013 set(_paraview_plugin_subdir
"${_paraview_build_LIBRARY_DESTINATION}")
1015 if (NOT _paraview_build_LIBRARY_SUBDIRECTORY STREQUAL
"")
1016 string(APPEND _paraview_plugin_subdir
"/${_paraview_build_LIBRARY_SUBDIRECTORY}")
1018 string(APPEND _paraview_plugin_subdir
"/${_paraview_build_plugin}")
1019 set(_paraview_plugin_CMAKE_RUNTIME_OUTPUT_DIRECTORY
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
1020 set(_paraview_plugin_CMAKE_LIBRARY_OUTPUT_DIRECTORY
"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
1021 set(_paraview_plugin_CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")
1022 set(_paraview_plugin_CMAKE_INSTALL_NAME_DIR
"${CMAKE_INSTALL_NAME_DIR}")
1023 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${_paraview_plugin_subdir}")
1024 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${_paraview_plugin_subdir}")
1025 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/${_paraview_plugin_subdir}")
1026 set(CMAKE_INSTALL_NAME_DIR
"@loader_path")
1029 MODULES ${plugin_modules}
1030 PACKAGE "${_paraview_build_plugin}" 1031 ${_paraview_add_plugin_module_install_export_args}
1032 INSTALL_HEADERS
"${_paraview_build_INSTALL_HEADERS}" 1033 TARGETS_COMPONENT
"${_paraview_build_PLUGINS_COMPONENT}" 1034 HEADERS_DESTINATION
"${_paraview_build_HEADERS_DESTINATION}/${_paraview_build_target_safe}" 1035 ARCHIVE_DESTINATION
"${_paraview_plugin_subdir}" 1036 LIBRARY_DESTINATION
"${_paraview_plugin_subdir}" 1037 RUNTIME_DESTINATION
"${_paraview_plugin_subdir}" 1038 CMAKE_DESTINATION
"${_paraview_build_CMAKE_DESTINATION}" 1039 ${_paraview_add_plugin_MODULE_ARGS})
1041 set_property(GLOBAL APPEND
1043 "paraview_plugin_${_paraview_add_plugin_MODULE_INSTALL_EXPORT}_modules" "${plugin_modules}")
1045 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
"${_paraview_plugin_CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
1046 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
"${_paraview_plugin_CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
1047 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"${_paraview_plugin_CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")
1048 set(CMAKE_INSTALL_NAME_DIR
"${_paraview_plugin_CMAKE_INSTALL_NAME_DIR}")
1049 unset(_paraview_plugin_CMAKE_RUNTIME_OUTPUT_DIRECTORY)
1050 unset(_paraview_plugin_CMAKE_LIBRARY_OUTPUT_DIRECTORY)
1051 unset(_paraview_plugin_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
1052 unset(_paraview_plugin_CMAKE_INSTALL_NAME_DIR)
1055 # TODO: resource initialization for static builds 1057 if (_paraview_add_plugin_REQUIRED_ON_SERVER)
1058 set(_paraview_add_plugin_required_on_server
"true")
1060 set(_paraview_add_plugin_required_on_server
"false")
1063 if (_paraview_add_plugin_REQUIRED_ON_CLIENT)
1064 set(_paraview_add_plugin_required_on_client
"true")
1066 set(_paraview_add_plugin_required_on_client
"false")
1069 set(_paraview_add_plugin_export_args)
1070 set(_paraview_add_plugin_install_export_args)
1071 if (DEFINED _paraview_build_INSTALL_EXPORT)
1072 list(APPEND _paraview_add_plugin_export_args
1073 EXPORT "${_paraview_build_INSTALL_EXPORT}")
1074 list(APPEND _paraview_add_plugin_install_export_args
1075 INSTALL_EXPORT
"${_paraview_build_INSTALL_EXPORT}")
1078 set(_paraview_add_plugin_includes)
1079 set(_paraview_add_plugin_required_libraries)
1081 set(_paraview_add_plugin_module_xmls)
1082 set(_paraview_add_plugin_with_xml 0)
1083 if (_paraview_add_plugin_MODULES)
1084 set(_paraview_add_plugin_with_xml 1)
1086 list(APPEND _paraview_add_plugin_required_libraries
1087 ${_paraview_add_plugin_MODULES})
1090 MODULES ${_paraview_add_plugin_MODULES}
1091 TARGET
"${_paraview_build_plugin}_client_server" 1092 ${_paraview_add_plugin_install_export_args})
1094 MODULES ${_paraview_add_plugin_MODULES}
1095 TARGET
"${_paraview_build_plugin}_server_manager_modules" 1096 ${_paraview_add_plugin_install_export_args}
1097 XML_FILES _paraview_add_plugin_module_xmls)
1099 list(APPEND _paraview_add_plugin_required_libraries
1100 "${_paraview_build_plugin}_client_server" 1101 "${_paraview_build_plugin}_server_manager_modules")
1104 set(_paraview_add_plugin_binary_resources
"")
1105 set(_paraview_add_plugin_binary_headers)
1106 if (_paraview_add_plugin_SERVER_MANAGER_XML)
1107 set(_paraview_add_plugin_with_xml 1)
1109 set(_paraview_add_plugin_xmls)
1110 foreach (_paraview_add_plugin_xml IN LISTS _paraview_add_plugin_SERVER_MANAGER_XML)
1111 if (NOT IS_ABSOLUTE
"${_paraview_add_plugin_xml}")
1112 set(_paraview_add_plugin_xml
"${CMAKE_CURRENT_SOURCE_DIR}/${_paraview_add_plugin_xml}")
1115 list(APPEND _paraview_add_plugin_xmls
1116 "${_paraview_add_plugin_xml}")
1120 TARGET
"${_paraview_build_plugin}_server_manager" 1121 ${_paraview_add_plugin_install_export_args}
1122 FILES ${_paraview_add_plugin_xmls})
1123 list(APPEND _paraview_add_plugin_required_libraries
1124 "${_paraview_build_plugin}_server_manager")
1127 if ((_paraview_add_plugin_module_xmls OR _paraview_add_plugin_xmls) AND
1128 PARAVIEW_USE_QT AND _paraview_add_plugin_XML_DOCUMENTATION)
1129 set(_paraview_build_plugin_docdir
1130 "${CMAKE_CURRENT_BINARY_DIR}/paraview_help")
1133 TARGET
"${_paraview_build_plugin}_doc" 1134 OUTPUT_DIR
"${_paraview_build_plugin_docdir}" 1135 XMLS ${_paraview_add_plugin_module_xmls}
1136 ${_paraview_add_plugin_xmls})
1138 set(_paraview_build_plugin_doc_source_args)
1139 if (DEFINED _paraview_add_plugin_DOCUMENTATION_DIR)
1140 list(APPEND _paraview_build_plugin_doc_source_args
1141 SOURCE_DIR
"${_paraview_add_plugin_DOCUMENTATION_DIR}")
1145 NAME
"${_paraview_build_plugin}" 1146 OUTPUT_PATH _paraview_build_plugin_qch_path
1147 OUTPUT_DIR
"${_paraview_build_plugin_docdir}" 1148 TARGET
"${_paraview_build_plugin}_qch" 1149 ${_paraview_build_plugin_doc_source_args}
1150 DEPENDS
"${_paraview_build_plugin}_doc" 1151 PATTERNS
"*.html" "*.css" "*.png" "*.jpg")
1153 list(APPEND _paraview_add_plugin_extra_include_dirs
1154 "${CMAKE_CURRENT_BINARY_DIR}")
1155 set(_paraview_add_plugin_qch_output
1156 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_build_plugin}_qch.h")
1157 list(APPEND _paraview_add_plugin_binary_headers
1158 "${_paraview_add_plugin_qch_output}")
1160 OUTPUT
"${_paraview_add_plugin_qch_output}" 1161 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR}
1162 $<TARGET_FILE:ParaView::ProcessXML>
1164 "${_paraview_add_plugin_qch_output}" 1168 "${_paraview_build_plugin_qch_path}
" 1169 DEPENDS "${_paraview_build_plugin_qch_path}
" 1170 "${_paraview_build_plugin}_qch
" 1171 "$<TARGET_FILE:ParaView::ProcessXML>
" 1172 COMMENT "Generating header
for ${_paraview_build_plugin}
documentation") 1173 set_property(SOURCE "${_paraview_add_plugin_qch_output}
" 1177 string(APPEND _paraview_add_plugin_includes 1178 "#include \
"${_paraview_build_plugin}_qch.h\"\n")
1179 string(APPEND _paraview_add_plugin_binary_resources
1181 const char *text = ${_paraview_build_plugin}_qch(); 1182 resources.emplace_back(text); 1187 set(_paraview_add_plugin_eula_sources)
1188 if (_paraview_add_plugin_EULA)
1190 INPUT
"${_paraview_add_plugin_EULA}" 1191 NAME
"${_paraview_build_plugin}_EULA" 1192 HEADER_OUTPUT _paraview_add_plugin_eula_header
1193 SOURCE_OUTPUT _paraview_add_plugin_eula_source)
1194 list(APPEND _paraview_add_plugin_eula_sources
1195 "${_paraview_add_plugin_eula_header}" 1196 "${_paraview_add_plugin_eula_source}")
1199 set(_paraview_add_plugin_with_ui 0)
1200 set(_paraview_add_plugin_ui_sources)
1201 if (_paraview_add_plugin_UI_INTERFACES)
1202 set(_paraview_add_plugin_with_ui 1)
1203 set(CMAKE_AUTOMOC 1)
1204 set(_paraview_add_plugin_push_back_interfaces
1205 "#define PARAVIEW_ADD_INTERFACES(arg) \\\n")
1206 set(_paraview_add_plugin_include_interfaces
"")
1208 foreach (_paraview_add_plugin_ui_interface IN LISTS _paraview_add_plugin_UI_INTERFACES)
1209 string(APPEND _paraview_add_plugin_push_back_interfaces
1210 " (arg).push_back(new ${_paraview_add_plugin_ui_interface}(this)); \\\n")
1211 string(APPEND _paraview_add_plugin_include_interfaces
1212 "#include \"${_paraview_add_plugin_ui_interface}.h\"\n")
1214 list(APPEND _paraview_add_plugin_required_libraries
1215 ParaView::pqComponents)
1218 set(_paraview_add_plugin_with_resources 0)
1219 set(_paraview_add_plugin_resources_init)
1220 if (_paraview_add_plugin_UI_RESOURCES)
1221 set(_paraview_add_plugin_with_resources 1)
1222 set(CMAKE_AUTORCC 1)
1224 foreach (_paraview_add_plugin_ui_resource IN LISTS _paraview_add_plugin_UI_RESOURCES)
1225 get_filename_component(_paraview_add_plugin_ui_resource_base
"${_paraview_add_plugin_ui_resource}" NAME_WE)
1226 string(APPEND _paraview_add_plugin_resources_init
1227 " Q_INIT_RESOURCE(${_paraview_add_plugin_ui_resource_base});\n")
1230 list(APPEND _paraview_add_plugin_ui_sources
1231 ${_paraview_add_plugin_UI_RESOURCES})
1234 set(_paraview_add_plugin_qt_extra_components)
1235 if (_paraview_add_plugin_UI_FILES)
1236 set(_paraview_add_plugin_with_ui 1)
1237 set(CMAKE_AUTOUIC 1)
1238 list(APPEND _paraview_add_plugin_qt_extra_components
1240 list(APPEND _paraview_add_plugin_required_libraries
1242 list(APPEND _paraview_add_plugin_ui_sources
1243 ${_paraview_add_plugin_UI_FILES})
1246 if (_paraview_add_plugin_with_ui OR _paraview_add_plugin_with_resources)
1247 include(
"${_ParaViewPlugin_cmake_dir}/paraview-find-package-helpers.cmake" OPTIONAL)
1248 find_package(Qt5 QUIET REQUIRED COMPONENTS Core ${_paraview_add_plugin_qt_extra_components})
1249 list(APPEND _paraview_add_plugin_required_libraries
1251 if (_paraview_add_plugin_with_ui)
1252 list(APPEND _paraview_add_plugin_required_libraries
1256 # CMake 3.13 started using Qt5's version variables to detect what version 1257 # of Qt's tools to run for automoc, autouic, and autorcc. However, they are 1258 # looked up using the target's directory scope, but these are here in a 1259 # local scope and unset when AutoGen gets around to asking about the 1260 # variables at generate time. 1262 # Fix for 3.13.0–3.13.3. Does not work if `paraview_add_plugin` is called 1263 # from another function. 1264 set(Qt5Core_VERSION_MAJOR
"${Qt5Core_VERSION_MAJOR}" PARENT_SCOPE)
1265 set(Qt5Core_VERSION_MINOR
"${Qt5Core_VERSION_MINOR}" PARENT_SCOPE)
1267 set_property(DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}" 1269 Qt5Core_VERSION_MAJOR
"${Qt5Core_VERSION_MAJOR}")
1270 set_property(DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}" 1272 Qt5Core_VERSION_MINOR
"${Qt5Core_VERSION_MAJOR}")
1275 set(_paraview_add_plugin_with_python 0)
1276 set(_paraview_add_plugin_python_sources)
1277 set(_paraview_add_plugin_python_includes)
1278 set(_paraview_add_plugin_python_modules)
1279 set(_paraview_add_plugin_python_module_sources)
1280 set(_paraview_add_plugin_python_package_flags)
1281 if (_paraview_add_plugin_PYTHON_MODULES)
1282 set(_paraview_add_plugin_with_python 1)
1283 foreach (_paraview_add_plugin_python_module IN LISTS _paraview_add_plugin_PYTHON_MODULES)
1284 set(_paraview_add_plugin_python_path
1285 "${CMAKE_CURRENT_SOURCE_DIR}/${_paraview_add_plugin_python_module}")
1286 get_filename_component(_paraview_add_plugin_python_package
"${_paraview_add_plugin_python_module}" PATH)
1287 get_filename_component(_paraview_add_plugin_python_name
"${_paraview_add_plugin_python_module}" NAME_WE)
1288 if (_paraview_add_plugin_python_package)
1289 set(_paraview_add_plugin_python_full_name
1290 "${_paraview_add_plugin_python_package}.${_paraview_add_plugin_python_name}")
1292 set(_paraview_add_plugin_python_full_name
1293 "${_paraview_add_plugin_python_name}")
1295 string(REPLACE
"." "_" _paraview_add_plugin_python_module_mangled
"${_paraview_add_plugin_python_full_name}")
1296 set(_paraview_add_plugin_python_is_package 0)
1297 set(_paraview_add_plugin_python_import
1298 "${_paraview_add_plugin_python_full_name}")
1299 if (_paraview_add_plugin_python_name STREQUAL
"__init__")
1300 set(_paraview_add_plugin_python_is_package 1)
1301 set(_paraview_add_plugin_python_import
1302 "${_paraview_add_plugin_python_package}")
1304 set(_paraview_add_plugin_python_header_name
1305 "WrappedPython_${_paraview_build_plugin}_${_paraview_add_plugin_python_module_mangled}.h")
1306 set(_paraview_add_plugin_python_header
1307 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_add_plugin_python_header_name}")
1309 OUTPUT
"${_paraview_add_plugin_python_header}" 1310 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR}
1311 $<TARGET_FILE:ParaView::ProcessXML>
1312 "${_paraview_add_plugin_python_header}" 1313 "module_${_paraview_add_plugin_python_module_mangled}_" 1316 "${_paraview_add_plugin_python_path}" 1317 DEPENDS
"${_paraview_add_plugin_python_path}" 1318 "$<TARGET_FILE:ParaView::ProcessXML>" 1319 COMMENT
"Convert Python module ${_paraview_add_plugin_python_module_name} for ${_paraview_build_plugin}")
1321 list(APPEND _paraview_add_plugin_python_sources
1322 "${_paraview_add_plugin_python_header}")
1323 string(APPEND _paraview_add_plugin_python_includes
1324 "#include \"${_paraview_add_plugin_python_header_name}\"\n")
1325 string(APPEND _paraview_add_plugin_python_modules
1326 " \"${_paraview_add_plugin_python_import}\",\n")
1327 string(APPEND _paraview_add_plugin_python_module_sources
1328 " module_${_paraview_add_plugin_python_module_mangled}_${_paraview_add_plugin_python_name}_source(),\n")
1329 string(APPEND _paraview_add_plugin_python_package_flags
1330 " ${_paraview_add_plugin_python_is_package},\n")
1333 # Add terminators to the list. 1334 string(APPEND _paraview_add_plugin_python_modules
1336 string(APPEND _paraview_add_plugin_python_module_sources
1338 string(APPEND _paraview_add_plugin_python_package_flags
1342 set(_paraview_add_plugin_header
1343 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_build_plugin}Plugin.h")
1344 set(_paraview_add_plugin_source
1345 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_build_plugin}Plugin.cxx")
1347 get_property(_paraview_add_plugin_description GLOBAL
1348 PROPERTY
"_paraview_plugin_${_paraview_build_plugin}_description")
1350 set(_paraview_build_plugin_type MODULE)
1351 set(_paraview_add_plugin_built_shared 1)
1353 set(_paraview_build_plugin_type STATIC)
1354 set(_paraview_add_plugin_built_shared 0)
1358 "${_paraview_plugin_source_dir}/paraview_plugin.h.in" 1359 "${_paraview_add_plugin_header}")
1361 "${_paraview_plugin_source_dir}/paraview_plugin.cxx.in" 1362 "${_paraview_add_plugin_source}")
1365 # On Windows, we want `MODULE` libraries to go to the runtime directory, 1366 # but CMake always uses `CMAKE_LIBRARY_OUTPUT_DIRECTORY`. 1367 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
1369 if (NOT _paraview_build_LIBRARY_SUBDIRECTORY STREQUAL
"")
1370 string(APPEND CMAKE_LIBRARY_OUTPUT_DIRECTORY
"/${_paraview_build_LIBRARY_SUBDIRECTORY}")
1372 string(APPEND CMAKE_LIBRARY_OUTPUT_DIRECTORY
"/${_paraview_build_plugin}")
1374 # Place static plugins in the same place they would be if they were shared. 1375 if (NOT _paraview_build_LIBRARY_SUBDIRECTORY STREQUAL
"")
1376 string(APPEND CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"/${_paraview_build_LIBRARY_SUBDIRECTORY}")
1378 string(APPEND CMAKE_ARCHIVE_OUTPUT_DIRECTORY
"/${_paraview_build_plugin}")
1380 add_library(
"${_paraview_build_plugin}" "${_paraview_build_plugin_type}" 1381 ${_paraview_add_plugin_header}
1382 ${_paraview_add_plugin_source}
1383 ${_paraview_add_plugin_eula_sources}
1384 ${_paraview_add_plugin_binary_headers}
1385 ${_paraview_add_plugin_ui_sources}
1386 ${_paraview_add_plugin_python_sources}
1387 ${_paraview_add_plugin_SOURCES})
1389 target_compile_definitions(
"${_paraview_build_plugin}" 1393 target_link_libraries(
"${_paraview_build_plugin}" 1395 ParaView::RemotingCore
1396 ${_paraview_add_plugin_required_libraries})
1397 target_include_directories(
"${_paraview_build_plugin}" 1399 "${CMAKE_CURRENT_SOURCE_DIR}" 1400 ${_paraview_add_plugin_extra_include_dirs})
1401 set_property(TARGET
"${_paraview_build_plugin}" 1405 set(_paraview_add_plugin_destination
1406 "${_paraview_build_plugin_destination}/${_paraview_build_plugin}")
1408 TARGETS
"${_paraview_build_plugin}" 1409 ${_paraview_add_plugin_export_args}
1410 COMPONENT
"${_paraview_build_PLUGINS_COMPONENT}" 1411 ARCHIVE DESTINATION
"${_paraview_add_plugin_destination}" 1412 LIBRARY DESTINATION
"${_paraview_add_plugin_destination}")
1416 ## Plugin interfaces 1418 ParaView plugins may satisfy a number of interfaces. These functions all take a
1419 `INTERFACES` argument which takes the name of a variable to
set with the name
1420 of the
interface generated. This variable's should be passed to
1421 `paraview_add_plugin`'s `UI_INTERFACES` argument.
1427 TODO: What is a
property widget?
1431 KIND <WIDGET|GROUP_WIDGET|WIDGET_DECORATOR>
1434 INTERFACES <variable>
1438 * `KIND`: The kind of widget represented.
1439 * `TYPE`: The name of the
property type.
1440 * `CLASS_NAME`: The name of the
property widget
class.
1441 * `INTERFACES`: The name of the generated interface.
1442 * `SOURCES`: The
source files generated by the interface.
1445 cmake_parse_arguments(_paraview_property_widget
1447 "KIND;TYPE;CLASS_NAME;INTERFACES;SOURCES" 1451 if (_paraview_property_widget_UNPARSED_ARGUMENTS)
1453 "Unparsed arguments for paraview_plugin_add_property_widget: " 1454 "${_paraview_property_widget_UNPARSED_ARGUMENTS}")
1457 set(_paraview_property_widget_kind_widget 0)
1458 set(_paraview_property_widget_kind_group_widget 0)
1459 set(_paraview_property_widget_kind_widget_decorator 0)
1460 if (_paraview_property_widget_KIND STREQUAL
"WIDGET")
1461 set(_paraview_property_widget_kind_widget 1)
1462 elseif (_paraview_property_widget_KIND STREQUAL
"GROUP_WIDGET")
1463 set(_paraview_property_widget_kind_group_widget 1)
1464 elseif (_paraview_property_widget_KIND STREQUAL
"WIDGET_DECORATOR")
1465 set(_paraview_property_widget_kind_widget_decorator 1)
1468 "The `KIND` argument must be one of `WIDGET`, `GROUP_WIDGET`, or " 1469 "`WIDGET_DECORATOR`.")
1472 if (NOT DEFINED _paraview_property_widget_TYPE)
1474 "The `TYPE` argument is required.")
1477 if (NOT DEFINED _paraview_property_widget_CLASS_NAME)
1479 "The `CLASS_NAME` argument is required.")
1482 if (NOT DEFINED _paraview_property_widget_INTERFACES)
1484 "The `INTERFACES` argument is required.")
1487 if (NOT DEFINED _paraview_property_widget_SOURCES)
1489 "The `SOURCES` argument is required.")
1493 "${_ParaViewPlugin_cmake_dir}/pqPropertyWidgetInterface.h.in" 1494 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_property_widget_CLASS_NAME}PWIImplementation.h" 1497 "${_ParaViewPlugin_cmake_dir}/pqPropertyWidgetInterface.cxx.in" 1498 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_property_widget_CLASS_NAME}PWIImplementation.cxx" 1501 set(
"${_paraview_property_widget_INTERFACES}" 1502 "${_paraview_property_widget_CLASS_NAME}PWIImplementation" 1505 set(
"${_paraview_property_widget_SOURCES}" 1506 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_property_widget_CLASS_NAME}PWIImplementation.cxx" 1507 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_property_widget_CLASS_NAME}PWIImplementation.h" 1514 TODO: What is a dock window?
1519 [DOCK_AREA <Right|Left|Top|Bottom>]
1520 INTERFACES <variable>
1524 * `CLASS_NAME`: The name of the dock window
class.
1525 * `DOCK_AREA`: (Default `Left`) Where to dock the window within the
1527 * `INTERFACES`: The name of the generated interface.
1528 * `SOURCES`: The
source files generated by the interface.
1531 cmake_parse_arguments(_paraview_dock_window
1533 "DOCK_AREA;CLASS_NAME;INTERFACES;SOURCES" 1537 if (_paraview_dock_window_UNPARSED_ARGUMENTS)
1539 "Unparsed arguments for paraview_plugin_add_dock_window: " 1540 "${_paraview_dock_window_UNPARSED_ARGUMENTS}")
1543 if (NOT DEFINED _paraview_dock_window_CLASS_NAME)
1545 "The `CLASS_NAME` argument is required.")
1548 if (NOT DEFINED _paraview_dock_window_INTERFACES)
1550 "The `INTERFACES` argument is required.")
1553 if (NOT DEFINED _paraview_dock_window_SOURCES)
1555 "The `SOURCES` argument is required.")
1558 if (NOT DEFINED _paraview_dock_window_DOCK_AREA)
1559 set(_paraview_dock_window_DOCK_AREA
"Left")
1562 if (NOT _paraview_dock_window_DOCK_AREA STREQUAL
"Left" AND
1563 NOT _paraview_dock_window_DOCK_AREA STREQUAL
"Right" AND
1564 NOT _paraview_dock_window_DOCK_AREA STREQUAL
"Top" AND
1565 NOT _paraview_dock_window_DOCK_AREA STREQUAL
"Bottom")
1567 "`DOCK_AREA` must be one of `Left`, `Right`, `Top`, or `Bottom`. Got " 1568 "`${_paraview_dock_window_DOCK_AREA}`.")
1572 "${_ParaViewPlugin_cmake_dir}/pqDockWindowImplementation.h.in" 1573 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_dock_window_CLASS_NAME}Implementation.h" 1576 "${_ParaViewPlugin_cmake_dir}/pqDockWindowImplementation.cxx.in" 1577 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_dock_window_CLASS_NAME}Implementation.cxx" 1580 set(
"${_paraview_dock_window_INTERFACES}" 1581 "${_paraview_dock_window_CLASS_NAME}Implementation" 1584 set(
"${_paraview_dock_window_SOURCES}" 1585 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_dock_window_CLASS_NAME}Implementation.cxx" 1586 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_dock_window_CLASS_NAME}Implementation.h" 1593 TODO: What is an action group?
1599 INTERFACES <variable>
1603 * `CLASS_NAME`: The name of the action group
class.
1604 * `GROUP_NAME`: The name of the action group.
1605 * `INTERFACES`: The name of the generated interface.
1606 * `SOURCES`: The
source files generated by the interface.
1609 cmake_parse_arguments(_paraview_action_group
1611 "CLASS_NAME;GROUP_NAME;INTERFACES;SOURCES" 1615 if (_paraview_action_group_UNPARSED_ARGUMENTS)
1617 "Unparsed arguments for paraview_plugin_add_action_group: " 1618 "${_paraview_action_group_UNPARSED_ARGUMENTS}")
1621 if (NOT DEFINED _paraview_action_group_CLASS_NAME)
1623 "The `CLASS_NAME` argument is required.")
1626 if (NOT DEFINED _paraview_action_group_GROUP_NAME)
1628 "The `GROUP_NAME` argument is required.")
1631 if (NOT DEFINED _paraview_action_group_INTERFACES)
1633 "The `INTERFACES` argument is required.")
1636 if (NOT DEFINED _paraview_action_group_SOURCES)
1638 "The `SOURCES` argument is required.")
1642 "${_ParaViewPlugin_cmake_dir}/pqActionGroupImplementation.h.in" 1643 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_action_group_CLASS_NAME}Implementation.h" 1646 "${_ParaViewPlugin_cmake_dir}/pqActionGroupImplementation.cxx.in" 1647 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_action_group_CLASS_NAME}Implementation.cxx" 1650 set(
"${_paraview_action_group_INTERFACES}" 1651 "${_paraview_action_group_CLASS_NAME}Implementation" 1654 set(
"${_paraview_action_group_SOURCES}" 1655 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_action_group_CLASS_NAME}Implementation.cxx" 1656 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_action_group_CLASS_NAME}Implementation.h" 1663 TODO: What is a toolbar?
1668 INTERFACES <variable>
1672 * `CLASS_NAME`: The name of the toolbar
class.
1673 * `INTERFACES`: The name of the generated interface.
1674 * `SOURCES`: The
source files generated by the interface.
1677 cmake_parse_arguments(_paraview_toolbar
1679 "CLASS_NAME;INTERFACES;SOURCES" 1683 if (_paraview_toolbar_UNPARSED_ARGUMENTS)
1685 "Unparsed arguments for paraview_plugin_add_toolbar: " 1686 "${_paraview_toolbar_UNPARSED_ARGUMENTS}")
1689 if (NOT DEFINED _paraview_toolbar_CLASS_NAME)
1691 "The `CLASS_NAME` argument is required.")
1694 if (NOT DEFINED _paraview_toolbar_INTERFACES)
1696 "The `INTERFACES` argument is required.")
1699 if (NOT DEFINED _paraview_toolbar_SOURCES)
1701 "The `SOURCES` argument is required.")
1705 "${_ParaViewPlugin_cmake_dir}/pqToolBarImplementation.h.in" 1706 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_toolbar_CLASS_NAME}Implementation.h" 1709 "${_ParaViewPlugin_cmake_dir}/pqToolBarImplementation.cxx.in" 1710 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_toolbar_CLASS_NAME}Implementation.cxx" 1713 set(
"${_paraview_toolbar_INTERFACES}" 1714 "${_paraview_toolbar_CLASS_NAME}Implementation" 1717 set(
"${_paraview_toolbar_SOURCES}" 1718 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_toolbar_CLASS_NAME}Implementation.cxx" 1719 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_toolbar_CLASS_NAME}Implementation.h" 1724 ### View frame action group 1726 TODO: What is a view frame action group?
1731 INTERFACES <variable>
1735 * `CLASS_NAME`: The name of the view frame action group
class.
1736 * `INTERFACES`: The name of the generated interface.
1737 * `SOURCES`: The
source files generated by the interface.
1740 cmake_parse_arguments(_paraview_view_frame_action_group
1742 "CLASS_NAME;INTERFACES;SOURCES" 1746 if (_paraview_view_frame_action_group_UNPARSED_ARGUMENTS)
1748 "Unparsed arguments for paraview_plugin_add_view_frame_action_group: " 1749 "${_paraview_view_frame_action_group_UNPARSED_ARGUMENTS}")
1752 if (NOT DEFINED _paraview_view_frame_action_group_CLASS_NAME)
1754 "The `CLASS_NAME` argument is required.")
1757 if (NOT DEFINED _paraview_view_frame_action_group_INTERFACES)
1759 "The `INTERFACES` argument is required.")
1762 if (NOT DEFINED _paraview_view_frame_action_group_SOURCES)
1764 "The `SOURCES` argument is required.")
1768 "${_ParaViewPlugin_cmake_dir}/pqViewFrameActionGroupImplementation.h.in" 1769 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_view_frame_action_group_CLASS_NAME}Implementation.h" 1772 "${_ParaViewPlugin_cmake_dir}/pqViewFrameActionGroupImplementation.cxx.in" 1773 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_view_frame_action_group_CLASS_NAME}Implementation.cxx" 1776 set(
"${_paraview_view_frame_action_group_INTERFACES}" 1777 "${_paraview_view_frame_action_group_CLASS_NAME}Implementation" 1780 set(
"${_paraview_view_frame_action_group_SOURCES}" 1781 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_view_frame_action_group_CLASS_NAME}Implementation.cxx" 1782 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_view_frame_action_group_CLASS_NAME}Implementation.h" 1789 TODO: What is an
auto start?
1794 [STARTUP <function>]
1795 [SHUTDOWN <function>]
1796 INTERFACES <variable>
1800 * `CLASS_NAME`: The name of the
auto start
class.
1801 * `STARTUP`: (Defaults to `startup`) The name of the method to call
on 1803 * `SHUTDOWN`: (Defaults to `shutdown`) The name of the method to call
on 1805 * `INTERFACES`: The name of the generated interface.
1806 * `SOURCES`: The
source files generated by the interface.
1809 cmake_parse_arguments(_paraview_auto_start
1811 "CLASS_NAME;INTERFACES;SOURCES;STARTUP;SHUTDOWN" 1815 if (_paraview_auto_start_UNPARSED_ARGUMENTS)
1817 "Unparsed arguments for paraview_plugin_add_auto_start: " 1818 "${_paraview_auto_start_UNPARSED_ARGUMENTS}")
1821 if (NOT DEFINED _paraview_auto_start_CLASS_NAME)
1823 "The `CLASS_NAME` argument is required.")
1826 if (NOT DEFINED _paraview_auto_start_INTERFACES)
1828 "The `INTERFACES` argument is required.")
1831 if (NOT DEFINED _paraview_auto_start_SOURCES)
1833 "The `SOURCES` argument is required.")
1836 if (NOT DEFINED _paraview_auto_start_STARTUP)
1837 set(_paraview_auto_start_STARTUP
"startup")
1840 if (NOT DEFINED _paraview_auto_start_SHUTDOWN)
1841 set(_paraview_auto_start_SHUTDOWN
"shutdown")
1845 "${_ParaViewPlugin_cmake_dir}/pqAutoStartImplementation.h.in" 1846 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_auto_start_CLASS_NAME}Implementation.h" 1849 "${_ParaViewPlugin_cmake_dir}/pqAutoStartImplementation.cxx.in" 1850 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_auto_start_CLASS_NAME}Implementation.cxx" 1853 set(
"${_paraview_auto_start_INTERFACES}" 1854 "${_paraview_auto_start_CLASS_NAME}Implementation" 1857 set(
"${_paraview_auto_start_SOURCES}" 1858 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_auto_start_CLASS_NAME}Implementation.cxx" 1859 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_auto_start_CLASS_NAME}Implementation.h" 1864 ### Tree layout strategy 1866 TODO: What is a tree layout strategy?
1870 STRATEGY_TYPE <type>
1871 STRATEGY_LABEL <label>
1872 INTERFACES <variable>
1876 * `STRATEGY_TYPE`: The name of the tree layout strategy
class.
1877 * `STRATEGY_LABEL`: The label to use
for the strategy.
1878 * `INTERFACES`: The name of the generated interface.
1879 * `SOURCES`: The
source files generated by the interface.
1882 cmake_parse_arguments(_paraview_tree_layout_strategy
1884 "INTERFACES;SOURCES;STRATEGY_TYPE;STRATEGY_LABEL" 1888 if (_paraview_tree_layout_strategy_UNPARSED_ARGUMENTS)
1890 "Unparsed arguments for paraview_plugin_add_tree_layout_strategy: " 1891 "${_paraview_tree_layout_strategy_UNPARSED_ARGUMENTS}")
1894 if (NOT DEFINED _paraview_tree_layout_strategy_STRATEGY_TYPE)
1896 "The `STRATEGY_TYPE` argument is required.")
1899 if (NOT DEFINED _paraview_tree_layout_strategy_STRATEGY_LABEL)
1901 "The `STRATEGY_LABEL` argument is required.")
1904 if (NOT DEFINED _paraview_tree_layout_strategy_INTERFACES)
1906 "The `INTERFACES` argument is required.")
1909 if (NOT DEFINED _paraview_tree_layout_strategy_SOURCES)
1911 "The `SOURCES` argument is required.")
1915 "${_ParaViewPlugin_cmake_dir}/pqTreeLayoutStrategyImplementation.h.in" 1916 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_tree_layout_strategy_STRATEGY_TYPE}Implementation.h" 1919 "${_ParaViewPlugin_cmake_dir}/pqTreeLayoutStrategyImplementation.cxx.in" 1920 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_tree_layout_strategy_STRATEGY_TYPE}Implementation.cxx" 1923 set(
"${_paraview_tree_layout_strategy_INTERFACES}" 1924 "${_paraview_tree_layout_strategy_STRATEGY_TYPE}Implementation" 1927 set(
"${_paraview_tree_layout_strategy_SOURCES}" 1928 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_tree_layout_strategy_STRATEGY_TYPE}Implementation.cxx" 1929 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_tree_layout_strategy_STRATEGY_TYPE}Implementation.h" 1936 TODO: What is a proxy?
1941 INTERFACES <variable>
1944 [CLASS_NAME <class>]
1946 <XML_NAME|XML_NAME_REGEX> <name>]...)
1949 * `NAME`: The name of the proxy.
1950 * `INTERFACES`: The name of the generated interface.
1951 * `SOURCES`: The
source files generated by the interface.
1953 At least one `PROXY_TYPE` must be specified. Each proxy
type must be given an
1954 `XML_GROUP` and either an `XML_NAME` or `XML_NAME_REGEX`. If `CLASS_NAME` is
1955 not given, the `PROXY_TYPE` name is used instead.
1958 cmake_parse_arguments(_paraview_proxy
1960 "INTERFACES;SOURCES;NAME" 1964 if (NOT DEFINED _paraview_proxy_INTERFACES)
1966 "The `INTERFACES` argument is required.")
1969 if (NOT DEFINED _paraview_proxy_SOURCES)
1971 "The `SOURCES` argument is required.")
1974 if (NOT DEFINED _paraview_proxy_NAME)
1976 "The `NAME` argument is required.")
1979 set(_paraview_proxy_parse
"")
1980 set(_paraview_proxy_type)
1981 set(_paraview_proxy_types)
1982 foreach (_paraview_proxy_arg IN LISTS _paraview_proxy_UNPARSED_ARGUMENTS)
1983 if (_paraview_proxy_parse STREQUAL
"")
1984 set(_paraview_proxy_parse
"${_paraview_proxy_arg}")
1985 elseif (_paraview_proxy_parse STREQUAL
"PROXY_TYPE")
1986 set(_paraview_proxy_type
"${_paraview_proxy_arg}")
1987 list(APPEND _paraview_proxy_types
"${_paraview_proxy_type}")
1988 set(_paraview_proxy_parse
"")
1989 elseif (_paraview_proxy_parse STREQUAL
"CLASS_NAME")
1990 if (NOT _paraview_proxy_type)
1992 "Missing `PROXY_TYPE` for `CLASS_NAME`")
1994 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_class_name")
1996 "Duplicate `CLASS_NAME` for `${_paraview_proxy_type}`")
1998 set(
"_paraview_proxy_type_${_paraview_proxy_type}_class_name" 1999 "${_paraview_proxy_arg}")
2000 set(_paraview_proxy_parse
"")
2001 elseif (_paraview_proxy_parse STREQUAL
"XML_GROUP")
2002 if (NOT _paraview_proxy_type)
2004 "Missing `PROXY_TYPE` for `XML_GROUP`")
2006 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_group")
2008 "Duplicate `XML_GROUP` for `${_paraview_proxy_type}`")
2010 set(
"_paraview_proxy_type_${_paraview_proxy_type}_xml_group" 2011 "${_paraview_proxy_arg}")
2012 set(_paraview_proxy_parse
"")
2013 elseif (_paraview_proxy_parse STREQUAL
"XML_NAME")
2014 if (NOT _paraview_proxy_type)
2016 "Missing `PROXY_TYPE` for `XML_NAME`")
2018 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name" OR
2019 DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name_regex")
2021 "Duplicate `XML_NAME` or `XML_NAME_REGEX` for `${_paraview_proxy_type}`")
2023 set(
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name" 2024 "${_paraview_proxy_arg}")
2025 set(_paraview_proxy_parse
"")
2026 elseif (_paraview_proxy_parse STREQUAL
"XML_NAME_REGEX")
2027 if (NOT _paraview_proxy_type)
2029 "Missing `PROXY_TYPE` for `XML_NAME_REGEX`")
2031 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name" OR
2032 DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name_regex")
2034 "Duplicate `XML_NAME` or `XML_NAME_REGEX` for `${_paraview_proxy_type}`")
2036 set(
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name_regex" 2037 "${_paraview_proxy_arg}")
2038 set(_paraview_proxy_parse
"")
2041 "Unknown argument `${_paraview_proxy_parse}`")
2045 if (_paraview_proxy_parse)
2047 "Missing argument for `${_paraview_proxy_parse}`")
2050 if (NOT _paraview_proxy_types)
2052 "No `PROXY_TYPE` arguments given")
2055 set(_paraview_proxy_includes)
2056 set(_paraview_proxy_body)
2057 foreach (_paraview_proxy_type IN LISTS _paraview_proxy_types)
2058 if (NOT DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_group")
2060 "Missing `XML_GROUP` for `${_paraview_proxy_type}`")
2062 if (NOT DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name" AND
2063 NOT DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name_regex")
2065 "Missing `XML_NAME` or `XML_NAME_REGEX` for `${_paraview_proxy_type}`")
2067 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_class_name")
2068 set(_paraview_proxy_class
2069 "${_paraview_proxy_type_${_paraview_proxy_type}_class_name}")
2071 set(_paraview_proxy_class
2072 "${_paraview_proxy_type}")
2075 set(_paraview_proxy_group
"${_paraview_proxy_type_${_paraview_proxy_type}_xml_group}")
2076 if (DEFINED
"_paraview_proxy_type_${_paraview_proxy_type}_xml_name")
2077 set(_paraview_proxy_name
"${_paraview_proxy_type_${_paraview_proxy_type}_xml_name}")
2078 set(_paraview_proxy_name_type
"QString")
2079 set(_paraview_proxy_cmp
"name == proxy->GetXMLName()")
2081 set(_paraview_proxy_name
"${_paraview_proxy_type_${_paraview_proxy_type}_xml_name_regex}")
2082 set(_paraview_proxy_name_type
"QRegularExpression")
2083 set(_paraview_proxy_cmp
"QString(proxy->GetXMLName()).contains(name)")
2086 if (NOT DEFINED
"_paraview_proxy_included_${_paraview_proxy_class}")
2087 string(APPEND _paraview_proxy_includes
2088 "#include \"${_paraview_proxy_class}.h\"\n")
2089 set(
"_paraview_proxy_included_${_paraview_proxy_class}" 1)
2091 string(APPEND _paraview_proxy_body
2093 static const QString group(\"${_paraview_proxy_group}\"); 2094 static const ${_paraview_proxy_name_type} name(\"${_paraview_proxy_name}\"); 2095 if (group == proxy->GetXMLGroup() && ${_paraview_proxy_cmp}) 2097 return new ${_paraview_proxy_class}(regGroup, regName, proxy, server, nullptr); 2103 "${_ParaViewPlugin_cmake_dir}/pqServerManagerModelImplementation.h.in" 2104 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_proxy_NAME}ServerManagerModelImplementation.h" 2107 "${_ParaViewPlugin_cmake_dir}/pqServerManagerModelImplementation.cxx.in" 2108 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_proxy_NAME}ServerManagerModelImplementation.cxx" 2111 set(
"${_paraview_proxy_INTERFACES}" 2112 "${_paraview_proxy_NAME}ServerManagerModelImplementation" 2115 set(
"${_paraview_proxy_SOURCES}" 2116 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_proxy_NAME}ServerManagerModelImplementation.cxx" 2117 "${CMAKE_CURRENT_BINARY_DIR}/${_paraview_proxy_NAME}ServerManagerModelImplementation.h" function paraview_plugin_add_dock_window()
.md Dock window
function _vtk_module_check_destinations(prefix)
Check that destinations are valid.
function paraview_plugin_add_action_group()
.md Action group
function _paraview_plugin_check_destdir(variable)
function paraview_client_documentation()
.md Documentation from XML files
function vtk_module_export_find_packages()
Export find_package calls for dependencies.
function paraview_add_plugin(name)
.md Adding a plugin
function vtk_module_scan()
Scan modules and kits.
function paraview_plugin_add_proxy()
.md Proxy
function vtk_module_build()
Build modules and kits.
function paraview_plugin_add_toolbar()
.md Toolbar
function paraview_plugin_write_conf()
.md Plugin configuration files
function vtk_encode_string()
Encode a file as a C string at build time.
#define BUILD_SHARED_LIBS
function paraview_client_generate_help()
.md Generating help documentation
function paraview_plugin_add_property_widget()
.md Plugin interfaces
function paraview_plugin_find_plugins(output)
.md ParaView Plugin CMake API
function paraview_plugin_add_view_frame_action_group()
.md View frame action group
function paraview_plugin_build()
.md Building plugins
function vtk_module_wrap_client_server()
.md Wrapping a set of VTK modules for ClientServer
function _vtk_module_split_module_name(name, prefix)
Split a module name into a namespace and target component.
function paraview_plugin_add_auto_start()
.md Auto start
function paraview_plugin_add_tree_layout_strategy()
.md Tree layout strategy
function paraview_server_manager_process()
.md Building XML files
function paraview_server_manager_process_files()
.md The second way to process XML files directly.