[refact] Refact LidarView build system to allow standalone builds
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 newPlugins/
directory and clean-up the plugin - Split
LidarPlugin
in two parts:-
LidarCore
which will be located inLVCore/
- containing all vtk modules, as our interpreters plugins and ApplicationComponents depends on LidarCore modules, to resolve dependencies build, we needed to extract it fromLidarPlugin
. -
LidarCorePlugin
which will be located inLVCore/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 dummyLidarView::UtilitiesUsedModules
to be able to buildLidarCorePlugin
, which optional depends on all othersLidarCore
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
andlidarview_plugin_directories
before callingadd_subdirectory(LVCore)
- Note: to build LidarView-basedapp specific plugins we need to set
- 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
fromLidarCore
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