Skip to content

[refact] Refact LidarView build system to allow standalone builds

Timothée Couble requested to merge experimental/allowStandAloneBuilds into master

This MR refact LidarView cmake/build architecture. This is a follow-up of !392 (merged)

Main changes:

  • Add a Plugins/ directory and CMake uses paraview_plugin_scan to build automatically requested plugins (LidarCorePlugin is still required)
  • Move DatasetIOPlugin into the new Plugins/ directory and clean-up the plugin
  • Split LidarPlugin in two parts:
    • LidarCore which will be located in LVCore/ - containing all vtk modules, as our interpreters plugins and ApplicationComponents depends on LidarCore modules, to resolve dependencies build, we needed to extract it from LidarPlugin.
    • LidarCorePlugin which will be located in LVCore/Plugins/ - containing only XML paraview proxy files (it seems we can only add filters and sources in a paraview based-app if it's in a plugin). Note: I added a dummy LidarView::UtilitiesUsedModules to be able to build LidarCorePlugin, which optional depends on all others LidarCore modules.
  • Build all LidarView modules and plugins from LVCore/CMakeLists.txt
    • Note: to build LidarView-basedapp specific plugins we need to set lidarview_default_plugins and lidarview_plugin_directories before calling add_subdirectory(LVCore)
  • Rework the python module installer to be standalone build compatible
  • Add CMake/CommonLidarViewOptions.cmake to regroup all LidarView-based app common options, this file need to be include in the LidarView based app.
  • Fix LidarCore testing and add a way to do UI XML testing in LidarView.
  • Externalize SLAM plugin, I think it became too complexe to be built inside LidarView, it adds a lot of optional dependencies and flood CMake logs. (We would add it as a project in lidarview-superbuild, it wouldn't change anything from an user point of vue as we cannot currently build LidarView in standalone) See keu-computervision/slam!238 (merged)

Others fixes:

  • Remove FORCE_STATIC from LidarCore modules.
  • Fix depencies in LidarCore modules that was missing when building python wrapping.
  • Fix prepended python path to find LidarView python libraries
  • Clean-up CMake files that became useless with the module/plugin system.

What's next:

  • Make ApplicationComponent a vtk module
  • Migrate some python functionalities from LidarView/applogic into LVCore

Related to lidarview!169 (merged)

Edited by Timothée Couble

Merge request reports