+++ /dev/null
-cache:
- - C:\Tools\vcpkg\installed\
- - C:\Tools\ninja\ninja.exe
-
-configuration: Release
-
-environment:
- VCPKG_DIR: C:\Tools\vcpkg
- NINJA_DIR: C:\Tools\ninja
- GENERATOR: Ninja
- matrix:
- - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
- PLATFORM: x86
- VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'
- ARCHITECTURE: x86
- - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
- PLATFORM: x64
- VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'
- ARCHITECTURE: x86_amd64
- #- APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
- # PLATFORM: x86
- # VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat'
- # ARCHITECTURE: x86
- #- APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
- # PLATFORM: x64
- # VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat'
- # ARCHITECTURE: x86_amd64
-
-init:
- - cd %VCPKG_DIR%
- - git pull
- - echo.set(VCPKG_BUILD_TYPE release)>> %VCPKG_DIR%\triplets\%PLATFORM%-windows.cmake
- - .\bootstrap-vcpkg.bat
- - vcpkg version
- - cd %APPVEYOR_BUILD_FOLDER%
-
-install:
- - vcpkg install
- boost-system
- boost-filesystem
- boost-thread
- boost-date-time
- boost-iostreams
- boost-chrono
- boost-asio
- boost-dynamic-bitset
- boost-foreach
- boost-graph
- boost-interprocess
- boost-multi-array
- boost-ptr-container
- boost-random
- boost-signals2
- eigen3
- flann
- qhull
- gtest
- --triplet %PLATFORM%-windows
- - vcpkg list
- - set PATH=%VCPKG_DIR%\installed\%PLATFORM%-windows\bin;%PATH%
- - if not exist %NINJA_DIR%\ mkdir %NINJA_DIR%
- - cd %NINJA_DIR%
- - if not exist ninja.exe appveyor DownloadFile https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-win.zip
- - if not exist ninja.exe 7z x ninja-win.zip
- - set PATH=%NINJA_DIR%;%PATH%
-
-build:
- parallel: true
-
-build_script:
- # These tests will fails on Windows.
- # Therefore, these tests are disabled until fixed.
- # AppVeyor Log : https://ci.appveyor.com/project/PointCloudLibrary/pcl/build/1.0.267
- # * common_eigen
- # * feature_rift_estimation
- # * feature_cppf_estimation
- # * feature_pfh_estimation
- - call "%VCVARSALL%" %ARCHITECTURE%
- - cd %APPVEYOR_BUILD_FOLDER%
- - mkdir build
- - cd build
- - cmake -G"%GENERATOR%"
- -DCMAKE_C_COMPILER=cl.exe
- -DCMAKE_CXX_COMPILER=cl.exe
- -DCMAKE_TOOLCHAIN_FILE=%VCPKG_DIR%\scripts\buildsystems\vcpkg.cmake
- -DVCPKG_APPLOCAL_DEPS=OFF
- -DPCL_BUILD_WITH_BOOST_DYNAMIC_LINKING_WIN32=ON
- -DPCL_BUILD_WITH_FLANN_DYNAMIC_LINKING_WIN32=ON
- -DPCL_BUILD_WITH_QHULL_DYNAMIC_LINKING_WIN32=ON
- -DPCL_NO_PRECOMPILE=OFF
- -DBUILD_apps=OFF
- -DBUILD_examples=OFF
- -DBUILD_global_tests=ON
- -DBUILD_simulation=OFF
- -DBUILD_tools=OFF
- ..
- - cmake --build . --config %CONFIGURATION%
- - ctest -C %CONFIGURATION% -V
-
--- /dev/null
+resources:
+ containers:
+ - container: env1604
+ image: pointcloudlibrary/env:16.04
+ - container: doc
+ image: pointcloudlibrary/doc
+
+jobs:
+ - job: ubuntu1604
+ displayName: Ubuntu 16.04 Build
+ timeoutInMinutes: 0
+ pool:
+ vmImage: 'Ubuntu 16.04'
+ container: env1604
+ variables:
+ BUILD_DIR: '$(Agent.BuildDirectory)/build'
+ CMAKE_CXX_FLAGS: '-Wall -Wextra -Wabi -O2'
+ steps:
+ - script: |
+ mkdir $BUILD_DIR && cd $BUILD_DIR
+ cmake $(Build.SourcesDirectory) \
+ -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" \
+ -DPCL_ONLY_CORE_POINT_TYPES=ON \
+ -DPCL_QT_VERSION=5 \
+ -DBUILD_simulation=ON \
+ -DBUILD_global_tests=ON \
+ -DBUILD_examples=ON \
+ -DBUILD_tools=ON \
+ -DBUILD_apps=ON \
+ -DBUILD_apps_3d_rec_framework=ON \
+ -DBUILD_apps_cloud_composer=ON \
+ -DBUILD_apps_in_hand_scanner=ON \
+ -DBUILD_apps_modeler=ON \
+ -DBUILD_apps_point_cloud_editor=ON
+ displayName: 'CMake Configuration'
+ - script: |
+ cd $BUILD_DIR
+ # Compiling some of the test targets with -j2 option leads to pipeline failures
+ # (presumably out of memory error). Thus we make them separately in a single
+ # thread mode. Their corresponding modules are built before with the -j2 mode
+ # to make the process faster.
+ cmake --build . -- -j2 pcl_filters pcl_registration
+ cmake --build . -- test_filters test_registration test_registration_api
+ cmake --build . -- -j2
+ displayName: 'Build Library'
+ - script: cd $BUILD_DIR && cmake --build . -- tests
+ displayName: 'Run Unit Tests'
+ - job: osx
+ displayName: macOS High Sierra
+ timeoutInMinutes: 0
+ pool:
+ vmImage: 'macOS-10.13'
+ variables:
+ BUILD_DIR: '$(Agent.BuildDirectory)/build'
+ GOOGLE_TEST_DIR: '$(Agent.WorkFolder)/googletest'
+ CMAKE_CXX_FLAGS: '-Wall -Wextra -Wabi -O2'
+ steps:
+ - script: |
+ brew install pkg-config qt5 libpcap brewsci/science/openni
+ brew install vtk --with-qt --without-python@2
+ brew install --only-dependencies pcl
+ git clone https://github.com/abseil/googletest.git $GOOGLE_TEST_DIR # the official endpoint changed to abseil/googletest
+ cd $GOOGLE_TEST_DIR && git checkout release-1.8.1
+ displayName: 'Install Dependencies'
+ - script: |
+ mkdir $BUILD_DIR && cd $BUILD_DIR
+ cmake $(Build.SourcesDirectory) \
+ -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" \
+ -DGTEST_SRC_DIR="$GOOGLE_TEST_DIR/googletest" \
+ -DGTEST_INCLUDE_DIR="$GOOGLE_TEST_DIR/googletest/include" \
+ -DQt5Core_DIR=/usr/local/opt/qt5/lib/cmake/Qt5Core \
+ -DQt5Gui_DIR=/usr/local/opt/qt5/lib/cmake/Qt5Gui \
+ -DQt5Widgets_DIR=/usr/local/opt/qt5/lib/cmake/Qt5Widgets \
+ -DQt5Concurrent_DIR=/usr/local/opt/qt5/lib/cmake/Qt5Concurrent \
+ -DQt5OpenGL_DIR=/usr/local/opt/qt5/lib/cmake/Qt5OpenGL \
+ -DPCL_ONLY_CORE_POINT_TYPES=ON \
+ -DPCL_QT_VERSION=5 \
+ -DBUILD_simulation=ON \
+ -DBUILD_global_tests=ON \
+ -DBUILD_examples=ON \
+ -DBUILD_tools=ON \
+ -DBUILD_apps=ON \
+ -DBUILD_apps_3d_rec_framework=ON \
+ -DBUILD_apps_cloud_composer=ON \
+ -DBUILD_apps_in_hand_scanner=ON \
+ -DBUILD_apps_modeler=ON \
+ -DBUILD_apps_point_cloud_editor=ON
+ displayName: 'CMake Configuration'
+ - script: |
+ cd $BUILD_DIR
+ # Compiling some of the test targets with -j2 option leads to pipeline failures
+ # (presumably out of memory error). Thus we make them separately in a single
+ # thread mode. Their corresponding modules are built before with the -j2 mode
+ # to make the process faster.
+ cmake --build . -- -j2 pcl_filters pcl_registration
+ cmake --build . -- test_filters test_registration test_registration_api
+ cmake --build . -- -j2
+ displayName: 'Build Library'
+ - script: cd $BUILD_DIR && cmake --build . -- tests
+ displayName: 'Run Unit Tests'
+ - job: documentation
+ displayName: Generate Documentation
+ pool:
+ vmImage: 'Ubuntu 16.04'
+ container: doc
+ variables:
+ BUILD_DIR: '$(Agent.BuildDirectory)/build'
+ DOC_DIR: '$(Agent.BuildDirectory)/documentation'
+ steps:
+ - task: InstallSSHKey@0
+ inputs:
+ hostName: github.com
+ sshPublicKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBh5Yrau/gguTfoNALxhVX77Pgz6y6UWoJRERMKR68ee documentation@pointclouds.org
+ sshKeySecureFile: id_ed25519
+ - task: UsePythonVersion@0
+ inputs:
+ versionSpec: '3.6'
+ addToPath: true
+ - script: |
+ mkdir $BUILD_DIR && cd $BUILD_DIR
+ cmake $(Build.SourcesDirectory) \
+ -DDOXYGEN_USE_SHORT_NAMES=OFF \
+ -DSPHINX_HTML_FILE_SUFFIX=php \
+ -DWITH_DOCS=ON \
+ -DWITH_TUTORIALS=ON
+ displayName: 'CMake Configuration'
+ - script: cd $BUILD_DIR && make doc tutorials advanced
+ displayName: 'Build Documentation'
+ - script: |
+ git config --global user.email "documentation@pointclouds.org"
+ git config --global user.name "PointCloudLibrary (via Azure Pipelines)"
+ echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
+ git clone git@github.com:PointCloudLibrary/documentation.git $DOC_DIR
+ cd $DOC_DIR
+ cp -r $BUILD_DIR/doc/tutorials/html/* tutorials
+ cp -r $BUILD_DIR/doc/advanced/html/* advanced
+ cp -r $BUILD_DIR/doc/doxygen/html/* .
+ git add --all
+ git commit --amend --reset-author -m 'Documentation for commit $(Build.SourceVersion)' -q
+ git push --force
+ displayName: 'Push Generated Documentation To GitHub'
+ condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
+ - job: vs2017
+ displayName: Windows VS2017 Build
+ timeoutInMinutes: 0
+ pool:
+ vmImage: 'vs2017-win2016'
+ strategy:
+ matrix:
+ x86:
+ PLATFORM: 'x86'
+ ARCHITECTURE: 'x86'
+ GENERATOR: 'Visual Studio 15 2017'
+ x64:
+ PLATFORM: 'x64'
+ ARCHITECTURE: 'x86_amd64'
+ GENERATOR: 'Visual Studio 15 2017 Win64'
+ variables:
+ BUILD_DIR: '$(Agent.WorkFolder)\build'
+ VCPKG_DIR: '$(Agent.WorkFolder)\vcpkg'
+ VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat'
+ CONFIGURATION: 'Release'
+ steps:
+ - script: |
+ git clone https://github.com/microsoft/vcpkg --depth 1 %VCPKG_DIR%
+ echo.set(VCPKG_BUILD_TYPE release)>> %VCPKG_DIR%\triplets\%PLATFORM%-windows.cmake
+ %VCPKG_DIR%\bootstrap-vcpkg.bat
+ %VCPKG_DIR%\vcpkg.exe version
+ displayName: Bootstrap vcpkg
+ - script: |
+ %VCPKG_DIR%\vcpkg.exe install boost-system boost-filesystem boost-thread boost-date-time boost-iostreams boost-chrono boost-asio boost-dynamic-bitset boost-foreach boost-graph boost-interprocess boost-multi-array boost-ptr-container boost-random boost-signals2 eigen3 flann gtest qhull --triplet %PLATFORM%-windows
+ %VCPKG_DIR%\vcpkg.exe list
+ displayName: Install Dependencies
+ - script: |
+ call "%VCVARSALL%" %ARCHITECTURE%
+ set PATH=%VCPKG_DIR%\installed\%PLATFORM%-windows\bin;%PATH%
+ mkdir %BUILD_DIR% && cd %BUILD_DIR%
+ cmake $(Build.SourcesDirectory) -G"%GENERATOR%" -DCMAKE_TOOLCHAIN_FILE=%VCPKG_DIR%\scripts\buildsystems\vcpkg.cmake -DVCPKG_APPLOCAL_DEPS=ON -DPCL_BUILD_WITH_BOOST_DYNAMIC_LINKING_WIN32=ON -DPCL_BUILD_WITH_FLANN_DYNAMIC_LINKING_WIN32=ON -DPCL_BUILD_WITH_QHULL_DYNAMIC_LINKING_WIN32=ON -DBUILD_global_tests=ON -DBUILD_tools=OFF -DBUILD_surface_on_nurbs=ON
+ displayName: 'CMake Configuration'
+ - script: cd %BUILD_DIR% && cmake --build . --config %CONFIGURATION%
+ displayName: 'Build Library'
+ - script: cd %BUILD_DIR% && ctest -C %CONFIGURATION% -V
+ displayName: 'Run Unit Tests'
"simulation",
"stereo",
"surface",
+ "visualization",
"apps",
"docs",
"tutorials",
+++ /dev/null
-#!/bin/sh
-
-PCL_DIR=`pwd`
-BUILD_DIR=$PCL_DIR/build
-DOC_DIR=$BUILD_DIR/doc/doxygen/html
-
-TUTORIALS_DIR=$BUILD_DIR/doc/tutorials/html
-ADVANCED_DIR=$BUILD_DIR/doc/advanced/html
-
-CMAKE_C_FLAGS="-Wall -Wextra -Wabi -O2"
-CMAKE_CXX_FLAGS="-Wall -Wextra -Wabi -O2"
-
-if [ "$TRAVIS_OS_NAME" == "linux" ]; then
- if [ "$CC" == "clang" ]; then
- CMAKE_C_FLAGS="$CMAKE_C_FLAGS -Qunused-arguments"
- CMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS -Qunused-arguments"
- fi
-fi
-
-function before_install ()
-{
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then
- if [ "$CC" == "clang" ]; then
- sudo ln -s ../../bin/ccache /usr/lib/ccache/clang
- sudo ln -s ../../bin/ccache /usr/lib/ccache/clang++
- fi
- fi
-}
-
-function build_all ()
-{
- # A complete build
- # Configure
- mkdir $BUILD_DIR && cd $BUILD_DIR
- cmake -DCMAKE_C_FLAGS="$CMAKE_C_FLAGS" -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" \
- -DPCL_ONLY_CORE_POINT_TYPES=ON \
- -DPCL_QT_VERSION=5 \
- -DBUILD_simulation=ON \
- -DBUILD_global_tests=OFF \
- -DBUILD_examples=ON \
- -DBUILD_tools=ON \
- -DBUILD_apps=ON \
- -DBUILD_apps_3d_rec_framework=ON \
- -DBUILD_apps_cloud_composer=ON \
- -DBUILD_apps_in_hand_scanner=ON \
- -DBUILD_apps_modeler=ON \
- -DBUILD_apps_point_cloud_editor=ON \
- $PCL_DIR
- # Build
- make -j2
-}
-
-function test_all ()
-{
- # A complete build
- # Configure
- mkdir $BUILD_DIR && cd $BUILD_DIR
- cmake -DCMAKE_C_FLAGS="$CMAKE_C_FLAGS" -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS" \
- -DPCL_ONLY_CORE_POINT_TYPES=ON \
- -DPCL_QT_VERSION=4 \
- -DBUILD_simulation=ON \
- -DBUILD_global_tests=ON \
- -DBUILD_examples=OFF \
- -DBUILD_tools=OFF \
- -DBUILD_apps=OFF \
- $PCL_DIR
- # Build
- make -j2 tests
-}
-
-
-function doc ()
-{
- # Install sphinx
- pip3 install --user setuptools
- pip3 install --user Jinja2==2.8.1 sphinx sphinxcontrib-doxylink
-
- # Configure
- mkdir $BUILD_DIR && cd $BUILD_DIR
- cmake -DDOXYGEN_USE_SHORT_NAMES=OFF \
- -DSPHINX_HTML_FILE_SUFFIX=php \
- -DWITH_DOCS=ON \
- -DWITH_TUTORIALS=ON \
- $PCL_DIR
-
- git config --global user.email "documentation@pointclouds.org"
- git config --global user.name "PointCloudLibrary (via TravisCI)"
-
- cd $DOC_DIR
- git clone https://github.com/PointCloudLibrary/documentation.git .
-
- # Generate documentation and tutorials
- cd $BUILD_DIR
- make doc tutorials advanced
-
- # Do not push documentation in pull requests
- if [[ $TRAVIS_EVENT_TYPE == 'pull_request' ]] ; then exit; fi
-
- # update the remote url to git-ssh protocol for commit
- git remote set-url origin git@github.com:PointCloudLibrary/documentation.git
-
- if [ -z "$id_rsa_{1..23}" ]; then echo 'No $id_rsa_{1..23} found !' ; exit 1; fi
-
- echo -n $id_rsa_{1..23} >> ~/.ssh/travis_rsa_64
- base64 --decode --ignore-garbage ~/.ssh/travis_rsa_64 > ~/.ssh/id_rsa
-
- chmod 600 ~/.ssh/id_rsa
-
- echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
-
- # Upload to GitHub if generation succeeded
- if [[ $? == 0 ]]; then
- # Copy generated tutorials to the doc directory
- cp -r $TUTORIALS_DIR/* $DOC_DIR/tutorials
- cp -r $ADVANCED_DIR/* $DOC_DIR/advanced
- # Commit and push
- cd $DOC_DIR
- git add --all
- git commit --amend --reset-author -m "Documentation for commit $TRAVIS_COMMIT" -q
- git push --force
- else
- exit 2
- fi
-}
-
-case $1 in
- before-install ) before_install;;
- build ) build_all;;
- test ) test_all;;
- doc ) doc;;
-esac
-
+++ /dev/null
-sudo: required
-dist: xenial
-language: cpp
-cache:
- ccache: true
-git:
- depth: 1
-addons:
- apt:
- packages:
- - cmake
- - libboost-filesystem-dev
- - libboost-iostreams-dev
- - libboost-thread-dev
- - libboost-chrono-dev
- - libeigen3-dev
- - libgtest-dev
- - doxygen-latex
- - dvipng
- - libusb-1.0-0-dev
- - libqhull-dev
- - libvtk6-dev
- - libvtk6-qt-dev
- - libflann-dev
- - doxygen
- - qtbase5-dev
- - libqt5opengl5-dev
- - libglew-dev
- - libopenni-dev
- - python3-pip
- - libproj-dev #missing dependency from vtk?
-before_install:
- - bash .travis.sh before-install
-
-env:
- global:
- - secure: XQw5SBf/7b1SHFR+kKklBWhWVgNvm4vIi+wwyajFSbDLOPpsAqtnDKeA2DV9ciaQJ3CVAvBoyxYgzAvpbsb5k95jadbvu9aSlo/AQnAbz+8DhkJL25DwJAn8G4s4zD1MFi7P4fxJHZsv/l9UcdW4BzjEhh0VidWCO4hP6I9BAQc=
- - secure: dRKTSeQI2Jad+/K9XCkNZxuu8exPi2wGzf6D0ogd1Nb2ZIUsOtnHSME4DO+xv7F5ZYrythHTrfezQl5hhcK+cr7A12okxlvmF/gVFuGCBPkUbyWPOrxx/Ic5pqdVnmrMFG1hFmr1KmOxCVx0F48JfGNd4ZgtUBAmnIomRp8sXRI=
- - secure: ah6/Y0D8bBFfAU38RdWsLJ/0Gp5uN5KEHVOnyhEUx1wDaBcDl9+aIE9Xyah44ei/fqQg1MXBfgMnaF7oHpDs4dAKITYP4wV8WDX1DCl1dalIrWMTSFYRknc3Y6hT+HadMlkcV9CCLEhZ7gyyNkm+idbekt/WbQE6Jls/vBhdZxI=
- - secure: V8XIEPjagHSFInXjogs8ypsC/gL5dq4VENYZbC9q8KYrNT9y1DLnMgNh9pGad25OjOqftBFwsgx6QYo357+MwpynfF+KcYNybjuR/vVGXpLcm0Uytnp6bE7oQbQ1s806TlXHb0Xk/bO2cLRYCCMCkhUOm+Dreu1uhKpoI/z0VMs=
- - secure: vPRheiXkGnzBHRaVFsA3VtwK6DtWG48VIdbOxboaR6jb9jT9yNz5EQrapiLOFFkhGsZ1mCgeunR58BGUPiSl8gEvOheBBUgZW6x8kbHDpxSUc2H70bLRAKxP4t8e3ZDFg2RjGnvXkGhzUTu9oWnbfWxGAILJAOpNoT0MqDgP+Z0=
- - secure: bT9kXekVN89zJeS4IEobLOeuAmRJqsgTjZky/mGqmOY1H8oIgcHC+41twB+nxkaU2mQskOvG45UwnAAW/8X6WdTbwKYeFWI5mXpCiXoiGL/dsYiig3GzYYv32ZJQL9B8tkEW6Xc0GY6v4K91Xw+HoKLi/tjxh3NjQxpfktwwCBQ=
- - secure: kp5CTFyo/E5+v382ypD1mIP7RIVOq5A1NDur1NrYI9or+8+zGcK5A2/Ex6Bb6rac5l7cVcqx6Xel+clxH2eQP2D8GqkaxdZs/u9L7MdFqsfn/QYOIshYlowRoLX86W0KOhsTdLLv2mOS6DnWhIuhgDfrczD3hFQdP9PMTBpd65A=
- - secure: YXJJRdv5OD/Qo1vNqPnFfx//SotxecFQyXjzEKQ8Zxu+EfVKVs95DUiUX+hiDlPrVGKhI3kTvza+lkaIv9fkjWiwSja5LsUbW/+2cwkhoHmOzVtdcpascfP7fcXc0kWTuvg1FLGNBv26SEym1FfNzp0Sm+ANZsCc4fQVXjDhQSY=
- - secure: wyWnJoZydXcFW359Vid6YfG9l0WTFqIpuEhgFV8gtSbkrSU0JrrUrKuN5ld/cPb+sRa/I8FAftSDsH4CW67impwLmfNfGf4wZTOBvBKyDGjlI+TLEo4ew/yq+MYIkkEleCWOj5eUkAHPHUUhJzI8SvX+ZuxiJEXapoV0xymbrig=
- - secure: vCvNI8egL2DRCicbWTuLOyXiW8478tedYvRneDMtCDB2lYToG32sYY0fS9KIciNohgObC8dbVraScgobL5cL4Ir4qrTUfBvGJ71OOMVujNEvkTts4YyI5zhA1PeEJ9+xcbQkE0/f78g7HQnd2LjZLXSxxrFVyJnjGaq1siNNRik=
- - secure: iUjKlT1bJq3pZp3tS0yOmycSZwmGSbrfTe9fWs0P78o3WRYlzBx4IWa+RZb1l0l6LpCUo00wdgeKKhvzClHFza31fumZJKkFeDf/jxAM2TtSbcIxxXwqpi4yJJZs7SkYrU/lugv0NI6UHtl5wAkIp8sjtCCHVYJjlYNHaLhL75o=
- - secure: DWrK3JsbzV5iUK3Xj6MpVWwlZv85GxdLl8c73ONcynZJ1tzUU3bfdvOtMxJrAnmH9QANw5RGORgbOyiDnvydCCpmL9RjswFqfkQX0mRTV8UYDPlJ1bBZJkX8I97yw8W1UyK1Q76kfr5bZjhikpsS/81Ll6z6Kj9FOte6KFfbznk=
- - secure: B32G/fehtPQdu1bF+dbCJ/Eo22MiszxZj7UOwNggRFifoxTmRdffZyuqapW0PLCTbBEvlS6UfajGOmVvZx5QH8Q/gtutJqXDTMgWpOai66JUwnpn6AX6NnhFGc+s2cpp3V2+5I26OrFkaXTcS7flz32XJdKZmPgvjY1qoppmyzo=
- - secure: u0cyLpY3LVF1gA8Sj4Q7X4Xv4bBT7m8IBDnm/AS412H0dM47dcFu8uxVFgWRu3WrM8T87Uc7+ftHkxKJezXgDPEVUixAnwLg2nEVEf6v3HC/HW+X9m98q1mELKXTLxc/f57rAIhhYPkjQh+leg6JmrhG1t0X7kh7d3CY0wwdSL0=
- - secure: KlIjQVEWlr+H/PAKIAcKS6WO1EFBdXXvXLisEnferB1RWgGwuLRgtIZzI+BJdt/7BMSyWvRExqt6xNyfqpxKXl1kdJawc3rpeYufklHQgmB2qGBSrpMtNr0S3gPFePBdnETbdPHwA63QCrpRKcrHqJxmeIzAmstH736iRXuubFs=
- - secure: ldwk79cqSgaEUZLt5rbNLRcNaVf/bx2zjBEDbvzAF9JCqVx/L5zCRTr5raHsxzBOzz25Qs3nFW81e1WLwxMAWshvI7EM/YG8GXqECvJGWpHBwcZI1SVP3zMhpH/jJE8vbMFaM2NOmhMT03z91vt0NlvR4DJMY0KV351awGSL2Do=
- - secure: SyLCwwc+jjkdmNUkRdGRDR2lNrPCu1ZvPstvVWQke5uw3BlnVKXWK7V3yq9g11ZsCl/7aldBexjf7pqeXbJ5Wl5goiI3E+/Ooujd/EWkMn9K3YlG57p8Zdw/A/fUMJgAH3qrM//ihdO0KDJD8eCGLlm4qV0SnlWFPQ+Dy8BsAc8=
- - secure: DaqjsZS60Y070Gw2lUNltzDltiYKB8IlYqsp0SyOjZAKlDGgp97+9YGEaIGcKF1qw3VGswg+7rrjWQ59iiwstTqgvx1mTTik0Qc0RCc8GtvIm+PS9TOhWxQginmhZmET9QKnGB7uj6K63qN8V8MZakZWIJxgUXx8jGiCTD22/eQ=
- - secure: x4x3vHY6Wf4kxjAT8dbWRl8n4PxTGv8RtzfGIZYXvJgbnY2qW+cJ8Edp64V1LegvQbBQmKqAP9YSLHwZsuL3LxfVqt/seRs+DJMDVUd9jVYmym0rPqemJLezapalEg6qfLuoeNkDPWvIVccQCDEBPfaUdD0ZXYo44LS5jIV0+T8=
- - secure: Pm2hyxdSLnY3ltrAva0FwNWWEQQcnf1JK2Fhjc3sWFpStMF7Obk93u4G5M6f2f28ZY6HFaMRYC1qEz/+yMIjsusIv8j0E6hgB/EnoM0dlxCc0aryH3X2IOYBVjRMjOFPmhYbNBoMmZWLluHWSyVSqr9k9nxowMfM3mi4fah11aQ=
- - secure: WTZ238yAEfXRyll1n8yau3FUW9HTvq6scKIl9AmNZrnzTr9dktupWrBVV6CtvaufT1mSmDigZ7VGC6T71HkyRIyb2qfVTrnjnxE96Wtcci6PfkuQc2L2puuZYo8dXaBRoOgJKGHFo/uKVKWnp7t55dp3lBJJmclHhon+K2hMSJw=
- - secure: LNsNoBvqY/jYDoBjWCE5cM+f1H8xOwSBc/tbWZo6E/jPRjUOLzXSicMMUMrlVto+bFzSUT8OVajV3XmoRx+Qntzv6bDSAGjdycvHd2YZQPn8BYrsFtR4So7SsJkF9FlxzbiOXaiSRpwGn7TP/DO7Neubrr4IS2ef4nWowGrnCE8=
- - secure: PZivWbaCWFA2BFFY8n3UMxdEWjz7rBh568u9LF5LH3HgWADnfiwWzNriACqX9fhe7tSmDru5Bk978s+xPPAY9v24cfiDEX5a5MQ/XVr2rP48n3vlUDWERDhIodJ73F9F9GGZXToGdNz0MBUAHgiv7Lb0GYUfmOYzUJjWghngLBw=
-
-
-jobs:
- include:
- - name: "Documentation"
- compiler: gcc
- env: TASK="doc"
- script: bash .travis.sh $TASK
- - name: "Library, Examples, Tools, Apps"
- compiler: clang
- env: TASK="build"
- script: bash .travis.sh $TASK
- - name: "Unit Tests"
- compiler: gcc
- env: TASK="test"
- script: bash .travis.sh $TASK
-
-notifications:
- email: false
# ChangeList
+## *= 1.9.1 (26.11.2018) =*
+
+### `Modules:`
+
+#### `Uncategorized:`
+
+* Add missing visualization section from the changelog generation. [[#2634]](https://github.com/PointCloudLibrary/pcl/pull/2634)
+
+#### `CMake:`
+
+* Fix development version check on DISSECT_VERSION. [[#2633]](https://github.com/PointCloudLibrary/pcl/pull/2633)
+* Remove CMake policy CMP0054 setting. [[#2627]](https://github.com/PointCloudLibrary/pcl/pull/2627)
+* PCLConfig.cmake - POP policy-stack before return() [[#2626]](https://github.com/PointCloudLibrary/pcl/pull/2626)
+* Remove CMake config installation folder only when empty [[#2622]](https://github.com/PointCloudLibrary/pcl/pull/2622)
+* Downgrade grabber dependency message level to STATUS. [[#2620]](https://github.com/PointCloudLibrary/pcl/pull/2620)
+* Migrate CMake policy 0048 [[#2608]](https://github.com/PointCloudLibrary/pcl/pull/2608)
+* Bump CMake minimum version to 3.1. [[#2605]](https://github.com/PointCloudLibrary/pcl/pull/2605)
+* Bump version to 1.9.0-dev [[#2602]](https://github.com/PointCloudLibrary/pcl/pull/2602)
+* Search in $EIGEN_ROOT first while looking for Eigen [[#2592]](https://github.com/PointCloudLibrary/pcl/pull/2592)
+
+#### `libpcl_visualization:`
+
+* address conflict between visualization and VTK head [[#2612]](https://github.com/PointCloudLibrary/pcl/pull/2612)
+
+#### `PCL Tutorials:`
+
+* Bump CMake minimum version to 3.1. [[#2605]](https://github.com/PointCloudLibrary/pcl/pull/2605)
+
+#### `PCL Tests:`
+
+* Refactor `SHOTEstimation` and `SHOTColorEstimation` tests [[#2636]](https://github.com/PointCloudLibrary/pcl/pull/2636)
+
+#### `CI:`
+
+* Set up azure pipelines for macOS High Sierra [[#2635]](https://github.com/PointCloudLibrary/pcl/pull/2635)
+* Enable Windows builds on Azure Pipelines [[#2632]](https://github.com/PointCloudLibrary/pcl/pull/2632)
+* Add Ubuntu16.04 based build on Azure Pipelines [[#2611]](https://github.com/PointCloudLibrary/pcl/pull/2611)
+* Remove documentation job from Travis [[#2604]](https://github.com/PointCloudLibrary/pcl/pull/2604)
+
+
## *= 1.9.0 (06.11.2018) =*
### `New Features:`
* Avoid phantom surfces in marching cubes hoppe [[#1874]](https://github.com/PointCloudLibrary/pcl/pull/1874)
* **[api]** Add ability to cache mls results [[#1952]](https://github.com/PointCloudLibrary/pcl/pull/1952)
+#### `libpcl_visualization:`
+
+* Made PCLVisualizerInteractorStyle::CloudActorMapPtr public. [[#2542]](https://github.com/PointCloudLibrary/pcl/pull/2542)
+* **[new-feature]** Add Viridis color LUT [[#2420]](https://github.com/PointCloudLibrary/pcl/pull/2420)
+* Update sha1 header inclusion for Boost 1.68+ [[#2373]](https://github.com/PointCloudLibrary/pcl/pull/2373)
+* Second change VTK version check in addTextureMesh [[#2322]](https://github.com/PointCloudLibrary/pcl/pull/2322)
+* Include missing `vtkTexture.h`. Follow up on #2291 [[#2316]](https://github.com/PointCloudLibrary/pcl/pull/2316)
+* Change VTK version check in `addTextureMesh` [[#2311]](https://github.com/PointCloudLibrary/pcl/pull/2311)
+* Remove depreciated VTK function MapDataArrayToMultiTextureAttribute [[#2291]](https://github.com/PointCloudLibrary/pcl/pull/2291)
+* Warn and skip adding normal cloud if it is empty [[#2265]](https://github.com/PointCloudLibrary/pcl/pull/2265)
+* **[api]** Fix access specifier in `PointCloudColorHandlerRGBAField` [[#2226]](https://github.com/PointCloudLibrary/pcl/pull/2226)
+* Check if color handler returns false [[#2209]](https://github.com/PointCloudLibrary/pcl/pull/2209)
+* Handle VTK legacy function (follow up to #2112) [[#2165]](https://github.com/PointCloudLibrary/pcl/pull/2165)
+* Travis merge test jobs. Expose VTK include directory for the visualization module. [[#2163]](https://github.com/PointCloudLibrary/pcl/pull/2163)
+* Small optimizations and fixes in PCLVisualizer [[#2112]](https://github.com/PointCloudLibrary/pcl/pull/2112)
+* Add another variant to `getPointCloudRenderingProperties()` [[#2142]](https://github.com/PointCloudLibrary/pcl/pull/2142)
+* Restrict accepted types in `PCLVisualizer::addLine` signature [[#2134]](https://github.com/PointCloudLibrary/pcl/pull/2134)
+* Typo fix in error message. [[#2132]](https://github.com/PointCloudLibrary/pcl/pull/2132)
+* Fix add/remove of 3D text without custom viewport [[#2110]](https://github.com/PointCloudLibrary/pcl/pull/2110)
+* Add `octree` dependency to `visualization` [[#2115]](https://github.com/PointCloudLibrary/pcl/pull/2115)
+* Fix pcd_viewer color handling when invalid fields are present in pcd [[#2105]](https://github.com/PointCloudLibrary/pcl/pull/2105)
+* Add pcl visualizer interactor null guards [[#2104]](https://github.com/PointCloudLibrary/pcl/pull/2104)
+* Add remove text3d [[#2088]](https://github.com/PointCloudLibrary/pcl/pull/2088)
+* Replace auto_ptr with scoped_ptr [[#2037]](https://github.com/PointCloudLibrary/pcl/pull/2037)
+* **[removal]** Removal of deprecated code in filters, io, surface and visualization modules [[#2077]](https://github.com/PointCloudLibrary/pcl/pull/2077)
+* Suppress sign compare warnings [[#2068]](https://github.com/PointCloudLibrary/pcl/pull/2068)
+* **[new-feature]** Add overload to `PCLVisualizer::addText3D()` that allows specifying text orientation [[#2038]](https://github.com/PointCloudLibrary/pcl/pull/2038)
+* Add new constructors to PCLVisualizer [[#2004]](https://github.com/PointCloudLibrary/pcl/pull/2004)
+* Fix bug in PointCloudGeometryHandlerCustom [[#2001]](https://github.com/PointCloudLibrary/pcl/pull/2001)
+* Add missing PCL_EXPORTS in pcl_visualizer.h [[#1995]](https://github.com/PointCloudLibrary/pcl/pull/1995)
+* **[abi]** Add accessor for current rendering framerate in PCLVisualizer [[#1974]](https://github.com/PointCloudLibrary/pcl/pull/1974)
+* Allow changing LUT properties of a shape actor [[#1668]](https://github.com/PointCloudLibrary/pcl/pull/1668)
+* Fixed spelling and grammar errors [[#1959]](https://github.com/PointCloudLibrary/pcl/pull/1959)
+* Fixed error in documentation. [[#1957]](https://github.com/PointCloudLibrary/pcl/pull/1957)
+
#### `PCL Apps:`
* Suppress miscelanious warnings [[#2556]](https://github.com/PointCloudLibrary/pcl/pull/2556)
### ---[ PCL global CMake
-cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
-
-if(POLICY CMP0017)
- # Do not include files in CMAKE_MODULE_PATH from files
- # in CMake module directory. Fix MXE build
- cmake_policy(SET CMP0017 NEW)
-endif()
-
-if(POLICY CMP0020 AND (WIN32 AND NOT MINGW))
- cmake_policy(SET CMP0020 NEW) # Automatically link Qt executables to qtmain target on Windows
-endif()
-
-if(POLICY CMP0042)
- # Uses Mac OS X @rpath in the target's install name
- cmake_policy(SET CMP0042 NEW)
-endif()
-
-if(POLICY CMP0048)
- cmake_policy(SET CMP0048 OLD) # do not use VERSION option in project() command
-endif()
-
-if(POLICY CMP0054)
- cmake_policy(SET CMP0054 OLD) # Silent warnings about quoted variables
-endif()
+cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
if(POLICY CMP0074)
# TODO:
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "build type default to RelWithDebInfo, set to Release to improve performance" FORCE)
endif()
-project(PCL)
+project(PCL VERSION 1.9.1)
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)
### ---[ Find universal dependencies
endif()
include("${PCL_SOURCE_DIR}/cmake/pcl_utils.cmake")
-set(PCL_VERSION "1.9.0" CACHE STRING "PCL version")
DISSECT_VERSION()
GET_OS_INFO()
SET_INSTALL_DIRS()
elseif(NOT PCL_FIND_QUIETLY)
message(WARNING ${_reason})
endif()
+ if(POLICY CMP0074)
+ cmake_policy(POP)
+ endif()
return()
endmacro(pcl_report_not_found)
unset(_PCL_TO_FIND_COMPONENTS)
if(NOT PCL_TO_FIND_COMPONENTS)
+ if(POLICY CMP0074)
+ cmake_policy(POP)
+ endif()
return()
endif()
# Check whether the requested PACKAGE_FIND_VERSION is compatible
-set(PACKAGE_VERSION @PCL_VERSION_PLAIN@)
+set(PACKAGE_VERSION @PCL_VERSION@)
# Check whether the requested PACKAGE_FIND_VERSION is compatible
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
[![Release][release-image]][releases]
[![License][license-image]][license]
-[release-image]: https://img.shields.io/badge/release-1.9.0-green.svg?style=flat
+[release-image]: https://img.shields.io/badge/release-1.9.1-green.svg?style=flat
[releases]: https://github.com/PointCloudLibrary/pcl/releases
[license-image]: https://img.shields.io/badge/license-BSD-green.svg?style=flat
[license]: https://github.com/PointCloudLibrary/pcl/blob/master/LICENSE.txt
-[](https://travis-ci.com/PointCloudLibrary/pcl)
-[](https://ci.appveyor.com/project/PointCloudLibrary/pcl/branch/master)
+[](https://dev.azure.com/PointCloudLibrary/pcl/_build/latest?definitionId=1)
Description
-----------
pkg_check_modules(PC_EIGEN eigen3)
set(EIGEN_DEFINITIONS ${PC_EIGEN_CFLAGS_OTHER})
-if(CMAKE_SYSTEM_NAME STREQUAL Linux)
- set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} /usr /usr/local)
-endif(CMAKE_SYSTEM_NAME STREQUAL Linux)
-if(APPLE)
- list(APPEND CMAKE_INCLUDE_PATH /opt/local)
- set(CMAKE_FIND_FRAMEWORK NEVER)
-endif()
-
find_path(EIGEN_INCLUDE_DIR Eigen/Core
- HINTS ${PC_EIGEN_INCLUDEDIR} ${PC_EIGEN_INCLUDE_DIRS} "${EIGEN_ROOT}" "$ENV{EIGEN_ROOT}"
+ HINTS "${EIGEN_ROOT}" "$ENV{EIGEN_ROOT}" ${PC_EIGEN_INCLUDEDIR} ${PC_EIGEN_INCLUDE_DIRS}
PATHS "$ENV{PROGRAMFILES}/Eigen" "$ENV{PROGRAMW6432}/Eigen"
"$ENV{PROGRAMFILES}/Eigen3" "$ENV{PROGRAMW6432}/Eigen3"
PATH_SUFFIXES eigen3 include/eigen3 include)
endif(EIGEN_INCLUDE_DIR)
set(EIGEN_INCLUDE_DIRS ${EIGEN_INCLUDE_DIR})
-set(CMAKE_FIND_FRAMEWORK)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Eigen DEFAULT_MSG EIGEN_INCLUDE_DIR)
set(CPACK_PACKAGE_NAME "@PROJECT_NAME@")
set(CPACK_PACKAGE_VENDOR "PointClouds.org")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Point Cloud Library (PCL)")
-set(CPACK_PACKAGE_INSTALL_DIRECTORY "@PROJECT_NAME@ @PCL_VERSION@")
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "@PROJECT_NAME@ @PCL_VERSION_PRETTY@")
set(CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/LICENSE.txt")
set(CPACK_RESOURCE_FILE_README "@PROJECT_SOURCE_DIR@/AUTHORS.txt")
@PCL_CPACK_COMPONENTS@
IF ((WIN32 OR UNIX) AND (CPACK_GENERATOR STREQUAL "NSIS"))
- set(CPACK_NSIS_DISPLAY_NAME "@PROJECT_NAME@-@PCL_VERSION@")
+ set(CPACK_NSIS_DISPLAY_NAME "@PROJECT_NAME@-@PCL_VERSION_PRETTY@")
set(CPACK_NSIS_MUI_ICON "@PROJECT_SOURCE_DIR@/cmake/images/pcl.ico")
set(CPACK_NSIS_MUI_UNIICON "@PROJECT_SOURCE_DIR@/cmake/images/pcl.ico")
set(CPACK_NSIS_HELP_LINK "http://www.pointclouds.org")
set(CPACK_NSIS_MODIFY_PATH ON)
set(CPACK_PACKAGE_EXECUTABLES @PCL_EXECUTABLES@)
set(CPACK_NSIS_MENU_LINKS
- "share/doc/pcl-@PCL_MAJOR_VERSION@.@PCL_MINOR_VERSION@/tutorials/html/index.html" "Tutorials"
- "share/doc/pcl-@PCL_MAJOR_VERSION@.@PCL_MINOR_VERSION@/tutorials/html/sources" "Tutorials sources"
- "share/doc/pcl-@PCL_MAJOR_VERSION@.@PCL_MINOR_VERSION@/html/pcl-@PCL_MAJOR_VERSION@.@PCL_MINOR_VERSION@.chm" "Documentation"
+ "share/doc/pcl-@PCL_VERSION_MAJOR@.@PCL_VERSION_MINOR@/tutorials/html/index.html" "Tutorials"
+ "share/doc/pcl-@PCL_VERSION_MAJOR@.@PCL_VERSION_MINOR@/tutorials/html/sources" "Tutorials sources"
+ "share/doc/pcl-@PCL_VERSION_MAJOR@.@PCL_VERSION_MINOR@/html/pcl-@PCL_VERSION_MAJOR@.@PCL_VERSION_MINOR@.chm" "Documentation"
"http://www.pointclouds.org" "PCL Website")
#set(CPACK_NSIS_MENU_LINKS "share/doc/@PROJECT_NAME@/user_guide.pdf" "User's guide")
#set(CPACK_NSIS_MENU_LINKS "share/doc/@PROJECT_NAME@/developer_guide.pdf" "Developer's guide")
# list(APPEND CPACK_GENERATOR "RPM")
#endif(EXISTS ${RPM_PROGRAM})
-set(CPACK_PACKAGE_VERSION "${PCL_VERSION}")
-set(CPACK_PACKAGE_VERSION_MAJOR "${PCL_MAJOR_VERSION}")
-set(CPACK_PACKAGE_VERSION_MINOR "${PCL_MINOR_VERSION}")
-set(CPACK_PACKAGE_VERSION_PATCH "${PCL_REVISION_VERSION}")
+set(CPACK_PACKAGE_VERSION "${PCL_VERSION_PRETTY}")
+set(CPACK_PACKAGE_VERSION_MAJOR "${PCL_VERSION_MAJOR}")
+set(CPACK_PACKAGE_VERSION_MINOR "${PCL_VERSION_MINOR}")
+set(CPACK_PACKAGE_VERSION_PATCH "${PCL_VERSION_PATCH}")
set(CPACK_PACKAGE_CONFIG_INSTALL_DIR ${PCLCONFIG_INSTALL_DIR})
# DEB
set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES32")
set(win_system_name win32)
endif(CMAKE_CL_64)
- set(CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME}-${PCL_VERSION}")
+ set(CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME}-${PCL_VERSION_PRETTY}")
if(BUILD_all_in_one_installer)
- set(CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME}-${PCL_VERSION}-AllInOne")
+ set(CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME}-${PCL_VERSION_PRETTY}-AllInOne")
endif(BUILD_all_in_one_installer)
if(MSVC_VERSION EQUAL 1600)
set(CPACK_NSIS_PACKAGE_NAME "${CPACK_NSIS_PACKAGE_NAME}-msvc2010-${win_system_name}")
# force CPACK_PACKAGE_INSTALL_REGISTRY_KEY because of a known limitation in cmake/cpack to be fixed in next releases
# http://public.kitware.com/Bug/view.php?id=9094
# This is to allow a 32bit and a 64bit of PCL to get installed on one system
- set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${PROJECT_NAME} ${PCL_VERSION} ${win_system_name}" )
+ set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${PROJECT_NAME} ${PCL_VERSION_PRETTY} ${win_system_name}" )
endif()
# dpkg
endif()
set_target_properties(${_name} PROPERTIES
- VERSION ${PCL_VERSION_PLAIN}
- SOVERSION ${PCL_MAJOR_VERSION}.${PCL_MINOR_VERSION}
+ VERSION ${PCL_VERSION}
+ SOVERSION ${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}
DEFINE_SYMBOL "PCLAPI_EXPORTS")
if(USE_PROJECT_FOLDERS)
set_target_properties(${_name} PROPERTIES FOLDER "Libraries")
target_link_libraries(${_name} ${Boost_LIBRARIES})
set_target_properties(${_name} PROPERTIES
- VERSION ${PCL_VERSION_PLAIN}
- SOVERSION ${PCL_MAJOR_VERSION}
+ VERSION ${PCL_VERSION}
+ SOVERSION ${PCL_VERSION_MAJOR}
DEFINE_SYMBOL "PCLAPI_EXPORTS")
if(USE_PROJECT_FOLDERS)
set_target_properties(${_name} PROPERTIES FOLDER "Libraries")
LIST_TO_STRING(_ext_deps_str "${_ext_deps}")
set(PKG_EXTERNAL_DEPS ${_ext_deps_str})
foreach(_dep ${_pcl_deps})
- set(PKG_EXTERNAL_DEPS "${PKG_EXTERNAL_DEPS} pcl_${_dep}-${PCL_MAJOR_VERSION}.${PCL_MINOR_VERSION}")
+ set(PKG_EXTERNAL_DEPS "${PKG_EXTERNAL_DEPS} pcl_${_dep}-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}")
endforeach(_dep)
set(PKG_INTERNAL_DEPS "")
foreach(_dep ${_int_deps})
set(PKG_INTERNAL_DEPS "${PKG_INTERNAL_DEPS} -l${_dep}")
endforeach(_dep)
- set(_pc_file ${CMAKE_CURRENT_BINARY_DIR}/${_name}-${PCL_MAJOR_VERSION}.${PCL_MINOR_VERSION}.pc)
+ set(_pc_file ${CMAKE_CURRENT_BINARY_DIR}/${_name}-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}.pc)
configure_file(${PROJECT_SOURCE_DIR}/cmake/pkgconfig.cmake.in ${_pc_file}
@ONLY)
install(FILES ${_pc_file} DESTINATION ${PKGCFG_INSTALL_DIR}
LIST_TO_STRING(_ext_deps_str "${_ext_deps}")
set(PKG_EXTERNAL_DEPS ${_ext_deps_str})
foreach(_dep ${_pcl_deps})
-set(PKG_EXTERNAL_DEPS "${PKG_EXTERNAL_DEPS} pcl_${_dep}-${PCL_MAJOR_VERSION}.${PCL_MINOR_VERSION}")
+set(PKG_EXTERNAL_DEPS "${PKG_EXTERNAL_DEPS} pcl_${_dep}-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}")
endforeach(_dep)
set(PKG_INTERNAL_DEPS "")
foreach(_dep ${_int_deps})
set(PKG_INTERNAL_DEPS "${PKG_INTERNAL_DEPS} -l${_dep}")
endforeach(_dep)
-set(_pc_file ${CMAKE_CURRENT_BINARY_DIR}/${_name}-${PCL_MAJOR_VERSION}.${PCL_MINOR_VERSION}.pc)
+set(_pc_file ${CMAKE_CURRENT_BINARY_DIR}/${_name}-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}.pc)
configure_file(${PROJECT_SOURCE_DIR}/cmake/pkgconfig-headeronly.cmake.in ${_pc_file} @ONLY)
install(FILES ${_pc_file} DESTINATION ${PKGCFG_INSTALL_DIR}
COMPONENT pcl_${_component})
find_package(${_name})
if (NOT ${_name_capitalized}_FOUND)
set(WITH_${_name_capitalized} FALSE CACHE BOOL "${_description}" FORCE)
- message(WARNING "${_description}: not building because ${_name} not found")
+ message(STATUS "${_description}: not building because ${_name} not found")
else()
set(HAVE_${_name_capitalized} TRUE)
include_directories(SYSTEM "${${_name_capitalized}_INCLUDE_DIRS}")
###############################################################################
# Pull the component parts out of the version number.
macro(DISSECT_VERSION)
- # Find version components
- string(REGEX REPLACE "^([0-9]+).*" "\\1"
- PCL_MAJOR_VERSION "${PCL_VERSION}")
- string(REGEX REPLACE "^[0-9]+\\.([0-9]+).*" "\\1"
- PCL_MINOR_VERSION "${PCL_VERSION}")
- string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1"
- PCL_REVISION_VERSION "${PCL_VERSION}")
- set(PCL_VERSION_PLAIN "${PCL_MAJOR_VERSION}.${PCL_MINOR_VERSION}.${PCL_REVISION_VERSION}")
- if(${PCL_VERSION} MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+-dev$")
+ # Detect if we're in a developlment version and generate pretty version string
+ if(PCL_VERSION_TWEAK EQUAL 99)
set(PCL_DEV_VERSION 1)
- set(PCL_VERSION_PLAIN "${PCL_VERSION_PLAIN}.99")
+ set(PCL_VERSION_PRETTY "${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}.${PCL_VERSION_PATCH}-dev")
else()
set(PCL_DEV_VERSION 0)
+ set(PCL_VERSION_PRETTY "${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}.${PCL_VERSION_PATCH}")
endif()
endmacro(DISSECT_VERSION)
endif (NOT DEFINED LIB_INSTALL_DIR)
if(NOT ANDROID)
set(INCLUDE_INSTALL_ROOT
- "include/${PROJECT_NAME_LOWER}-${PCL_MAJOR_VERSION}.${PCL_MINOR_VERSION}")
+ "include/${PROJECT_NAME_LOWER}-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}")
else(NOT ANDROID)
set(INCLUDE_INSTALL_ROOT "include") # Android, don't put into subdir
endif(NOT ANDROID)
set(INCLUDE_INSTALL_DIR "${INCLUDE_INSTALL_ROOT}/pcl")
- set(DOC_INSTALL_DIR "share/doc/${PROJECT_NAME_LOWER}-${PCL_MAJOR_VERSION}.${PCL_MINOR_VERSION}")
+ set(DOC_INSTALL_DIR "share/doc/${PROJECT_NAME_LOWER}-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}")
set(BIN_INSTALL_DIR "bin")
set(PKGCFG_INSTALL_DIR "${LIB_INSTALL_DIR}/pkgconfig")
if(WIN32 AND NOT MINGW)
set(PCLCONFIG_INSTALL_DIR "cmake")
else(WIN32 AND NOT MINGW)
- set(PCLCONFIG_INSTALL_DIR "share/${PROJECT_NAME_LOWER}-${PCL_MAJOR_VERSION}.${PCL_MINOR_VERSION}")
+ set(PCLCONFIG_INSTALL_DIR "share/${PROJECT_NAME_LOWER}-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}")
endif(WIN32 AND NOT MINGW)
endmacro(SET_INSTALL_DIRS)
exec_prefix=${prefix}
libdir=${prefix}/@LIB_INSTALL_DIR@
#includedir=${prefix}/@INCLUDE_INSTALL_DIR@
-includedir=${prefix}/include/@PROJECT_NAME_LOWER@-@PCL_MAJOR_VERSION@.@PCL_MINOR_VERSION@
+includedir=${prefix}/include/@PROJECT_NAME_LOWER@-@PCL_VERSION_MAJOR@.@PCL_VERSION_MINOR@
Name: @PKG_NAME@
Description: @PKG_DESC@
-Version: @PCL_VERSION_PLAIN@
+Version: @PCL_VERSION@
Requires: @PKG_EXTERNAL_DEPS@
Libs:
Cflags: -I${includedir} @PKG_CFLAGS@
exec_prefix=${prefix}
libdir=${prefix}/@LIB_INSTALL_DIR@
#includedir=${prefix}/@INCLUDE_INSTALL_DIR@
-includedir=${prefix}/include/@PROJECT_NAME_LOWER@-@PCL_MAJOR_VERSION@.@PCL_MINOR_VERSION@
+includedir=${prefix}/include/@PROJECT_NAME_LOWER@-@PCL_VERSION_MAJOR@.@PCL_VERSION_MINOR@
Name: @PKG_NAME@
Description: @PKG_DESC@
-Version: @PCL_VERSION_PLAIN@
+Version: @PCL_VERSION@
Requires: @PKG_EXTERNAL_DEPS@
Libs: -L${libdir} -l@PKG_NAME@ @PKG_LIBFLAGS@ @PKG_INTERNAL_DEPS@
Cflags: -I${includedir} @PKG_CFLAGS@
if(NOT EXISTS "@PROJECT_BINARY_DIR@/install_manifest.txt")
- message(FATAL_ERROR "Cannot find install manifest: \"@PROJECT_BINARY_DIR@/install_manifest.txt\"")
-endif(NOT EXISTS "@PROJECT_BINARY_DIR@/install_manifest.txt")
+ message(FATAL_ERROR "Cannot find install manifest: \"@PROJECT_BINARY_DIR@/install_manifest.txt\"")
+endif()
file(READ "@PROJECT_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
foreach(file ${files})
- message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
- if(EXISTS "$ENV{DESTDIR}${file}" OR IS_SYMLINK "$ENV{DESTDIR}${file}")
- exec_program("@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
- OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval)
- if(NOT "${rm_retval}" STREQUAL 0)
- message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
- endif(NOT "${rm_retval}" STREQUAL 0)
- else(EXISTS "$ENV{DESTDIR}${file}" OR IS_SYMLINK "$ENV{DESTDIR}${file}")
- message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
- endif(EXISTS "$ENV{DESTDIR}${file}" OR IS_SYMLINK "$ENV{DESTDIR}${file}")
-endforeach(file)
+ message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
+ if(EXISTS "$ENV{DESTDIR}${file}" OR IS_SYMLINK "$ENV{DESTDIR}${file}")
+ exec_program("@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+ OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval)
+ if(NOT "${rm_retval}" STREQUAL 0)
+ message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
+ endif()
+ else()
+ message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
+ endif()
+endforeach()
# remove pcl directory in include (removes all files in it!)
message(STATUS "Uninstalling \"@CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_ROOT@\"")
if(EXISTS "@CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_ROOT@")
- exec_program("@CMAKE_COMMAND@"
- ARGS "-E remove_directory \"@CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_ROOT@\""
- OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval)
- if(NOT "${rm_retval}" STREQUAL 0)
- message(FATAL_ERROR
- "Problem when removing \"@CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_ROOT@\"")
- endif(NOT "${rm_retval}" STREQUAL 0)
-else(EXISTS "@CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_ROOT@")
- message(STATUS
- "Directory \"@CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_ROOT@\" does not exist.")
-endif(EXISTS "@CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_ROOT@")
+ exec_program("@CMAKE_COMMAND@"
+ ARGS "-E remove_directory \"@CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_ROOT@\""
+ OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval)
+ if(NOT "${rm_retval}" STREQUAL 0)
+ message(FATAL_ERROR "Problem when removing \"@CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_ROOT@\"")
+ endif()
+else()
+ message(STATUS "Directory \"@CMAKE_INSTALL_PREFIX@/@INCLUDE_INSTALL_ROOT@\" does not exist.")
+endif()
# remove pcl directory in share (removes all files in it!)
# created by CMakeLists.txt for PCLConfig.cmake
-message(STATUS "Uninstalling \"@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@\"")
if(EXISTS "@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@")
+ file(GLOB_RECURSE CMAKE_CONFIG_FOLDER_FILES FOLLOW_SYMLINKS
+ LIST_DIRECTORIES false
+ "@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@/*")
+ list(LENGTH CMAKE_CONFIG_FOLDER_FILES CMAKE_CONFIG_FOLDER_FILES_NUMBER)
+ if(CMAKE_CONFIG_FOLDER_FILES_NUMBER EQUAL 0)
+ message(STATUS "Uninstalling \"@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@\"")
exec_program("@CMAKE_COMMAND@"
- ARGS "-E remove_directory \"@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@\""
- OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval)
+ ARGS "-E remove_directory \"@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@\""
+ OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval)
if(NOT "${rm_retval}" STREQUAL 0)
- message(FATAL_ERROR
- "Problem when removing \"@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@\"")
- endif(NOT "${rm_retval}" STREQUAL 0)
+ message(FATAL_ERROR "Problem when removing \"@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@\"")
+ endif()
+ endif()
else(EXISTS "@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@")
- message(STATUS
- "Directory \"@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@\" does not exist.")
-endif(EXISTS "@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@")
+ message(STATUS "Directory \"@CMAKE_INSTALL_PREFIX@/@PCLCONFIG_INSTALL_DIR@\" does not exist.")
+endif()
# remove pcl directory in share/doc (removes all files in it!)
if(@WITH_DOCS@)
message(STATUS "Uninstalling \"@CMAKE_INSTALL_PREFIX@/@DOC_INSTALL_DIR@\"")
if(EXISTS "@CMAKE_INSTALL_PREFIX@/@DOC_INSTALL_DIR@")
- exec_program("@CMAKE_COMMAND@"
- ARGS "-E remove_directory \"@CMAKE_INSTALL_PREFIX@/@DOC_INSTALL_DIR@\""
- OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval)
- if(NOT "${rm_retval}" STREQUAL 0)
- message(FATAL_ERROR
- "Problem when removing \"@CMAKE_INSTALL_PREFIX@/@DOC_INSTALL_DIR@\"")
- endif(NOT "${rm_retval}" STREQUAL 0)
+ exec_program("@CMAKE_COMMAND@"
+ ARGS "-E remove_directory \"@CMAKE_INSTALL_PREFIX@/@DOC_INSTALL_DIR@\""
+ OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval)
+ if(NOT "${rm_retval}" STREQUAL 0)
+ message(FATAL_ERROR "Problem when removing \"@CMAKE_INSTALL_PREFIX@/@DOC_INSTALL_DIR@\"")
+ endif()
else(EXISTS "@CMAKE_INSTALL_PREFIX@/@DOC_INSTALL_DIR@")
- message(STATUS
- "Directory \"@CMAKE_INSTALL_PREFIX@/@DOC_INSTALL_DIR@\" does not exist.")
- endif(EXISTS "@CMAKE_INSTALL_PREFIX@/@DOC_INSTALL_DIR@")
+ message(STATUS "Directory \"@CMAKE_INSTALL_PREFIX@/@DOC_INSTALL_DIR@\" does not exist.")
+ endif()
endif()
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "Point Cloud Library (PCL)"
-PROJECT_NUMBER = @PCL_VERSION@
+PROJECT_NUMBER = @PCL_VERSION_PRETTY@
PROJECT_BRIEF =
PROJECT_LOGO =
OUTPUT_DIRECTORY = "@CMAKE_CURRENT_BINARY_DIR@"
DOCSET_PUBLISHER_ID = pointclouds.org.Publisher
DOCSET_PUBLISHER_NAME = Point Cloud Library (PCL) Development Team
GENERATE_HTMLHELP = @DOCUMENTATION_HTML_HELP@
-CHM_FILE = "pcl-@PCL_MAJOR_VERSION@.@PCL_MINOR_VERSION@.chm"
+CHM_FILE = "pcl-@PCL_VERSION_MAJOR@.@PCL_VERSION_MINOR@.chm"
HHC_LOCATION = "@HTML_HELP_COMPILER@"
GENERATE_CHI = NO
CHM_INDEX_ENCODING =
.. note::
Though not a dependency per se, don't forget that you also need the CMake
- build system (http://www.cmake.org/), at least version **2.8.3**. A Git
+ build system (http://www.cmake.org/), at least version **3.1.0**. A Git
client for Windows is also required to download the PCL source code.
Building dependencies
The following libraries are **Required** to build PCL.
-- **CMake** version >= 2.8.3 (http://www.cmake.org)
+- **CMake** version >= 3.1.0 (http://www.cmake.org)
Cross-platform, open-source build system.
.. note::
Compiling PCL from source on POSIX compliant systems
====================================================
-Though not a dependency per se, don’t forget that you also need the `CMake build system <http://www.cmake.org/download/>`_, at least version 2.8.3.
+Though not a dependency per se, don’t forget that you also need the `CMake build system <http://www.cmake.org/download/>`_, at least version 3.1.0.
Additional help on how to use the CMake build system is available `here <http://www.pointclouds.org/documentation/tutorials/building_pcl.php#building-pcl>`_.
Please note that the following installation instructions are only valid for POSIX systems (e.g., Linux, MacOS) with an already installed make/gnu toolchain.
.. note::
Though not a dependency per se, don't forget that you also need the CMake
- build system (http://www.cmake.org/), at least version **2.8.7**. A Git client
+ build system (http://www.cmake.org/), at least version **3.1.0**. A Git client
for Windows is also required to download the PCL source code.
Downloading PCL source code
#define BUILD_@CMAKE_BUILD_TYPE@
/* PCL version information */
-#define PCL_MAJOR_VERSION ${PCL_MAJOR_VERSION}
-#define PCL_MINOR_VERSION ${PCL_MINOR_VERSION}
-#define PCL_REVISION_VERSION ${PCL_REVISION_VERSION}
+#define PCL_MAJOR_VERSION ${PCL_VERSION_MAJOR}
+#define PCL_MINOR_VERSION ${PCL_VERSION_MINOR}
+#define PCL_REVISION_VERSION ${PCL_VERSION_PATCH}
#define PCL_DEV_VERSION ${PCL_DEV_VERSION}
-#define PCL_VERSION_PRETTY "${PCL_VERSION}"
+#define PCL_VERSION_PRETTY "${PCL_VERSION_PRETTY}"
#define PCL_VERSION_CALC(MAJ, MIN, PATCH) (MAJ*100000+MIN*100+PATCH)
#define PCL_VERSION \
PCL_VERSION_CALC(PCL_MAJOR_VERSION, PCL_MINOR_VERSION, PCL_REVISION_VERSION)
checkDesc<OutputT> (output, output2);
}
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-TEST (PCL, SHOTShapeEstimation)
+// "Placeholder" for the type specialized test fixture
+template<typename T>
+struct SHOTShapeTest;
+
+// Template specialization test for SHOTEstimation
+template<>
+struct SHOTShapeTest<SHOTEstimation<PointXYZ, Normal, SHOT352> >
+ : public ::testing::Test
+{
+ SHOTEstimation<PointXYZ, Normal, SHOT352> shot;
+};
+
+// Template specialization test for SHOTEstimationOMP
+template<>
+struct SHOTShapeTest<SHOTEstimationOMP<PointXYZ, Normal, SHOT352> >
+ : public ::testing::Test
+{
+ // Default Constructor is defined to instantiate 4 threads
+ SHOTShapeTest<SHOTEstimationOMP<PointXYZ, Normal, SHOT352> > ()
+ : shot (4)
+ {}
+
+ SHOTEstimationOMP<PointXYZ, Normal, SHOT352> shot;
+};
+
+// Types which will be instantiated
+typedef ::testing::Types<SHOTEstimation<PointXYZ, Normal, SHOT352>,
+ SHOTEstimationOMP<PointXYZ, Normal, SHOT352> > SHOTEstimatorTypes;
+TYPED_TEST_CASE (SHOTShapeTest, SHOTEstimatorTypes);
+
+// This is a copy of the old SHOTShapeEstimation test which will now
+// be applied to both SHOTEstimation and SHOTEstimationOMP
+TYPED_TEST (SHOTShapeTest, Estimation)
{
// Estimate normals first
double mr = 0.002;
*/
// SHOT352
- SHOTEstimation<PointXYZ, Normal, SHOT352> shot352;
+ TypeParam& shot352 = this->shot;
shot352.setInputNormals (normals);
EXPECT_EQ (shot352.getInputNormals (), normals);
shot352.setRadiusSearch (20 * mr);
//testSHOTIndicesAndSearchSurface<SHOTEstimation<PointXYZ, Normal, SHOT>, PointXYZ, Normal, SHOT> (cloud.makeShared (), normals, test_indices);
//testSHOTLocalReferenceFrame<SHOTEstimation<PointXYZ, Normal, SHOT>, PointXYZ, Normal, SHOT> (cloud.makeShared (), normals, test_indices);
- testSHOTIndicesAndSearchSurface<SHOTEstimation<PointXYZ, Normal, SHOT352>, PointXYZ, Normal, SHOT352> (cloud.makeShared (), normals, test_indices);
- testSHOTLocalReferenceFrame<SHOTEstimation<PointXYZ, Normal, SHOT352>, PointXYZ, Normal, SHOT352> (cloud.makeShared (), normals, test_indices);
+ testSHOTIndicesAndSearchSurface<TypeParam, PointXYZ, Normal, SHOT352> (cloud.makeShared (), normals, test_indices);
+ testSHOTLocalReferenceFrame<TypeParam, PointXYZ, Normal, SHOT352> (cloud.makeShared (), normals, test_indices);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
testSHOTLocalReferenceFrame<SHOTEstimation<PointXYZ, Normal, SHOT>, PointXYZ, Normal, SHOT> (cloud.makeShared (), normals, test_indices, shapeStep_);
}
*/
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-TEST (PCL, SHOTShapeAndColorEstimation)
+
+// "Placeholder" for the type specialized test fixture
+template<typename T>
+struct SHOTShapeAndColorTest;
+
+// Template specialization test for SHOTColorEstimation
+template<>
+struct SHOTShapeAndColorTest<SHOTColorEstimation<PointXYZRGBA, Normal, SHOT1344> >
+ : public ::testing::Test
+{
+ SHOTColorEstimation<PointXYZRGBA, Normal, SHOT1344> shot;
+};
+
+// Template specialization test for SHOTColorEstimationOMP
+template<>
+struct SHOTShapeAndColorTest<SHOTColorEstimationOMP<PointXYZRGBA, Normal, SHOT1344> >
+ : public ::testing::Test
+{
+ // Default Constructor is defined to instantiate 4 threads
+ SHOTShapeAndColorTest<SHOTColorEstimationOMP<PointXYZRGBA, Normal, SHOT1344> > ()
+ : shot (true, true, 4)
+ {}
+
+ SHOTColorEstimationOMP<PointXYZRGBA, Normal, SHOT1344> shot;
+};
+
+// Types which will be instantiated
+typedef ::testing::Types<SHOTColorEstimation<PointXYZRGBA, Normal, SHOT1344>,
+ SHOTColorEstimationOMP<PointXYZRGBA, Normal, SHOT1344> > SHOTColorEstimatorTypes;
+TYPED_TEST_CASE (SHOTShapeAndColorTest, SHOTColorEstimatorTypes);
+
+// This is a copy of the old SHOTShapeAndColorEstimation test which will now
+// be applied to both SHOTColorEstimation and SHOTColorEstimationOMP
+TYPED_TEST (SHOTShapeAndColorTest, Estimation)
{
double mr = 0.002;
// Estimate normals first
*/
// SHOT1344
- SHOTColorEstimation<PointXYZRGBA, Normal, SHOT1344> shot1344 (true, true);
+ TypeParam& shot1344 = this->shot;
shot1344.setInputNormals (normals);
EXPECT_EQ (shot1344.getInputNormals (), normals);
//testSHOTIndicesAndSearchSurface<SHOTEstimation<PointXYZRGBA, Normal, SHOT>, PointXYZRGBA, Normal, SHOT> (cloudWithColors.makeShared (), normals, test_indices);
//testSHOTLocalReferenceFrame<SHOTEstimation<PointXYZRGBA, Normal, SHOT>, PointXYZRGBA, Normal, SHOT> (cloudWithColors.makeShared (), normals, test_indices);
- testSHOTIndicesAndSearchSurface<SHOTColorEstimation<PointXYZRGBA, Normal, SHOT1344>, PointXYZRGBA, Normal, SHOT1344> (cloudWithColors.makeShared (), normals, test_indices);
- testSHOTLocalReferenceFrame<SHOTColorEstimation<PointXYZRGBA, Normal, SHOT1344>, PointXYZRGBA, Normal, SHOT1344> (cloudWithColors.makeShared (), normals, test_indices);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-TEST (PCL, SHOTShapeEstimationOpenMP)
-{
- // Estimate normals first
- double mr = 0.002;
-#ifdef _OPENMP
- NormalEstimationOMP<PointXYZ, Normal> n (omp_get_max_threads ());
-#else
- NormalEstimationOMP<PointXYZ, Normal> n;
-#endif
- PointCloud<Normal>::Ptr normals (new PointCloud<Normal> ());
- // set parameters
- n.setInputCloud (cloud.makeShared ());
- boost::shared_ptr<vector<int> > indicesptr (new vector<int> (indices));
- n.setIndices (indicesptr);
- n.setSearchMethod (tree);
- n.setRadiusSearch (20 * mr);
- n.compute (*normals);
-
-/*
- SHOTEstimationOMP<PointXYZ, Normal, SHOT> shot;
- shot.setInputNormals (normals);
- EXPECT_EQ (shot.getInputNormals (), normals);
-
- shot.setRadiusSearch ( 20 * mr);
-
- // Object
- PointCloud<SHOT>::Ptr shots (new PointCloud<SHOT>);
-
- // set parameters
- shot.setInputCloud (cloud.makeShared ());
- shot.setIndices (indicesptr);
- shot.setSearchMethod (tree);
-
- // estimate
- shot.compute (*shots);
- EXPECT_EQ (shots->points.size (), indices.size ());
-
- EXPECT_NEAR (shots->points[103].descriptor[9 ], 0.0072018504, 1e-4);
- EXPECT_NEAR (shots->points[103].descriptor[10], 0.0023103887, 1e-4);
- EXPECT_NEAR (shots->points[103].descriptor[11], 0.0024724449, 1e-4);
- EXPECT_NEAR (shots->points[103].descriptor[19], 0.0031367359, 1e-4);
- EXPECT_NEAR (shots->points[103].descriptor[20], 0.17439659, 1e-4);
- EXPECT_NEAR (shots->points[103].descriptor[21], 0.070665278, 1e-4);
- EXPECT_NEAR (shots->points[103].descriptor[42], 0.013304681, 1e-4);
- EXPECT_NEAR (shots->points[103].descriptor[53], 0.0073520984, 1e-4);
- EXPECT_NEAR (shots->points[103].descriptor[54], 0.013584172, 1e-4);
- EXPECT_NEAR (shots->points[103].descriptor[55], 0.0050609680, 1e-4);
-*/
-
- // SHOT352
- SHOTEstimationOMP<PointXYZ, Normal, SHOT352> shot352;
- shot352.setInputNormals (normals);
- EXPECT_EQ (shot352.getInputNormals (), normals);
-
- shot352.setRadiusSearch ( 20 * mr);
-
- // Object
- PointCloud<SHOT352>::Ptr shots352 (new PointCloud<SHOT352>);
-
- // set parameters
- shot352.setInputCloud (cloud.makeShared ());
- shot352.setIndices (indicesptr);
- shot352.setSearchMethod (tree);
-
- // estimate
- shot352.compute (*shots352);
- EXPECT_EQ (shots352->points.size (), indices.size ());
-
- EXPECT_NEAR (shots352->points[103].descriptor[9 ], 0.0072018504, 1e-4);
- EXPECT_NEAR (shots352->points[103].descriptor[10], 0.0023103887, 1e-4);
- EXPECT_NEAR (shots352->points[103].descriptor[11], 0.0024724449, 1e-4);
- EXPECT_NEAR (shots352->points[103].descriptor[19], 0.0031367359, 1e-4);
- EXPECT_NEAR (shots352->points[103].descriptor[20], 0.17439659, 1e-4);
- EXPECT_NEAR (shots352->points[103].descriptor[21], 0.06542316, 1e-4);
- EXPECT_NEAR (shots352->points[103].descriptor[42], 0.013304681, 1e-4);
- EXPECT_NEAR (shots352->points[103].descriptor[53], 0.0073520984, 1e-4);
- EXPECT_NEAR (shots352->points[103].descriptor[54], 0.013584172, 1e-4);
- EXPECT_NEAR (shots352->points[103].descriptor[55], 0.0050609680, 1e-4);
-
- // Test results when setIndices and/or setSearchSurface are used
- boost::shared_ptr<vector<int> > test_indices (new vector<int> (0));
- for (size_t i = 0; i < cloud.size (); i+=3)
- test_indices->push_back (static_cast<int> (i));
-
- //testSHOTIndicesAndSearchSurface<SHOTEstimationOMP<PointXYZ, Normal, SHOT>, PointXYZ, Normal, SHOT> (cloud.makeShared (), normals, test_indices);
- //testSHOTLocalReferenceFrame<SHOTEstimationOMP<PointXYZ, Normal, SHOT>, PointXYZ, Normal, SHOT> (cloud.makeShared (), normals, test_indices);
-
- testSHOTIndicesAndSearchSurface<SHOTEstimationOMP<PointXYZ, Normal, SHOT352>, PointXYZ, Normal, SHOT352> (cloud.makeShared (), normals, test_indices);
- testSHOTLocalReferenceFrame<SHOTEstimationOMP<PointXYZ, Normal, SHOT352>, PointXYZ, Normal, SHOT352> (cloud.makeShared (), normals, test_indices);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-TEST (PCL,SHOTShapeAndColorEstimationOpenMP)
-{
- double mr = 0.002;
- // Estimate normals first
- NormalEstimation<PointXYZ, Normal> n;
- PointCloud<Normal>::Ptr normals (new PointCloud<Normal> ());
- // set parameters
- n.setInputCloud (cloud.makeShared ());
- boost::shared_ptr<vector<int> > indicesptr (new vector<int> (indices));
- n.setIndices (indicesptr);
- n.setSearchMethod (tree);
- n.setRadiusSearch (20 * mr);
- n.compute (*normals);
-
- search::KdTree<PointXYZRGBA>::Ptr rgbaTree;
-
- rgbaTree.reset (new search::KdTree<PointXYZRGBA> (false));
-
- // Create fake point cloud with colors
- PointCloud<PointXYZRGBA> cloudWithColors;
- for (int i = 0; i < static_cast<int> (cloud.points.size ()); ++i)
- {
- PointXYZRGBA p;
- p.x = cloud.points[i].x;
- p.y = cloud.points[i].y;
- p.z = cloud.points[i].z;
-
- p.rgba = ( (i%255) << 16 ) + ( ( (255 - i ) %255) << 8) + ( ( i*37 ) %255);
- cloudWithColors.push_back(p);
- }
-
-/*
- // Object
- SHOTEstimationOMP<PointXYZRGBA, Normal, SHOT> shot (true, true, -1);
- shot.setInputNormals (normals);
-
- EXPECT_EQ (shot.getInputNormals (), normals);
-
- shot.setRadiusSearch ( 20 * mr);
-
- rgbaTree->setInputCloud (cloudWithColors.makeShared ());
-
- PointCloud<SHOT>::Ptr shots (new PointCloud<SHOT> ());
-
- shot.setInputCloud (cloudWithColors.makeShared ());
- shot.setIndices (indicesptr);
- shot.setSearchMethod (rgbaTree);
-
- // estimate
- shot.compute (*shots);
- EXPECT_EQ (shots->points.size (), indices.size ());
-
- EXPECT_NEAR (shots->points[103].descriptor[10], 0.0020453099, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[11], 0.0021887729, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[21], 0.062557608, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[42], 0.011778189, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[53], 0.0065085669, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[54], 0.012025614, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[55], 0.0044803056, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[64], 0.064429596, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[65], 0.046486385, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[86], 0.011518310, 1e-5);
-
- EXPECT_NEAR (shots->points[103].descriptor[357], 0.0020453099, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[360], 0.0027993850, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[386], 0.045115642, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[387], 0.059068538, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[389], 0.0047547864, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[453], 0.0051176427, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[481], 0.0053625242, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[482], 0.012025614, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[511], 0.0057367259, 1e-5);
- EXPECT_NEAR (shots->points[103].descriptor[512], 0.048357654, 1e-5);
-*/
-
- // SHOT1344
- SHOTColorEstimationOMP<PointXYZRGBA, Normal, SHOT1344> shot1344 (true, true);
- shot1344.setInputNormals (normals);
-
- EXPECT_EQ (shot1344.getInputNormals (), normals);
-
- shot1344.setRadiusSearch ( 20 * mr);
-
- PointCloud<SHOT1344>::Ptr shots1344 (new PointCloud<SHOT1344> ());
-
- shot1344.setInputCloud (cloudWithColors.makeShared ());
- shot1344.setIndices (indicesptr);
- shot1344.setSearchMethod (rgbaTree);
-
- // estimate
- shot1344.compute (*shots1344);
- EXPECT_EQ (shots1344->points.size (), indices.size ());
-
- EXPECT_NEAR (shots1344->points[103].descriptor[10], 0.0020453099, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[11], 0.0021887729, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[21], 0.057930067, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[42], 0.011778189, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[53], 0.0065085669, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[54], 0.012025614, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[55], 0.0044803056, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[64], 0.0644530654, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[65], 0.0465045683, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[86], 0.011518310, 1e-5);
-
- EXPECT_NEAR (shots1344->points[103].descriptor[357], 0.0020453099, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[360], 0.0027993850, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[386], 0.0451327376, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[387], 0.0544394031, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[389], 0.0047547864, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[453], 0.0051176427, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[481], 0.0053625242, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[482], 0.012025614, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[511], 0.0057367259, 1e-5);
- EXPECT_NEAR (shots1344->points[103].descriptor[512], 0.048375979, 1e-5);
-
- // Test results when setIndices and/or setSearchSurface are used
- boost::shared_ptr<vector<int> > test_indices (new vector<int> (0));
- for (size_t i = 0; i < cloud.size (); i+=3)
- test_indices->push_back (static_cast<int> (i));
-
- //testSHOTIndicesAndSearchSurface<SHOTEstimationOMP<PointXYZRGBA, Normal, SHOT>, PointXYZRGBA, Normal, SHOT> (cloudWithColors.makeShared (), normals, test_indices);
- //testSHOTLocalReferenceFrame<SHOTEstimationOMP<PointXYZRGBA, Normal, SHOT>, PointXYZRGBA, Normal, SHOT> (cloudWithColors.makeShared (), normals, test_indices);
-
- testSHOTIndicesAndSearchSurface<SHOTColorEstimationOMP<PointXYZRGBA, Normal, SHOT1344>, PointXYZRGBA, Normal, SHOT1344> (cloudWithColors.makeShared (), normals, test_indices);
- testSHOTLocalReferenceFrame<SHOTColorEstimationOMP<PointXYZRGBA, Normal, SHOT1344>, PointXYZRGBA, Normal, SHOT1344> (cloudWithColors.makeShared (), normals, test_indices);
+ testSHOTIndicesAndSearchSurface<TypeParam, PointXYZRGBA, Normal, SHOT1344> (cloudWithColors.makeShared (), normals, test_indices);
+ testSHOTLocalReferenceFrame<TypeParam, PointXYZRGBA, Normal, SHOT1344> (cloudWithColors.makeShared (), normals, test_indices);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
std::size_t tex_id = 0;
while (tex_id < last_tex_id)
{
-#if VTK_MAJOR_VERSION < 9
- int tu = vtkProperty::VTK_TEXTURE_UNIT_0 + tex_id;
+#if (VTK_MAJOR_VERSION == 8 && VTK_MINOR_VERSION >= 2) || VTK_MAJOR_VERSION > 8
+ const char *tu = mesh.tex_materials[tex_id].tex_name.c_str();
#else
- const char *tu = mesh.tex_materials[tex_id].tex_name.c_str ();
+ int tu = vtkProperty::VTK_TEXTURE_UNIT_0 + tex_id;
#endif
-
vtkSmartPointer<vtkTexture> texture = vtkSmartPointer<vtkTexture>::New ();
if (textureFromTexMaterial (mesh.tex_materials[tex_id], texture))
{
else
for (std::size_t tc = 0; tc < mesh.tex_coordinates[t].size (); ++tc)
coordinates->InsertNextTuple2 (-1.0, -1.0);
-
mapper->MapDataArrayToMultiTextureAttribute(tu,
- this_coordinates_name.c_str (),
- vtkDataObject::FIELD_ASSOCIATION_POINTS);
+ this_coordinates_name.c_str(),
+ vtkDataObject::FIELD_ASSOCIATION_POINTS);
+
polydata->GetPointData ()->AddArray (coordinates);
actor->GetProperty ()->SetTexture (tu, texture);
++tex_id;