2026-03-15 14:57:27 -07:00
@ echo off
setlocal enabledelayedexpansion
: : --- CONFIGURATION ---
set " VCPKG_ROOT= %~dp0 vcpkg "
set " EXPORT_DIR= %~dp0 vcpkg_binaries "
2026-07-01 18:11:28 -07:00
: : All deps downloaded/built from source (git clones + the pinned CMake) live here.
set " SRC_DIR= %~dp0 vcpkg_deps_from_source "
2026-03-15 14:57:27 -07:00
set " TRIPLET=x64-windows-release "
set " SEVENZIP_EXE=C:\Program Files\7-Zip\7z.exe "
set " VCPKG_JSON= %~dp0 vcpkg.json "
for /f " usebackq tokens=* " %% a in ( `powershell -NoProfile -Command "(Get-Content ' %VCPKG_JSON% ' -Raw | ConvertFrom-Json).'builtin-baseline'"` ) do set " VCPKG_COMMIT= %% a "
echo [+] Detected VCPKG baseline commit: %VCPKG_COMMIT%
if " %VCPKG_COMMIT% " == " " (
echo [X] Error: Could not find 'builtin-baseline' in %VCPKG_JSON%
pause
exit /b 1
)
set VCPKG_COMMIT_SHORT = %VCPKG_COMMIT:~0,8%
: : 1. Setup Local vcpkg
if not exist " %VCPKG_ROOT% " (
echo [+] Local vcpkg not found. Cloning...
git clone https://github.com/microsoft/vcpkg.git " %VCPKG_ROOT% "
)
pushd " %VCPKG_ROOT% "
git checkout %VCPKG_COMMIT%
call .\bootstrap-vcpkg.bat
popd
: : 2. Install vcpkg dependencies
echo [+] Installing dependencies via vcpkg manifest...
" %VCPKG_ROOT% \vcpkg.exe " install ^
--triplet=%TRIPLET% ^
--host-triplet=%TRIPLET% ^
--clean-after-build ^
--x-feature=tools ^
--x-feature=k4w2 ^
--x-feature=octomap ^
--x-feature=openmp ^
--x-feature=realsense2 ^
--x-feature=openni2 ^
--x-feature=gtsam-deps ^
--x-feature=python ^
2026-07-01 18:11:28 -07:00
--x-feature=libpointmatcher-deps ^
--x-feature=libfreenect2-deps || exit /b !errorlevel!
2026-03-15 14:57:27 -07:00
: : 3. Export
echo [+] Exporting built binaries to raw folder...
set " VS_LOCATOR= %ProgramFiles(x86)% \Microsoft Visual Studio\Installer\vswhere.exe "
for /f " usebackq tokens=* " %% i in ( `" %VS_LOCATOR% " -latest -property catalog_productLineVersion` ) do set VS_YEAR = vs%% i
set TARGET_NAME = vcpkg-export-%VCPKG_COMMIT_SHORT% -x64-%VS_YEAR%
set TARGET_FULL_PATH = %EXPORT_DIR% \%TARGET_NAME%
if exist " %TARGET_FULL_PATH% " rd /s /q " %TARGET_FULL_PATH% "
2026-07-01 18:11:28 -07:00
" %VCPKG_ROOT% \vcpkg.exe " export --raw --output-dir=" %EXPORT_DIR% " --output=%TARGET_NAME% --triplet=%TRIPLET% || exit /b !errorlevel!
2026-03-15 14:57:27 -07:00
set " FINAL_EXPORT_PATH= %TARGET_FULL_PATH% "
echo [+] Add numpy...
: : We install numpy<2 to be compatible with SuperPoint and SuperGlue scripts
%FINAL_EXPORT_PATH% /installed/%TRIPLET% /tools/python3/python.exe -m ensurepip --upgrade || exit /b %errorlevel%
%FINAL_EXPORT_PATH% /installed/%TRIPLET% /tools/python3/python.exe -m pip install --upgrade pip || exit /b !errorlevel!
%FINAL_EXPORT_PATH% /installed/%TRIPLET% /tools/python3/python.exe -m pip install " numpy<2 " || exit /b !errorlevel!
: : 4. Other dependencies not in vcpkg
2026-07-01 18:11:28 -07:00
: : Everything cloned/downloaded below goes into %SRC_DIR% to keep the repo root clean.
if not exist " %SRC_DIR% " mkdir " %SRC_DIR% "
cd /d " %SRC_DIR% "
: : Kinect for Windows SDK v2 (k4w2): rtabmap's FindKinectSDK2.cmake expects the
: : Microsoft SDK layout (KINECTSDK20_DIR\inc and \Lib\x64), but vcpkg's kinectsdk2
: : port installs vcpkg-style (include\ and lib\). Mirror the bundled headers/lib into
: : the expected layout so it is found with KINECTSDK20_DIR pointing at the export.
if " %KINECTSDK20_DIR% " == " " (
echo Error: KINECTSDK20_DIR environment variable is not set! Install Kinect for Windows SDK v2: https://www.microsoft.com/en-us/download/details.aspx?id=44561
pause
exit /b 1
)
echo [+] Arranging Kinect SDK v2 layout for FindKinectSDK2...
set " K4W2_ROOT= %FINAL_EXPORT_PATH% \installed\ %TRIPLET% "
robocopy " %K4W2_ROOT% \include " " %K4W2_ROOT% \inc " Kinect*.h Nui*.h /XO > nul
robocopy " %K4W2_ROOT% \lib " " %K4W2_ROOT% \Lib\x64 " Kinect20*.lib /XO > nul
robocopy " %KINECTSDK20_DIR% \bin " " %K4W2_ROOT% \bin " Kinect20.dll /XO > nul
: : Robocopy exit codes under 8 mean successful copies/no changes; 8+ is a failure.
if !errorlevel! GEQ 8 (
echo Error: Robocopy failed with exit code !errorlevel!
pause
exit /b !errorlevel!
)
: : orbbec SDK2
echo [+] Building OrbbecSDK_v2...
if not exist OrbbecSDK_v2 (
echo [+] Downloading and applying patch...
git clone https://github.com/orbbec/OrbbecSDK_v2.git
cd OrbbecSDK_v2
git checkout v2.8.7
: : Install the CMake package config under lib/cmake/<pkg> so find_package(OrbbecSDK) works
git apply " %~dp0 patches\orbbecsdk_2.8.7.patch "
cd ..
)
cd OrbbecSDK_v2
cmake -S . -B build -GNinja ^
-DVCPKG_MANIFEST_INSTALL=OFF ^
-DVCPKG_TARGET_TRIPLET=x64-windows-release ^
-DVCPKG_INSTALLED_DIR=" %FINAL_EXPORT_PATH% \installed " ^
-DCMAKE_TOOLCHAIN_FILE=" %FINAL_EXPORT_PATH% \scripts\buildsystems\vcpkg.cmake " ^
-DCMAKE_INSTALL_PREFIX=" %FINAL_EXPORT_PATH% \installed\ %TRIPLET% " ^
-DCMAKE_BUILD_TYPE=Release ^
-DOB_BUILD_DOCS=OFF ^
-DOB_BUILD_EXAMPLES=OFF ^
-DOB_BUILD_TOOLS=OFF ^
-DOB_INSTALL_EXAMPLES_SOURCE=OFF || exit /b !errorlevel!
cmake --build build --config Release --target install || exit /b !errorlevel!
cd ..
if " %K4A_ROOT_DIR% " == " " (
echo Error: K4A_ROOT_DIR environment variable is not set! Install K4A: https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/docs/usage.md
pause
exit /b 1
)
echo Copying Kinect For Azure components...
robocopy " %K4A_ROOT_DIR% \sdk " " %FINAL_EXPORT_PATH% \installed\ %TRIPLET% \sdk " /E /XO
: : Robocopy exit codes under 8 mean successful copies/no changes.
: : 8 or higher means there was a failure.
if !errorlevel! GEQ 8 (
echo Error: Robocopy failed with exit code !errorlevel!
pause
exit /b !errorlevel!
)
2026-03-15 14:57:27 -07:00
: : libnabo
echo [+] Building libnabo...
if not exist libnabo (
echo [+] Downloading...
git clone https://github.com/ethz-asl/libnabo.git
cd libnabo
: : Jan 27, 2022
git checkout c925c47
2026-07-01 18:11:28 -07:00
git apply " %~dp0 patches\libnabo_c925c47.patch "
2026-03-15 14:57:27 -07:00
cd ..
)
cd libnabo
cmake -S . -B build -GNinja ^
-DVCPKG_MANIFEST_INSTALL=OFF ^
-DVCPKG_TARGET_TRIPLET=x64-windows-release ^
-DVCPKG_INSTALLED_DIR=" %FINAL_EXPORT_PATH% \installed " ^
-DCMAKE_TOOLCHAIN_FILE=" %FINAL_EXPORT_PATH% \scripts\buildsystems\vcpkg.cmake " ^
-DCMAKE_INSTALL_PREFIX=" %FINAL_EXPORT_PATH% \installed\ %TRIPLET% " ^
-DCMAKE_BUILD_TYPE=Release ^
-DSHARED_LIBS=FALSE ^
-DLIBNABO_BUILD_DOXYGEN=OFF ^
-DLIBNABO_BUILD_EXAMPLES=OFF ^
-DLIBNABO_BUILD_PYTHON=OFF ^
-DLIBNABO_BUILD_TESTS=OFF || exit /b !errorlevel!
cmake --build build --config Release --target install || exit /b !errorlevel!
cd ..
: : libpointmatcher
echo [+] Building libpointmatcher...
if not exist libpointmatcher (
echo [+] Downloading and applying patch...
git clone https://github.com/ethz-asl/libpointmatcher.git
cd libpointmatcher
: : Mar 17, 2023
git checkout 7dc58e5
2026-07-01 18:11:28 -07:00
git apply " %~dp0 patches\pointmatcher_7dc58e5.patch "
2026-03-15 14:57:27 -07:00
cd ..
)
cd libpointmatcher
cmake -S . -B build -GNinja ^
-DVCPKG_MANIFEST_INSTALL=OFF ^
-DVCPKG_TARGET_TRIPLET=x64-windows-release ^
-DVCPKG_INSTALLED_DIR=" %FINAL_EXPORT_PATH% \installed " ^
-DCMAKE_TOOLCHAIN_FILE=" %FINAL_EXPORT_PATH% \scripts\buildsystems\vcpkg.cmake " ^
-DCMAKE_INSTALL_PREFIX=" %FINAL_EXPORT_PATH% \installed\ %TRIPLET% " ^
-DCMAKE_BUILD_TYPE=Release ^
-DBUILD_TESTS=OFF ^
-DBUILD_SHARED_LIBS=ON ^
-DPOINTMATCHER_BUILD_EVALUATIONS=OFF ^
-DPOINTMATCHER_BUILD_EXAMPLES=OFF ^
-DCMAKE_CXX_FLAGS=" -DBOOST_TIMER_ENABLE_DEPRECATED /EHsc -DBOOST_EXCEPTION_DISABLE " || exit /b !errorlevel!
cmake --build build --config Release --target install || exit /b !errorlevel!
cd ..
: : We remove the files in the top-level CMake directory to force use of share/libpointmatcher/cmake
if exist " %FINAL_EXPORT_PATH% \installed\ %TRIPLET% \CMake\ " (
rd /s /q " %FINAL_EXPORT_PATH% \installed\ %TRIPLET% \CMake "
)
: : gtsam
echo [+] Building gtsam...
if not exist gtsam (
echo [+] Downloading and applying patch...
git clone https://github.com/borglab/gtsam.git
cd gtsam
: : June 18, 2025
git checkout 4.3a0-ros
git cherry-pick 18af4e6
2026-07-01 18:11:28 -07:00
git apply " %~dp0 patches\gtsam_4_3a0-ros.patch "
2026-03-15 14:57:27 -07:00
cd ..
)
cd gtsam
cmake -S . -B build -GNinja ^
-DVCPKG_MANIFEST_INSTALL=OFF ^
-DVCPKG_TARGET_TRIPLET=x64-windows-release ^
-DVCPKG_INSTALLED_DIR=" %FINAL_EXPORT_PATH% \installed " ^
-DCMAKE_TOOLCHAIN_FILE=" %FINAL_EXPORT_PATH% \scripts\buildsystems\vcpkg.cmake " ^
-DCMAKE_INSTALL_PREFIX=" %FINAL_EXPORT_PATH% \installed\ %TRIPLET% " ^
-DCMAKE_BUILD_TYPE=Release ^
-DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF ^
-DGTSAM_BUILD_TESTS=OFF ^
-DGTSAM_BUILD_UNSTABLE=OFF ^
-DGTSAM_USE_SYSTEM_EIGEN=ON ^
-DGTSAM_BUILD_WITH_PRECOMPILED_HEADERS=OFF ^
-DGTSAM_UNSTABLE_BUILD_PYTHON=OFF ^
-DGTSAM_WITH_EIGEN_MKL=OFF ^
-DGTSAM_WITH_EIGEN_MKL_OPENMP=OFF ^
-DCMAKE_CXX_FLAGS=" -DBOOST_TIMER_ENABLE_DEPRECATED -DBOOST_BIND_GLOBAL_PLACEHOLDERS " || exit /b !errorlevel!
cmake --build build --config Release --target install || exit /b !errorlevel!
cd ..
: : opengv
echo [+] Building opengv...
if not exist opengv (
echo [+] Downloading and applying patch...
git clone https://github.com/laurentkneip/opengv.git
cd opengv
: : Aug 6, 2020
git checkout 91f4b19c73450833a40e463ad3648aae80b3a7f3
2026-07-01 18:11:28 -07:00
git apply " %~dp0 patches\opengv_91f4b19c.patch "
2026-03-15 14:57:27 -07:00
cd ..
)
cd opengv
cmake -S . -B build -GNinja ^
-DVCPKG_MANIFEST_INSTALL=OFF ^
-DVCPKG_TARGET_TRIPLET=x64-windows-release ^
-DVCPKG_INSTALLED_DIR=" %FINAL_EXPORT_PATH% \installed " ^
-DCMAKE_TOOLCHAIN_FILE=" %FINAL_EXPORT_PATH% \scripts\buildsystems\vcpkg.cmake " ^
-DCMAKE_INSTALL_PREFIX=" %FINAL_EXPORT_PATH% \installed\ %TRIPLET% " ^
-DBUILD_TESTS=OFF ^
-DBUILD_SHARED_LIBS=ON || exit /b !errorlevel!
cmake --build build --config Release --target install || exit /b !errorlevel!
cd ..
2026-07-01 18:11:28 -07:00
: : libfreenect2
echo [+] Building libfreenect2...
if not exist libfreenect2 (
echo [+] Downloading and applying patch...
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
: : Aug 6, 2021
git checkout v0.2.1
: : Patch makes freenect2Config.cmake relocatable so the prebuilt bundle works
: : after being moved/unzipped, drops cudaDeviceProp::clockRate/computeMode
: : removed in CUDA 13 from the CUDA build, and renames a CL_ICDL_VERSION local
: : that collides with the OpenCL 3.0 macro.
git apply " %~dp0 patches\libfreenect2_v0.2.1.patch "
cd ..
)
cd libfreenect2
: : libfreenect2's FindLibUSB.cmake locates libusb via pkg-config. It declares an
: : ancient cmake_minimum_required (2.8.12), which makes FindPkgConfig default
: : PKG_CONFIG_USE_CMAKE_PREFIX_PATH=OFF, so it ignores the vcpkg CMAKE_PREFIX_PATH.
: : Force it ON so the bundle's lib/pkgconfig (libusb-1.0.pc, libturbojpeg.pc) is
: : searched, use the vcpkg-bundled pkgconf, and also set PKG_CONFIG_PATH as a belt.
set " PKG_CONFIG_PATH= %FINAL_EXPORT_PATH% \installed\ %TRIPLET% \lib\pkgconfig "
cmake -S . -B build -GNinja ^
-DVCPKG_MANIFEST_INSTALL=OFF ^
-DVCPKG_TARGET_TRIPLET=x64-windows-release ^
-DVCPKG_INSTALLED_DIR=" %FINAL_EXPORT_PATH% \installed " ^
-DCMAKE_TOOLCHAIN_FILE=" %FINAL_EXPORT_PATH% \scripts\buildsystems\vcpkg.cmake " ^
-DPKG_CONFIG_EXECUTABLE=" %FINAL_EXPORT_PATH% \installed\ %TRIPLET% \tools\pkgconf\pkgconf.exe " ^
-DPKG_CONFIG_USE_CMAKE_PREFIX_PATH=ON ^
-DCMAKE_BUILD_TYPE=Release ^
-DENABLE_CUDA=OFF ^
-DENABLE_OPENCL=OFF ^
-DBUILD_EXAMPLES=OFF ^
-DCMAKE_INSTALL_PREFIX=" %FINAL_EXPORT_PATH% \installed\ %TRIPLET% " ^
-DBUILD_SHARED_LIBS=ON || exit /b !errorlevel!
cmake --build build --config Release --target install || exit /b !errorlevel!
cd ..
: : depthai
echo [+] Building depthai...
if not exist depthai-core (
echo [+] Downloading...
git clone https://github.com/luxonis/depthai-core.git
cd depthai-core
: : depthai 2.32.0 (Hunter-based; v2 does NOT use vcpkg/CMake presets)
git checkout v2.32.0
git submodule update --init --recursive
cd ..
)
cd depthai-core
: : v2 and its old Hunter sub-deps declare cmake_minimum_required < 3.5, which
: : CMake 4.x rejects, and CMAKE_POLICY_VERSION_MINIMUM does not propagate into
: : Hunter's sub-builds. Use a pinned CMake 3.x just for depthai (Hunter reuses the
: : same cmake binary for its dependency sub-builds).
set " CMAKE3_VER=3.31.12 "
set " CMAKE3_NAME=cmake- %CMAKE3_VER% -windows-x86_64 "
set " CMAKE3_DIR= %SRC_DIR% \ %CMAKE3_NAME% "
set " CMAKE3= %CMAKE3_DIR% \bin\cmake.exe "
if not exist " %CMAKE3_DIR% " (
echo [+] Downloading CMake %CMAKE3_VER% ...
curl -L -o " %SRC_DIR% \ %CMAKE3_NAME% .zip " " https://github.com/Kitware/CMake/releases/download/v %CMAKE3_VER% / %CMAKE3_NAME% .zip " || exit /b !errorlevel!
" %SEVENZIP_EXE% " x " %SRC_DIR% \ %CMAKE3_NAME% .zip " -o" %SRC_DIR% " -y || exit /b !errorlevel!
)
: : v2 is fully Hunter-managed (no vcpkg toolchain). depthaiDependencies.cmake
: : unconditionally does find_package(OpenCV 4 QUIET CONFIG) (not gated by
: : DEPTHAI_OPENCV_SUPPORT); if it finds the bundle's OpenCV, OpenCVModules does
: : find_dependency(TIFF) which collides with Hunter's config-less FindTIFF. We don't
: : need depthai's OpenCV at all (CameraDepthAI converts ImgFrame->cv::Mat itself), so
: : hard-disable the lookup. DEPTHAI_ENABLE_CURL=OFF avoids Hunter's old zlib/curl.
" %CMAKE3% " -S . -B build -GNinja ^
-DCMAKE_INSTALL_PREFIX=" %FINAL_EXPORT_PATH% \installed\ %TRIPLET% " ^
-DCMAKE_BUILD_TYPE=Release ^
-DBUILD_SHARED_LIBS=ON ^
-DDEPTHAI_OPENCV_SUPPORT=OFF ^
-DCMAKE_DISABLE_FIND_PACKAGE_OpenCV=ON ^
-DDEPTHAI_ENABLE_CURL=OFF ^
-DDEPTHAI_BUILD_EXAMPLES=OFF ^
-DDEPTHAI_BUILD_TESTS=OFF || exit /b !errorlevel!
" %CMAKE3% " --build build --config Release --target install || exit /b !errorlevel!
cd ..
: : CCCoreLib
echo [+] Building CCCoreLib...
if not exist CCCoreLib (
echo [+] Downloading...
git clone https://github.com/CloudCompare/CCCoreLib.git
cd CCCoreLib
: : June 20, 2026
git checkout 4095bea6552096cb528c3b8b5cb9505df2aa6002
git submodule update --init --recursive
: : nanoflann is an internal dep (only used in src/Kriging.cpp, no public header),
: : but CCCoreLib links it PUBLIC, leaking nanoflann::nanoflann into the exported
: : interface and breaking find_package(CCCoreLib). Link it PRIVATE instead.
git apply " %~dp0 patches\cccorelib_4095bea.patch "
cd ..
)
cd CCCoreLib
cmake -S . -B build -GNinja ^
-DVCPKG_MANIFEST_INSTALL=OFF ^
-DVCPKG_TARGET_TRIPLET=x64-windows-release ^
-DVCPKG_INSTALLED_DIR=" %FINAL_EXPORT_PATH% \installed " ^
-DCMAKE_TOOLCHAIN_FILE=" %FINAL_EXPORT_PATH% \scripts\buildsystems\vcpkg.cmake " ^
-DCMAKE_INSTALL_PREFIX=" %FINAL_EXPORT_PATH% \installed\ %TRIPLET% " ^
-DCMAKE_BUILD_TYPE=Release ^
-DCCCORELIB_SHARED=ON ^
-DCCCORELIB_USE_CGAL=OFF ^
-DCCCORELIB_USE_TBB=ON ^
-DCCCORELIB_USE_QT_CONCURRENT=OFF || exit /b !errorlevel!
cmake --build build --config Release --target install || exit /b !errorlevel!
cd ..
2026-03-15 14:57:27 -07:00
: : 5. ZIP the folder
echo [+] Creating final package with 7-Zip...
: : Rip off pdb files
cd /d " %FINAL_EXPORT_PATH% "
del /s /q /f *.pdb > nul 2 >& 1
cd ..
set " FINAL_ZIP= %TARGET_NAME% .7z "
: : compress contents without the root folder
" %SEVENZIP_EXE% " u -t7z -mx9 " %FINAL_ZIP% " " %FINAL_EXPORT_PATH% \* " -up0q0
if !errorlevel! EQU 0 (
echo [!] Success! Package created at %FINAL_ZIP%
) else (
echo [X] 7-Zip failed with error code !errorlevel!
)
: : Example building rtabmap afterwards
goto : EndComment
2026-07-01 18:11:28 -07:00
: : The vcpkg export folder should not be in the rtabmap source directory
: : (otherwise we get some cmake errors about that)
2026-03-15 14:57:27 -07:00
set VCPKG_UNZIPPED_EXPORT_PATH = %USERPROFILE% \Downloads\vcpkg-export-########-x64-vs2022
2026-07-01 18:11:28 -07:00
2026-03-15 14:57:27 -07:00
set PATH = %VCPKG_UNZIPPED_EXPORT_PATH% \installed\x64-windows-release\bin;%PATH%
2026-07-01 18:11:28 -07:00
set PATH = %VCPKG_UNZIPPED_EXPORT_PATH% \installed\x64-windows-release\sdk\windows-desktop\amd64\release\bin;%PATH%
set PATH = %VCPKG_UNZIPPED_EXPORT_PATH% \installed\x64-windows-release\tools\python3\Lib\site-packages\numpy.libs;%PATH%
set K4A_ROOT_DIR = %VCPKG_UNZIPPED_EXPORT_PATH% \installed\x64-windows-release
set KINECTSDK20_DIR = %VCPKG_UNZIPPED_EXPORT_PATH% \installed\x64-windows-release
2026-03-15 14:57:27 -07:00
cmake -B build -GNinja ^
-DCMAKE_BUILD_TYPE=Release ^
2026-07-01 18:11:28 -07:00
-DBUILD_AS_BUNDLE=ON ^
-DWITH_PYTHON=ON ^
2026-03-15 14:57:27 -07:00
-DWITH_ZED=OFF ^
2026-07-01 18:11:28 -07:00
-DWITH_CERES=ON ^
-DWITH_ORBBEC_SDK=ON ^
-DWITH_FREENECT2=ON ^
-DWITH_K4W2=ON ^
-DWITH_K4A=ON ^
-DWITH_DEPTHAI=ON ^
-DWITH_REALSENSE2=ON ^
-DWITH_CCCORELIB=ON ^
-DWITH_PDAL=OFF ^
2026-03-15 14:57:27 -07:00
-DVCPKG_MANIFEST_INSTALL=OFF ^
-DVCPKG_TARGET_TRIPLET=x64-windows-release ^
-DVCPKG_INSTALLED_DIR=" %VCPKG_UNZIPPED_EXPORT_PATH% /installed " ^
-DCMAKE_TOOLCHAIN_FILE=%VCPKG_UNZIPPED_EXPORT_PATH% /scripts/buildsystems/vcpkg.cmake ^
-DGTSAM_DIR=%VCPKG_UNZIPPED_EXPORT_PATH% \installed\x64-windows-release\CMake
cmake --build build --config Release --target package
: : To install CPU pytorch inside rtabmap package afterwards.
: : Note that python.exe is the one in the bin directory of the package, not the system one.
python.exe -m pip install torch torchvision opencv-python-headless " numpy<2 "
: EndComment