From 02fe3fe031b9b156eb96008115122d87f0332427 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Mon, 19 Apr 2021 11:08:32 -0400 Subject: [PATCH] CMake changes --- .gitmodules | 3 + SuperBuild/CMakeLists.txt | 8 +++ SuperBuild/cmake/External-Ceres.cmake | 2 + SuperBuild/cmake/External-ORB_SLAM2.cmake | 78 ----------------------- SuperBuild/cmake/External-OpenSfM.cmake | 20 +++++- SuperBuild/cmake/External-Pangolin.cmake | 29 --------- requirements.txt | 7 +- snap/snapcraft.yaml | 2 - vcpkg | 1 + vcpkg-requirements.txt | 3 + 10 files changed, 40 insertions(+), 113 deletions(-) delete mode 100644 SuperBuild/cmake/External-ORB_SLAM2.cmake delete mode 100644 SuperBuild/cmake/External-Pangolin.cmake create mode 160000 vcpkg create mode 100644 vcpkg-requirements.txt diff --git a/.gitmodules b/.gitmodules index e69de29b..fe07c999 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "vcpkg"] + path = vcpkg + url = https://github.com/microsoft/vcpkg diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 0a5b9ab9..0e2a52ba 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -7,6 +7,13 @@ if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") endif() +if (WIN32) + if (NOT DEFINED CMAKE_TOOLCHAIN_FILE) + message(FATAL_ERROR "CMAKE_TOOLCHAIN_FILE not set. You need to set it to the path of vcpkg.cmake") + endif() + set(WIN32_CMAKE_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") +endif() + # Setup SuperBuild root location set(SB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}) @@ -35,6 +42,7 @@ message(STATUS "SuperBuild files will be downloaded to: ${SB_DOWNLOAD_DIR}") set(SB_SOURCE_DIR "${SB_ROOT_DIR}/src" CACHE PATH "Location where source tar-balls are (will be).") mark_as_advanced(SB_SOURCE_DIR) +set(SB_BUILD_DIR "${SB_ROOT_DIR}/build") message(STATUS "SuperBuild source files will be extracted to: ${SB_SOURCE_DIR}") diff --git a/SuperBuild/cmake/External-Ceres.cmake b/SuperBuild/cmake/External-Ceres.cmake index ee541f2b..45b5d485 100644 --- a/SuperBuild/cmake/External-Ceres.cmake +++ b/SuperBuild/cmake/External-Ceres.cmake @@ -18,7 +18,9 @@ ExternalProject_Add(${_proj_name} -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF + -DMINIGLOG=ON -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} + ${WIN32_CMAKE_ARGS} #--Build step----------------- BINARY_DIR ${_SB_BINARY_DIR} #--Install step--------------- diff --git a/SuperBuild/cmake/External-ORB_SLAM2.cmake b/SuperBuild/cmake/External-ORB_SLAM2.cmake deleted file mode 100644 index 9e704784..00000000 --- a/SuperBuild/cmake/External-ORB_SLAM2.cmake +++ /dev/null @@ -1,78 +0,0 @@ -set(_proj_name orb_slam2) -set(_SB_BINARY_DIR "${SB_BINARY_DIR}/${_proj_name}") - -ExternalProject_Add(${_proj_name} - DEPENDS opencv pangolin - PREFIX ${_SB_BINARY_DIR} - TMP_DIR ${_SB_BINARY_DIR}/tmp - STAMP_DIR ${_SB_BINARY_DIR}/stamp - #--Download step-------------- - DOWNLOAD_DIR ${SB_DOWNLOAD_DIR} - URL https://github.com/paulinus/ORB_SLAM2/archive/7c11f186a53a75560cd17352d327b0bc127a82de.zip - #--Update/Patch step---------- - UPDATE_COMMAND "" - #--Configure step------------- - SOURCE_DIR ${SB_SOURCE_DIR}/${_proj_name} - CMAKE_ARGS - -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} - #--Build step----------------- - BINARY_DIR ${_SB_BINARY_DIR} - #--Install step--------------- - INSTALL_COMMAND "" - #--Output logging------------- - LOG_DOWNLOAD OFF - LOG_CONFIGURE OFF - LOG_BUILD OFF -) - -# DBoW2 -set(DBoW2_BINARY_DIR "${SB_BINARY_DIR}/DBoW2") -file(MAKE_DIRECTORY "${DBoW2_BINARY_DIR}") - -ExternalProject_Add_Step(${_proj_name} build_DBoW2 - COMMAND make -j2 - DEPENDEES configure_DBoW2 - DEPENDERS configure - WORKING_DIRECTORY ${DBoW2_BINARY_DIR} - ALWAYS 1 -) - -ExternalProject_Add_Step(${_proj_name} configure_DBoW2 - COMMAND ${CMAKE_COMMAND} /Thirdparty/DBoW2 - -DOpenCV_DIR=${SB_INSTALL_DIR}/share/OpenCV - -DCMAKE_BUILD_TYPE=Release - DEPENDEES download - DEPENDERS build_DBoW2 - WORKING_DIRECTORY ${DBoW2_BINARY_DIR} - ALWAYS 1 -) - -# g2o -set(g2o_BINARY_DIR "${SB_BINARY_DIR}/g2o") -file(MAKE_DIRECTORY "${g2o_BINARY_DIR}") - -ExternalProject_Add_Step(${_proj_name} build_g2o - COMMAND make -j2 - DEPENDEES configure_g2o - DEPENDERS configure - WORKING_DIRECTORY ${g2o_BINARY_DIR} - ALWAYS 1 -) - -ExternalProject_Add_Step(${_proj_name} configure_g2o - COMMAND ${CMAKE_COMMAND} /Thirdparty/g2o - -DCMAKE_BUILD_TYPE=Release - DEPENDEES download - DEPENDERS build_g2o - WORKING_DIRECTORY ${g2o_BINARY_DIR} - ALWAYS 1 -) - -# Uncompress Vocabulary -ExternalProject_Add_Step(${_proj_name} uncompress_vocabulary - COMMAND tar -xf ORBvoc.txt.tar.gz - DEPENDEES download - DEPENDERS configure - WORKING_DIRECTORY /Vocabulary - ALWAYS 1 -) diff --git a/SuperBuild/cmake/External-OpenSfM.cmake b/SuperBuild/cmake/External-OpenSfM.cmake index 344b6a21..69ad1f9b 100644 --- a/SuperBuild/cmake/External-OpenSfM.cmake +++ b/SuperBuild/cmake/External-OpenSfM.cmake @@ -1,5 +1,18 @@ set(_proj_name opensfm) set(_SB_BINARY_DIR "${SB_BINARY_DIR}/${_proj_name}") +include(ProcessorCount) +ProcessorCount(nproc) + +if(WIN32) + set(OpenCV_DIR "${SB_INSTALL_DIR}/x64/vc16/lib") + set(Python_PATH "${SB_INSTALL_DIR}/../../venv/Scripts/python") + set(WIN32_CMAKE_EXTRA_ARGS -DCMAKE_CXX_FLAGS="-DM_PI=3.14159265358979323846") + set(BUILD_CMD cmake --build "${SB_BUILD_DIR}/opensfm" --config "${CMAKE_BUILD_TYPE}") +else() + set(OpenCV_DIR "${SB_INSTALL_DIR}/lib/cmake/opencv4") + set(Python_PATH "/usr/bin/python3") + set(BUILD_CMD make "-j${nproc}") +endif() ExternalProject_Add(${_proj_name} DEPENDS ceres opencv gflags @@ -16,10 +29,13 @@ ExternalProject_Add(${_proj_name} SOURCE_DIR ${SB_SOURCE_DIR}/${_proj_name} CONFIGURE_COMMAND cmake /${_proj_name}/src -DCERES_ROOT_DIR=${SB_INSTALL_DIR} - -DOpenCV_DIR=${SB_INSTALL_DIR}/lib/cmake/opencv4 + -DOpenCV_DIR=${OpenCV_DIR} -DADDITIONAL_INCLUDE_DIRS=${SB_INSTALL_DIR}/include -DOPENSFM_BUILD_TESTS=off - -DPYTHON_EXECUTABLE=/usr/bin/python3 + -DPYTHON_EXECUTABLE=${Python_PATH} + ${WIN32_CMAKE_ARGS} + ${WIN32_CMAKE_EXTRA_ARGS} + BUILD_COMMAND ${BUILD_CMD} #--Build step----------------- BINARY_DIR ${_SB_BINARY_DIR} #--Install step--------------- diff --git a/SuperBuild/cmake/External-Pangolin.cmake b/SuperBuild/cmake/External-Pangolin.cmake deleted file mode 100644 index f328c89b..00000000 --- a/SuperBuild/cmake/External-Pangolin.cmake +++ /dev/null @@ -1,29 +0,0 @@ -set(_proj_name pangolin) -set(_SB_BINARY_DIR "${SB_BINARY_DIR}/${_proj_name}") - -ExternalProject_Add(${_proj_name} - PREFIX ${_SB_BINARY_DIR} - TMP_DIR ${_SB_BINARY_DIR}/tmp - STAMP_DIR ${_SB_BINARY_DIR}/stamp - #--Download step-------------- - DOWNLOAD_DIR ${SB_DOWNLOAD_DIR} - URL https://github.com/paulinus/Pangolin/archive/b7c66570b336e012bf3124e2a7411d417a1d35f7.zip - URL_MD5 9b7938d1045d26b27a637b663e647aef - #--Update/Patch step---------- - UPDATE_COMMAND "" - #--Configure step------------- - SOURCE_DIR ${SB_SOURCE_DIR}/${_proj_name} - CMAKE_ARGS - -DCPP11_NO_BOOST=1 - -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} - - #--Build step----------------- - BINARY_DIR ${_SB_BINARY_DIR} - #--Install step--------------- - INSTALL_DIR ${SB_INSTALL_DIR} - #--Output logging------------- - LOG_DOWNLOAD OFF - LOG_CONFIGURE OFF - LOG_BUILD OFF -) - diff --git a/requirements.txt b/requirements.txt index 8b368989..9b0fae8f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,8 @@ beautifulsoup4==4.9.3 cloudpickle==1.6.0 edt==2.0.2 ExifRead==2.3.2 -Fiona==1.8.17 +Fiona==1.8.17 ; sys_platform == 'linux' or sys_platform == 'darwin' +https://download.lfd.uci.edu/pythonlibs/w4tscw6k/Fiona-1.8.19-cp38-cp38-win_amd64.whl ; sys_platform == 'win32' joblib==0.17.0 laspy==1.7.0 lxml==4.6.1 @@ -18,7 +19,9 @@ pyproj==3.0.0.post1 Pysolar==0.9 pytz==2020.4 PyYAML==5.1 -rasterio==1.1.8 +rasterio==1.1.8 ; sys_platform == 'linux' or sys_platform == 'darwin' +https://download.lfd.uci.edu/pythonlibs/w4tscw6k/rasterio-1.2.3-cp38-cp38-win_amd64.whl ; sys_platform == 'win32' +https://download.lfd.uci.edu/pythonlibs/w4tscw6k/GDAL-3.2.2-cp38-cp38-win_amd64.whl ; sys_platform == 'win32' repoze.lru==0.7 scikit-learn==0.23.2 scikit-image==0.17.2 diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 478f803f..9a327a95 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -134,7 +134,6 @@ parts: - libboost-serialization-dev - libboost-system-dev - libboost-thread-dev - - libgoogle-glog-dev - libsuitesparse-dev stage-packages: - libamd2 @@ -151,7 +150,6 @@ parts: - libcholmod3 - libcolamd2 - libcxsparse3 - - libgoogle-glog0v5 - libsuitesparseconfig5 odm: diff --git a/vcpkg b/vcpkg new file mode 160000 index 00000000..a267ab11 --- /dev/null +++ b/vcpkg @@ -0,0 +1 @@ +Subproject commit a267ab118c09f56f3dae96c9a4b3410820ad2f0b diff --git a/vcpkg-requirements.txt b/vcpkg-requirements.txt new file mode 100644 index 00000000..0aa6f1df --- /dev/null +++ b/vcpkg-requirements.txt @@ -0,0 +1,3 @@ +eigen3:windows-x64 +suitesparse:windows-x64 +lapack:windows-x64 \ No newline at end of file