Import VolumeRover3 application from libcvc - #13
Merged
Conversation
VolumeRover3 (the next-generation Qt6/VTK visualization app) moves here
from transfix/libcvc so that libcvc can become a lean SDK (library +
cvc CLI) and this repository hosts the application that supersedes
VolumeRover 2.0.
Provenance: plain copy (no git-history rewrite) of src/volrover3/,
inc/volrover3/, share/ (desktop file + icons), CMake/Info.plist.in, and
docs/{GRAPHICS_SYSTEM,GRAPHICS_DATA_DRIVEN_UPDATES,APPSTATE_CALLBACKS}.md
from libcvc commit 03b4f961f834c46fcd19b9b4b633dc4c1c8bdcfc
(transfix/libcvc master). Sources and headers are imported verbatim;
only the CMake build was adapted:
- volrover3/CMakeLists.txt now consumes libcvc as an EXTERNAL SDK:
find_package(cvc CONFIG REQUIRED) and links the exported cvc::cvc
target (same target name the in-tree alias had, so the
target_link_libraries lists are unchanged)
- headers live at volrover3/inc/volrover3/ so #include <volrover3/...>
keeps working; icon/desktop/Info.plist paths now resolve inside
volrover3/
- own project(volrover3 VERSION 3.2.4) scope with C++20 (the
surrounding 2.0 tree stays C++17)
- tests use an installed GTest when available, else FetchContent
googletest v1.14.0 (the version libcvc pinned); new
VOLROVER3_BUILD_TESTS option (default ON)
- Windows runtime-DLL bundling + windeployqt and macOS macdeployqt
install hooks ported; the GET_RUNTIME_DEPENDENCIES walker now derives
the libcvc DLL directory from the imported cvc::cvc target;
.github/scripts/verify-windows-deps.ps1 carried over for future
packaging CI
- volrover3 registers a CPack component when the top-level has
include()d CPack, enabling
cpack -D CPACK_COMPONENTS_ALL=volrover3
Coexistence with VolumeRover 2.0: the change is strictly additive. The
2.0 targets, sources, and CMake wiring are untouched except for a new
gated block at the very end of the top-level CMakeLists.txt;
BUILD_VOLROVER3 defaults to OFF, so a plain configure/build still
produces VolumeRover 2.0 exactly as before.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
Executes goal G4 (near-term-goals-2026-07-15): the VolumeRover3 application moves out of transfix/libcvc into this repository (at
volrover3/), which will eventually supersede VolRover 2.0. libcvc stays a lean SDK. Counterpart PR: transfix/libcvc#102History decision (flagged for review)
Plain copy, no git-history rewrite. Sources/headers/icons/docs are imported verbatim from libcvc commit
03b4f961f834c46fcd19b9b4b633dc4c1c8bdcfc(master); the provenance is recorded in the import commit message. Their full history remains in transfix/libcvc. Object if you would rather have the history carried over via filter-repo.VolRover 2.0 coexistence guarantee
VolRover 2.0 target unchanged and still builds; volrover3 is additive behind
BUILD_VOLROVER3(default OFF). No 2.0 sources, targets, or CMake wiring were removed, renamed, or rewired — the only top-levelCMakeLists.txtchange is a new gated block appended at the end. Verified: a fresh default configure (cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release,BUILD_VOLROVER3unset) configures and fully buildsbin/VolumeRover2(448/448 targets) on this branch.Layout and CMake design
volrover3/— app sources (verbatim),tests/,inc/volrover3/(so#include <volrover3/...>keeps working),share/(desktop file + icons),cmake/Info.plist.in,docs/(GRAPHICS_SYSTEM, GRAPHICS_DATA_DRIVEN_UPDATES, APPSTATE_CALLBACKS)find_package(cvc CONFIG REQUIRED)→ links the exported, namespacedcvc::cvctarget (libcvc installslib/cmake/cvc/cvcConfig.cmake+cvcTargets.cmake, namespacecvc::). The in-tree build already linked an alias with the same name, so the link lists are unchanged.project(volrover3 VERSION 3.2.4)scope, C++20 (2.0 tree stays C++17); Qt6 with Qt5 fallback;find_package(VTK REQUIRED)+vtk_module_autoinitVOLROVER3_BUILD_TESTS(default ON)$<TARGET_RUNTIME_DLLS>+GET_RUNTIME_DEPENDENCIESwalker (now seeded with the importedcvc::cvcDLL directory) + windeployqt hook; registers avolrover3CPack component when the top level has included CPack (cpack -D CPACK_COMPONENTS_ALL=volrover3).verify-windows-deps.ps1carried to.github/scripts/for future packaging CI.Verification (Linux, this machine)
BUILD_VOLROVER3=ONconfigure against a real installed SDK (libcvcdist-cvcpkg3.2.4+cvc.1 tarball extracted to/tmp/libcvc-sdk) withCMAKE_PREFIX_PATH="<sdk>;<cvcpkg deps prefix>"(Qt6 + VTK 9.5 + Boost 1.86 + CGAL 6 + HDF5 + libiimod from the deps prefix): passesvolrover3app builds and links against the externalcvc::cvcctest --test-dir build/volrover3,QT_QPA_PLATFORM=offscreen)Two workarounds were needed for the combined (2.0 + 3) configure on this machine, both pre-existing 2.0 fragilities surfaced by adding a foreign
CMAKE_PREFIX_PATH, not regressions from this PR:-DDISABLE_CGAL=ON(a 2.0 option):src/cvcraw_geometry/CMakeLists.txtdoesinclude(${CGAL_USE_FILE}), which breaks when the prefix supplies CGAL 6 (UseCGAL was removed upstream). volrover3 itself gets CGAL through libcvc's config.-Dlog4cplus_DIR=/usr/lib/x86_64-linux-gnu/cmake/log4cplus: the cvcpkg deps prefix ships a log4cplus config that only defineslog4cplus::log4cplusS(static), shadowing the system package whoselog4cplus::log4cplustarget 2.0 links.Known gaps / follow-ups
verify-windows-deps.ps1is already in place)BUILD_VOLROVER3=ON, plaincpackwill include volrover3 in the VolumeRover package, andcpack -D CPACK_COMPONENTS_ALL=volrover3packages it alonexmlrpc/headers); SDK tarballs built before that fix needinc/xmlrpcadded manually to compile volrover3