Skip to content

Commit

Permalink
Merge pull request #1258 from alicevision/dev/deps/add_pcl
Browse files Browse the repository at this point in the history
[dep] add PCL as dependency
  • Loading branch information
fabiencastan authored Oct 7, 2022
2 parents ec91fab + 02dffb7 commit 3581da7
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 1 deletion.
1 change: 1 addition & 0 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ jobs:
ceres[suitesparse,cxsparse]
tbb
assimp
pcl
clp
# without "cuda" for now
vcpkgTriplet: x64-windows-release
Expand Down
112 changes: 111 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ option(AV_BUILD_FFMPEG "Enable building an embedded FFMpeg" ON)
option(AV_BUILD_COINUTILS "Enable building an embedded CoinUtils" ON)
option(AV_BUILD_OSI "Enable building an embedded Osi" ON)
option(AV_BUILD_CLP "Enable building an embedded Clp" ON)
option(AV_BUILD_PCL "Enable building an embedded PointCloud library" ON)
option(AV_BUILD_ALICEVISION "Enable building of AliceVision" ON)
option(AV_EIGEN_MEMORY_ALIGNMENT "Enable Eigen memory alignment" OFF)

Expand Down Expand Up @@ -77,6 +78,7 @@ message(STATUS "AV_BUILD_FFMPEG: ${AV_BUILD_FFMPEG}")
message(STATUS "AV_BUILD_COINUTILS: ${AV_BUILD_COINUTILS}")
message(STATUS "AV_BUILD_OSI: ${AV_BUILD_OSI}")
message(STATUS "AV_BUILD_CLP: ${AV_BUILD_CLP}")
message(STATUS "AV_BUILD_PCL: ${AV_BUILD_PCL}")
message(STATUS "AV_BUILD_DEPENDENCIES_PARALLEL: ${AV_BUILD_DEPENDENCIES_PARALLEL}")
message(STATUS "")
message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
Expand Down Expand Up @@ -864,6 +866,81 @@ ExternalProject_Add(${CLP_TARGET}
set(CLP_CMAKE_FLAGS -DClp_DIR:PATH=${CMAKE_INSTALL_PREFIX}/share/clp)
endif()

# Add PCL
if(AV_BUILD_PCL)
# build other dependencies for pcl
# add lz4 for flann
set(LZ4_TARGET lz4)
ExternalProject_Add(${LZ4_TARGET}
GIT_REPOSITORY https://github.com/alicevision/lz4
GIT_TAG 47a530e8a8c945ad3bb809e2ce4591a56c5081e2
PREFIX ${BUILD_DIR}
BUILD_IN_SOURCE 0
BUILD_ALWAYS 0
UPDATE_COMMAND ""
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${LZ4_TARGET}
BINARY_DIR ${BUILD_DIR}/${LZ4_TARGET}_build
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
CONFIGURE_COMMAND ${CMAKE_COMMAND} ${CMAKE_CORE_BUILD_FLAGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> <SOURCE_DIR>
BUILD_COMMAND $(MAKE) -j${AV_BUILD_DEPENDENCIES_PARALLEL}
)
set(LZ4_CMAKE_FLAGS -Dlz4_DIR:PATH=${CMAKE_INSTALL_PREFIX}/lib/cmake/lz4/)

# @TODO whenever flann will be removed as embedded dependency move this and lz4 out from if(AV_BUILD_PCL) as they will be needed by the library
# add flann
set(FLANN_TARGET flann)
ExternalProject_Add(${FLANN_TARGET}
GIT_REPOSITORY https://github.com/alicevision/flann
GIT_TAG 9e79ca6881b779fb842e83c17aef1f4c816ce058
PREFIX ${BUILD_DIR}
BUILD_IN_SOURCE 0
BUILD_ALWAYS 0
UPDATE_COMMAND ""
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${FLANN_TARGET}
BINARY_DIR ${BUILD_DIR}/${FLANN_TARGET}_build
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
CONFIGURE_COMMAND ${CMAKE_COMMAND} ${CMAKE_CORE_BUILD_FLAGS}
-DBUILD_C_BINDINGS:BOOL=OFF
-DBUILD_EXAMPLES=OFF
-DBUILD_TESTS:BOOL=OFF
-DBUILD_DOC:BOOL=OFF
-DBUILD_PYTHON_BINDINGS:BOOL=OFF
-DBUILD_MATLAB_BINDINGS:BOOL=OFF
${LZ4_CMAKE_FLAGS}
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> <SOURCE_DIR>
BUILD_COMMAND $(MAKE) -j${AV_BUILD_DEPENDENCIES_PARALLEL}
DEPENDS ${LZ4_TARGET}
)
set(FLANN_CMAKE_FLAGS -Dflann_DIR:PATH=${CMAKE_INSTALL_PREFIX}/lib/cmake/flann/)

# add point cloud library
set(PCL_TARGET pcl)
ExternalProject_Add(${PCL_TARGET}
URL https://github.com/PointCloudLibrary/pcl/archive/refs/tags/pcl-1.12.1.tar.gz
URL_MD5 eb1be79330872f9674c9850bb35023bf
DOWNLOAD_DIR ${BUILD_DIR}/download/${PCL_TARGET}
PREFIX ${BUILD_DIR}
BUILD_IN_SOURCE 0
BUILD_ALWAYS 0
UPDATE_COMMAND ""
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${PCL_TARGET}
BINARY_DIR ${BUILD_DIR}/${PCL_TARGET}_build
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
CONFIGURE_COMMAND ${CMAKE_COMMAND} ${CMAKE_CORE_BUILD_FLAGS}
${EIGEN_CMAKE_FLAGS}
${BOOST_CMAKE_FLAGS}
${PNG_CMAKE_FLAGS}
${CUDA_CMAKE_FLAGS}
-DWITH_CUDA:BOOL=${AV_USE_CUDA}
${FLANN_CMAKE_FLAGS}
${LZ4_CMAKE_FLAGS}
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> <SOURCE_DIR>
BUILD_COMMAND $(MAKE) -j${AV_BUILD_DEPENDENCIES_PARALLEL}
DEPENDS ${FLANN_TARGET} ${LZ4_TARGET} ${EIGEN_TARGET} ${BOOST_TARGET} ${PNG_TARGET} ${CUDA_TARGET}
)
set(PCL_CMAKE_FLAGS -DPCL_DIR:PATH=${CMAKE_INSTALL_PREFIX}/share/pcl-1.12/)

endif()

set(AV_DEPS
${ZLIB_TARGET}
Expand Down Expand Up @@ -902,7 +979,40 @@ ExternalProject_Add(aliceVision
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src
BINARY_DIR ${BUILD_DIR}/aliceVision_build
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DBUILD_SHARED_LIBS:BOOL=ON -DTARGET_ARCHITECTURE=core -DALICEVISION_ROOT=${ALICEVISION_ROOT} -DALICEVISION_USE_ALEMBIC=ON -DMINIGLOG=ON -DALICEVISION_USE_CCTAG=${AV_BUILD_CCTAG} -DALICEVISION_USE_APRILTAG=${AV_BUILD_APRILTAG} -DALICEVISION_USE_OPENCV=${AV_BUILD_OPENCV} -DALICEVISION_USE_OPENGV=${AV_BUILD_OPENGV} -DALICEVISION_USE_POPSIFT=${AV_BUILD_POPSIFT} -DALICEVISION_USE_CUDA=${AV_USE_CUDA} -DALICEVISION_BUILD_DOC=OFF -DALICEVISION_BUILD_EXAMPLES=OFF ${ZLIB_CMAKE_FLAGS} ${ASSIMP_CMAKE_FLAGS} ${EIGEN_CMAKE_FLAGS} ${OPENIMAGEIO_CMAKE_FLAGS} ${OPENEXR_CMAKE_FLAGS} ${BOOST_CMAKE_FLAGS} ${ALEMBIC_CMAKE_FLAGS} ${GEOGRAM_CMAKE_FLAGS} ${LAPACK_CMAKE_FLAGS} ${CERES_CMAKE_FLAGS} ${CUDA_CMAKE_FLAGS} ${POPSIFT_CMAKE_FLAGS} ${OPENGV_CMAKE_FLAGS} ${OPENCV_CMAKE_FLAGS} ${CCTAG_CMAKE_FLAGS} ${APRILTAG_CMAKE_FLAGS} ${COINUTILS_CMAKE_FLAGS} ${OSI_CMAKE_FLAGS} ${CLP_CMAKE_FLAGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> <SOURCE_DIR>
CONFIGURE_COMMAND ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DBUILD_SHARED_LIBS:BOOL=ON -DTARGET_ARCHITECTURE=core
-DALICEVISION_ROOT=${ALICEVISION_ROOT}
-DALICEVISION_USE_ALEMBIC=ON
-DMINIGLOG=ON
-DALICEVISION_USE_CCTAG=${AV_BUILD_CCTAG}
-DALICEVISION_USE_APRILTAG=${AV_BUILD_APRILTAG}
-DALICEVISION_USE_OPENCV=${AV_BUILD_OPENCV}
-DALICEVISION_USE_OPENGV=${AV_BUILD_OPENGV}
-DALICEVISION_USE_POPSIFT=${AV_BUILD_POPSIFT}
-DALICEVISION_USE_CUDA=${AV_USE_CUDA}
-DALICEVISION_BUILD_DOC=OFF
-DALICEVISION_BUILD_EXAMPLES=OFF
${ZLIB_CMAKE_FLAGS}
${ASSIMP_CMAKE_FLAGS}
${EIGEN_CMAKE_FLAGS}
${OPENIMAGEIO_CMAKE_FLAGS}
${OPENEXR_CMAKE_FLAGS}
${BOOST_CMAKE_FLAGS}
${ALEMBIC_CMAKE_FLAGS}
${GEOGRAM_CMAKE_FLAGS}
${LAPACK_CMAKE_FLAGS}
${CERES_CMAKE_FLAGS}
${CUDA_CMAKE_FLAGS}
${POPSIFT_CMAKE_FLAGS}
${OPENGV_CMAKE_FLAGS}
${OPENCV_CMAKE_FLAGS}
${CCTAG_CMAKE_FLAGS}
${APRILTAG_CMAKE_FLAGS}
${COINUTILS_CMAKE_FLAGS} ${OSI_CMAKE_FLAGS} ${CLP_CMAKE_FLAGS}
${LZ4_CMAKE_FLAGS}
${FLANN_CMAKE_FLAGS}
${PCL_CMAKE_FLAGS}
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> <SOURCE_DIR>
DEPENDS ${AV_DEPS}
)
endif()
Expand Down
2 changes: 2 additions & 0 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ Other optional libraries can enable specific features (check "CMake Options" for
* OpenCV >= 3.4.11 (feature extraction, calibration module, video IO), >= 4.5 for colorchecker (mcc)
* OpenGV (rig calibration and localization)
* OpenMP (enable multi-threading)
* PCL (Point Cloud Library) >= 1.12.1 for the registration module
* PopSift (feature extraction on GPU)
* UncertaintyTE (Uncertainty computation)

Expand Down Expand Up @@ -111,6 +112,7 @@ vcpkg install ^
cuda ^
tbb ^
assimp ^
pcl ^
clp ^
--triplet x64-windows
```
Expand Down

0 comments on commit 3581da7

Please sign in to comment.