From a1ab8683ddb3896a66f7f73cfe65da3d44e630ae Mon Sep 17 00:00:00 2001 From: mwlasiuk Date: Sat, 12 Sep 2026 19:34:45 +0200 Subject: [PATCH 1/2] Disable building non core workflow projects by default --- CMakeLists.txt | 35 ++++++++++++++++++++--------------- core/CMakeLists.txt | 24 ++++++++++++++---------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b88a85ff..2c027b32 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,8 +23,9 @@ set(HD_CPU_OPTIMIZATION "AUTO" CACHE STRING "CPU optimization target (AUTO, INTE set_property(CACHE HD_CPU_OPTIMIZATION PROPERTY STRINGS AUTO INTEL AMD ARM GENERIC) # Options to enable / disable specific components -option(BUILD_WITH_CLI_TOOLS "Build with command line tools" ON) +option(BUILD_WITH_CLI_TOOLS "Build with command line tools" OFF) option(BUILD_WITH_HD_MAPPER_APPLICATION "Build with hd_mapper tool" OFF) +option(BUILD_WITH_UTILITY_APPLICATION "Enable build of utility applications" OFF) # Three-way profiler backend: NONE (zero overhead) | UTL (lightweight) | TRACY (full profiler) set(HDMAPPING_PROFILER "NONE" CACHE STRING "Profiler backend: NONE | UTL | TRACY") @@ -127,23 +128,27 @@ if(BUILD_WITH_HD_MAPPER_APPLICATION) add_subdirectory(apps/hd_mapper) endif() +# Applications for typical workflow - see images/workflow.png +add_subdirectory(apps/mandeye_raw_data_viewer) add_subdirectory(apps/lidar_odometry_step_1) -add_subdirectory(apps/manual_color) -add_subdirectory(apps/multi_session_registration) +add_subdirectory(apps/mandeye_single_session_viewer) add_subdirectory(apps/multi_view_tls_registration) add_subdirectory(apps/multi_view_tls_registration_legacy) -add_subdirectory(apps/split_multi_livox) -add_subdirectory(apps/precision_forestry_tools) -add_subdirectory(apps/mandeye_raw_data_viewer) -add_subdirectory(apps/compare_trajectories) -add_subdirectory(apps/mandeye_mission_recorder_calibration) -add_subdirectory(apps/mandeye_single_session_viewer) -add_subdirectory(apps/livox_mid_360_intrinsic_calibration) -add_subdirectory(apps/single_session_manual_coloring) -add_subdirectory(apps/concatenate_multi_livox) -add_subdirectory(apps/camera_lidar_calibration) -add_subdirectory(apps/camera_lidar_trajectory_viewer) -add_subdirectory(apps/camera_lidar_intrinsics_calib) +add_subdirectory(apps/multi_session_registration) + +if(BUILD_WITH_UTILITY_APPLICATION) + add_subdirectory(apps/manual_color) + add_subdirectory(apps/split_multi_livox) + add_subdirectory(apps/precision_forestry_tools) + add_subdirectory(apps/compare_trajectories) + add_subdirectory(apps/mandeye_mission_recorder_calibration) + add_subdirectory(apps/livox_mid_360_intrinsic_calibration) + add_subdirectory(apps/single_session_manual_coloring) + add_subdirectory(apps/concatenate_multi_livox) + add_subdirectory(apps/camera_lidar_calibration) + add_subdirectory(apps/camera_lidar_trajectory_viewer) + add_subdirectory(apps/camera_lidar_intrinsics_calib) +endif() # NOTE(mwlasiuk) : disable warnings for third party libraries so they do not pollute build logs diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 9511b62d..3c353cbc 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -116,21 +116,25 @@ function(add_core_target target_name with_gui) endif() endfunction() -add_core_target(core_no_gui FALSE) +# core_no_gui is used by python bindings and lidar odometry test subprojects only - if they are not build just do not waste time building core_no_gui +if(BUILD_TESTING OR BUILD_WITH_PYBIND) + add_core_target(core_no_gui FALSE) + + target_precompile_headers(core_no_gui + PRIVATE include/pch/pch.h + ) + + set_target_properties(core_no_gui PROPERTIES + POSITION_INDEPENDENT_CODE ON) +endif() + add_core_target(core TRUE) target_link_libraries(core PUBLIC core_pfd) -target_precompile_headers(core_no_gui - PRIVATE include/pch/pch.h -) - -target_precompile_headers(core_no_gui - PRIVATE include/pch/pch.h +target_precompile_headers(core + PRIVATE include/pch/pch.h ) -set_target_properties(core_no_gui PROPERTIES - POSITION_INDEPENDENT_CODE ON) - # ============================================================================ # core_raylib -- shared raylib rendering/camera/picking infrastructure # (ScanRenderer, OrbitCamera, picking, the compass overlay), used by From 31976be068aacd7311a7fef4a956d248f259a844 Mon Sep 17 00:00:00 2001 From: mwlasiuk Date: Mon, 14 Sep 2026 19:54:35 +0200 Subject: [PATCH 2/2] Adjust deploy_mandaye.bat and workflows --- .github/workflows/cmake-linux-deb.yml | 2 +- .github/workflows/cmake-linux.yml | 2 +- .github/workflows/macos.yml | 1 + .github/workflows/python-bindings-linux.yml | 1 + .github/workflows/python-bindings-windows.yml | 1 + .github/workflows/windows.yml | 2 +- deploy_mandeye.bat | 2 +- 7 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cmake-linux-deb.yml b/.github/workflows/cmake-linux-deb.yml index 55252554..ac0bfb07 100644 --- a/.github/workflows/cmake-linux-deb.yml +++ b/.github/workflows/cmake-linux-deb.yml @@ -38,7 +38,7 @@ jobs: - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_WITH_BUNDLED_FREEGLUT=0 -DBUILD_WITH_BUNDLED_EIGEN=0 -DBUILD_WITH_BUNDLED_LIBLASZIP=0 -DBUILD_TESTING=ON + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_WITH_UTILITY_APPLICATION=ON -DBUILD_WITH_BUNDLED_FREEGLUT=0 -DBUILD_WITH_BUNDLED_EIGEN=0 -DBUILD_WITH_BUNDLED_LIBLASZIP=0 -DBUILD_TESTING=ON - name: Build # Build your program with the given configuration diff --git a/.github/workflows/cmake-linux.yml b/.github/workflows/cmake-linux.yml index 0ce03bd9..9f66d900 100644 --- a/.github/workflows/cmake-linux.yml +++ b/.github/workflows/cmake-linux.yml @@ -41,7 +41,7 @@ jobs: - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_TESTING=ON + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_WITH_UTILITY_APPLICATION=ON -DBUILD_TESTING=ON - name: Build # Build your program with the given configuration diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 75c0dc61..1bf434c2 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -29,6 +29,7 @@ jobs: run: | cmake -B ${{github.workspace}}/build \ -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ + -DBUILD_WITH_UTILITY_APPLICATION=ON \ -DFREEGLUT_COCOA=ON \ -DHD_CPU_OPTIMIZATION=AUTO \ -DBUILD_TESTING=ON diff --git a/.github/workflows/python-bindings-linux.yml b/.github/workflows/python-bindings-linux.yml index c68bdf46..27333c78 100644 --- a/.github/workflows/python-bindings-linux.yml +++ b/.github/workflows/python-bindings-linux.yml @@ -45,6 +45,7 @@ jobs: run: | cmake -B ${{github.workspace}}/build_pybind \ -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ + -DBUILD_WITH_UTILITY_APPLICATION=ON \ -DBUILD_WITH_PYBIND=ON - name: Build Python bindings diff --git a/.github/workflows/python-bindings-windows.yml b/.github/workflows/python-bindings-windows.yml index 6bf602f8..6c188339 100644 --- a/.github/workflows/python-bindings-windows.yml +++ b/.github/workflows/python-bindings-windows.yml @@ -40,6 +40,7 @@ jobs: run: | cmake -B ${{github.workspace}}/build_pybind ` -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ` + -DBUILD_WITH_UTILITY_APPLICATION=ON ` -DBUILD_WITH_PYBIND=ON ` shell: pwsh diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index bb20014b..bfd11112 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -35,7 +35,7 @@ jobs: - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_TESTING=ON + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_WITH_UTILITY_APPLICATION=ON -DBUILD_TESTING=ON - name: Build # Build your program with the given configuration diff --git a/deploy_mandeye.bat b/deploy_mandeye.bat index 5a2dd265..a7e2d178 100644 --- a/deploy_mandeye.bat +++ b/deploy_mandeye.bat @@ -39,7 +39,7 @@ echo. if not exist "%BUILD_DIR%\mandeye_raw_data_viewer.exe" ( echo ERROR: %BUILD_DIR% does not look like a built output folder. echo Build the project first, e.g.: - echo cmake -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo + echo cmake -B build -DBUILD_WITH_UTILITY_APPLICATION=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo echo cmake --build build --config RelWithDebInfo exit /b 1 )