From 6c1d2bc6710acf88b48a0a8f713fb9c56a4fc536 Mon Sep 17 00:00:00 2001 From: Jochen Sprickerhof Date: Sat, 8 Dec 2018 10:24:40 +0100 Subject: [PATCH] New upstream version 1.9.1+dfsg1 --- .appveyor.yml | 99 ------ .azure-pipelines.yml | 183 +++++++++++ .github/change_log.py | 1 + .travis.sh | 132 -------- .travis.yml | 78 ----- CHANGES.md | 75 +++++ CMakeLists.txt | 28 +- PCLConfig.cmake.in | 6 + PCLConfigVersion.cmake.in | 2 +- README.md | 5 +- cmake/Modules/FindEigen.cmake | 11 +- cmake/cpack_options.cmake.in | 10 +- cmake/pcl_cpack.cmake | 14 +- cmake/pcl_targets.cmake | 18 +- cmake/pcl_utils.cmake | 20 +- cmake/pkgconfig-headeronly.cmake.in | 4 +- cmake/pkgconfig.cmake.in | 4 +- cmake/uninstall_target.cmake.in | 86 ++--- doc/doxygen/doxyfile.in | 4 +- .../compiling_pcl_dependencies_windows.rst | 2 +- .../content/compiling_pcl_macosx.rst | 2 +- doc/tutorials/content/compiling_pcl_posix.rst | 2 +- .../content/compiling_pcl_windows.rst | 2 +- pcl_config.h.in | 8 +- test/features/test_shot_estimation.cpp | 303 +++++------------- visualization/src/pcl_visualizer.cpp | 13 +- 26 files changed, 435 insertions(+), 677 deletions(-) delete mode 100644 .appveyor.yml create mode 100644 .azure-pipelines.yml delete mode 100755 .travis.sh delete mode 100644 .travis.yml diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index 956c8859..00000000 --- a/.appveyor.yml +++ /dev/null @@ -1,99 +0,0 @@ -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 - diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml new file mode 100644 index 00000000..815774ab --- /dev/null +++ b/.azure-pipelines.yml @@ -0,0 +1,183 @@ +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' diff --git a/.github/change_log.py b/.github/change_log.py index 2305a7ce..44453f57 100755 --- a/.github/change_log.py +++ b/.github/change_log.py @@ -175,6 +175,7 @@ def generate_text_content(tag, pr_info): "simulation", "stereo", "surface", + "visualization", "apps", "docs", "tutorials", diff --git a/.travis.sh b/.travis.sh deleted file mode 100755 index 02959aa9..00000000 --- a/.travis.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/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 - diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 69201492..00000000 --- a/.travis.yml +++ /dev/null @@ -1,78 +0,0 @@ -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 diff --git a/CHANGES.md b/CHANGES.md index f1164447..b0fe4ea6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,45 @@ # 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:` @@ -369,6 +409,41 @@ * 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) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b8ee5e5..0b4c1a33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,28 +1,5 @@ ### ---[ 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: @@ -38,7 +15,7 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "") 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 @@ -217,7 +194,6 @@ if(CMAKE_COMPILER_IS_CLANG) 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() diff --git a/PCLConfig.cmake.in b/PCLConfig.cmake.in index 7ec40baa..6fadb595 100644 --- a/PCLConfig.cmake.in +++ b/PCLConfig.cmake.in @@ -36,6 +36,9 @@ macro(pcl_report_not_found _reason) elseif(NOT PCL_FIND_QUIETLY) message(WARNING ${_reason}) endif() + if(POLICY CMP0074) + cmake_policy(POP) + endif() return() endmacro(pcl_report_not_found) @@ -472,6 +475,9 @@ set(PCL_TO_FIND_COMPONENTS ${_PCL_TO_FIND_COMPONENTS}) unset(_PCL_TO_FIND_COMPONENTS) if(NOT PCL_TO_FIND_COMPONENTS) + if(POLICY CMP0074) + cmake_policy(POP) + endif() return() endif() diff --git a/PCLConfigVersion.cmake.in b/PCLConfigVersion.cmake.in index db85ffea..029804ff 100644 --- a/PCLConfigVersion.cmake.in +++ b/PCLConfigVersion.cmake.in @@ -1,6 +1,6 @@ # 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}") diff --git a/README.md b/README.md index 27e2b127..aaca7bda 100644 --- a/README.md +++ b/README.md @@ -7,14 +7,13 @@ Continuous integration [![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 -[![Build Status](https://travis-ci.com/PointCloudLibrary/pcl.svg?branch=master)](https://travis-ci.com/PointCloudLibrary/pcl) -[![Build Status](https://ci.appveyor.com/api/projects/status/oiep6oktpmuap7qr/branch/master?svg=true)](https://ci.appveyor.com/project/PointCloudLibrary/pcl/branch/master) +[![Build Status](https://dev.azure.com/PointCloudLibrary/pcl/_apis/build/status/PointCloudLibrary.pcl)](https://dev.azure.com/PointCloudLibrary/pcl/_build/latest?definitionId=1) Description ----------- diff --git a/cmake/Modules/FindEigen.cmake b/cmake/Modules/FindEigen.cmake index 79e727d1..ad27dc5e 100644 --- a/cmake/Modules/FindEigen.cmake +++ b/cmake/Modules/FindEigen.cmake @@ -11,16 +11,8 @@ find_package(PkgConfig QUIET) 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) @@ -38,7 +30,6 @@ if(EIGEN_INCLUDE_DIR) 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) diff --git a/cmake/cpack_options.cmake.in b/cmake/cpack_options.cmake.in index 5e716d94..3251694d 100644 --- a/cmake/cpack_options.cmake.in +++ b/cmake/cpack_options.cmake.in @@ -1,14 +1,14 @@ 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") @@ -16,9 +16,9 @@ IF ((WIN32 OR UNIX) AND (CPACK_GENERATOR STREQUAL "NSIS")) 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") diff --git a/cmake/pcl_cpack.cmake b/cmake/pcl_cpack.cmake index 8869279f..8ebcfea9 100644 --- a/cmake/pcl_cpack.cmake +++ b/cmake/pcl_cpack.cmake @@ -9,10 +9,10 @@ # 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 @@ -33,9 +33,9 @@ if(WIN32) 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}") @@ -54,7 +54,7 @@ if(WIN32) # 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 diff --git a/cmake/pcl_targets.cmake b/cmake/pcl_targets.cmake index 22049d26..30696346 100644 --- a/cmake/pcl_targets.cmake +++ b/cmake/pcl_targets.cmake @@ -207,8 +207,8 @@ macro(PCL_ADD_LIBRARY _name _component) 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") @@ -240,8 +240,8 @@ macro(PCL_CUDA_ADD_LIBRARY _name _component) 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") @@ -468,14 +468,14 @@ macro(PCL_MAKE_PKGCONFIG _name _component _desc _pcl_deps _ext_deps _int_deps _c 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} @@ -503,13 +503,13 @@ set(PKG_CFLAGS ${_cflags}) 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}) @@ -861,7 +861,7 @@ macro(PCL_ADD_GRABBER_DEPENDENCY _name _description) 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}") diff --git a/cmake/pcl_utils.cmake b/cmake/pcl_utils.cmake index 41a64a26..f523dbc8 100644 --- a/cmake/pcl_utils.cmake +++ b/cmake/pcl_utils.cmake @@ -59,19 +59,13 @@ endmacro(REMOVE_VTK_DEFINITIONS) ############################################################################### # 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) @@ -105,18 +99,18 @@ macro(SET_INSTALL_DIRS) 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) diff --git a/cmake/pkgconfig-headeronly.cmake.in b/cmake/pkgconfig-headeronly.cmake.in index b543e312..950fa785 100644 --- a/cmake/pkgconfig-headeronly.cmake.in +++ b/cmake/pkgconfig-headeronly.cmake.in @@ -3,10 +3,10 @@ prefix=@CMAKE_INSTALL_PREFIX@ 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@ diff --git a/cmake/pkgconfig.cmake.in b/cmake/pkgconfig.cmake.in index 6798be95..c351e441 100644 --- a/cmake/pkgconfig.cmake.in +++ b/cmake/pkgconfig.cmake.in @@ -3,10 +3,10 @@ prefix=@CMAKE_INSTALL_PREFIX@ 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@ diff --git a/cmake/uninstall_target.cmake.in b/cmake/uninstall_target.cmake.in index d1191233..803861cb 100644 --- a/cmake/uninstall_target.cmake.in +++ b/cmake/uninstall_target.cmake.in @@ -1,66 +1,66 @@ 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() diff --git a/doc/doxygen/doxyfile.in b/doc/doxygen/doxyfile.in index e2047862..b3069936 100644 --- a/doc/doxygen/doxyfile.in +++ b/doc/doxygen/doxyfile.in @@ -3,7 +3,7 @@ #--------------------------------------------------------------------------- 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@" @@ -178,7 +178,7 @@ DOCSET_BUNDLE_ID = pointclouds.org 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 = diff --git a/doc/tutorials/content/compiling_pcl_dependencies_windows.rst b/doc/tutorials/content/compiling_pcl_dependencies_windows.rst index d2fe8db0..17ec1e1c 100644 --- a/doc/tutorials/content/compiling_pcl_dependencies_windows.rst +++ b/doc/tutorials/content/compiling_pcl_dependencies_windows.rst @@ -59,7 +59,7 @@ compile a series of 3rd party library dependencies: .. 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 diff --git a/doc/tutorials/content/compiling_pcl_macosx.rst b/doc/tutorials/content/compiling_pcl_macosx.rst index cecaceb6..034f9913 100644 --- a/doc/tutorials/content/compiling_pcl_macosx.rst +++ b/doc/tutorials/content/compiling_pcl_macosx.rst @@ -44,7 +44,7 @@ Required 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:: diff --git a/doc/tutorials/content/compiling_pcl_posix.rst b/doc/tutorials/content/compiling_pcl_posix.rst index fd1dfaaf..ed7be630 100644 --- a/doc/tutorials/content/compiling_pcl_posix.rst +++ b/doc/tutorials/content/compiling_pcl_posix.rst @@ -4,7 +4,7 @@ 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 `_, at least version 2.8.3. +Though not a dependency per se, don’t forget that you also need the `CMake build system `_, at least version 3.1.0. Additional help on how to use the CMake build system is available `here `_. Please note that the following installation instructions are only valid for POSIX systems (e.g., Linux, MacOS) with an already installed make/gnu toolchain. diff --git a/doc/tutorials/content/compiling_pcl_windows.rst b/doc/tutorials/content/compiling_pcl_windows.rst index b1f54160..60ebf62a 100644 --- a/doc/tutorials/content/compiling_pcl_windows.rst +++ b/doc/tutorials/content/compiling_pcl_windows.rst @@ -65,7 +65,7 @@ is needed only to build PCL tests. We do not provide GTest installers. **optiona .. 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 diff --git a/pcl_config.h.in b/pcl_config.h.in index a654294f..03650f0e 100644 --- a/pcl_config.h.in +++ b/pcl_config.h.in @@ -2,11 +2,11 @@ #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) diff --git a/test/features/test_shot_estimation.cpp b/test/features/test_shot_estimation.cpp index dd2dabd5..1e7a8600 100644 --- a/test/features/test_shot_estimation.cpp +++ b/test/features/test_shot_estimation.cpp @@ -342,8 +342,39 @@ testSHOTLocalReferenceFrame (const typename PointCloud::Ptr & points, checkDesc (output, output2); } -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -TEST (PCL, SHOTShapeEstimation) +// "Placeholder" for the type specialized test fixture +template +struct SHOTShapeTest; + +// Template specialization test for SHOTEstimation +template<> +struct SHOTShapeTest > + : public ::testing::Test +{ + SHOTEstimation shot; +}; + +// Template specialization test for SHOTEstimationOMP +template<> +struct SHOTShapeTest > + : public ::testing::Test +{ + // Default Constructor is defined to instantiate 4 threads + SHOTShapeTest > () + : shot (4) + {} + + SHOTEstimationOMP shot; +}; + +// Types which will be instantiated +typedef ::testing::Types, + SHOTEstimationOMP > 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; @@ -399,7 +430,7 @@ TEST (PCL, SHOTShapeEstimation) */ // SHOT352 - SHOTEstimation shot352; + TypeParam& shot352 = this->shot; shot352.setInputNormals (normals); EXPECT_EQ (shot352.getInputNormals (), normals); shot352.setRadiusSearch (20 * mr); @@ -437,8 +468,8 @@ TEST (PCL, SHOTShapeEstimation) //testSHOTIndicesAndSearchSurface, PointXYZ, Normal, SHOT> (cloud.makeShared (), normals, test_indices); //testSHOTLocalReferenceFrame, PointXYZ, Normal, SHOT> (cloud.makeShared (), normals, test_indices); - testSHOTIndicesAndSearchSurface, PointXYZ, Normal, SHOT352> (cloud.makeShared (), normals, test_indices); - testSHOTLocalReferenceFrame, PointXYZ, Normal, SHOT352> (cloud.makeShared (), normals, test_indices); + testSHOTIndicesAndSearchSurface (cloud.makeShared (), normals, test_indices); + testSHOTLocalReferenceFrame (cloud.makeShared (), normals, test_indices); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -498,8 +529,40 @@ TEST (PCL, GenericSHOTShapeEstimation) testSHOTLocalReferenceFrame, PointXYZ, Normal, SHOT> (cloud.makeShared (), normals, test_indices, shapeStep_); } */ -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -TEST (PCL, SHOTShapeAndColorEstimation) + +// "Placeholder" for the type specialized test fixture +template +struct SHOTShapeAndColorTest; + +// Template specialization test for SHOTColorEstimation +template<> +struct SHOTShapeAndColorTest > + : public ::testing::Test +{ + SHOTColorEstimation shot; +}; + +// Template specialization test for SHOTColorEstimationOMP +template<> +struct SHOTShapeAndColorTest > + : public ::testing::Test +{ + // Default Constructor is defined to instantiate 4 threads + SHOTShapeAndColorTest > () + : shot (true, true, 4) + {} + + SHOTColorEstimationOMP shot; +}; + +// Types which will be instantiated +typedef ::testing::Types, + SHOTColorEstimationOMP > 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 @@ -572,7 +635,7 @@ TEST (PCL, SHOTShapeAndColorEstimation) */ // SHOT1344 - SHOTColorEstimation shot1344 (true, true); + TypeParam& shot1344 = this->shot; shot1344.setInputNormals (normals); EXPECT_EQ (shot1344.getInputNormals (), normals); @@ -618,228 +681,8 @@ TEST (PCL, SHOTShapeAndColorEstimation) //testSHOTIndicesAndSearchSurface, PointXYZRGBA, Normal, SHOT> (cloudWithColors.makeShared (), normals, test_indices); //testSHOTLocalReferenceFrame, PointXYZRGBA, Normal, SHOT> (cloudWithColors.makeShared (), normals, test_indices); - testSHOTIndicesAndSearchSurface, PointXYZRGBA, Normal, SHOT1344> (cloudWithColors.makeShared (), normals, test_indices); - testSHOTLocalReferenceFrame, PointXYZRGBA, Normal, SHOT1344> (cloudWithColors.makeShared (), normals, test_indices); -} - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -TEST (PCL, SHOTShapeEstimationOpenMP) -{ - // Estimate normals first - double mr = 0.002; -#ifdef _OPENMP - NormalEstimationOMP n (omp_get_max_threads ()); -#else - NormalEstimationOMP n; -#endif - PointCloud::Ptr normals (new PointCloud ()); - // set parameters - n.setInputCloud (cloud.makeShared ()); - boost::shared_ptr > indicesptr (new vector (indices)); - n.setIndices (indicesptr); - n.setSearchMethod (tree); - n.setRadiusSearch (20 * mr); - n.compute (*normals); - -/* - SHOTEstimationOMP shot; - shot.setInputNormals (normals); - EXPECT_EQ (shot.getInputNormals (), normals); - - shot.setRadiusSearch ( 20 * mr); - - // Object - PointCloud::Ptr shots (new PointCloud); - - // 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 shot352; - shot352.setInputNormals (normals); - EXPECT_EQ (shot352.getInputNormals (), normals); - - shot352.setRadiusSearch ( 20 * mr); - - // Object - PointCloud::Ptr shots352 (new PointCloud); - - // 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 > test_indices (new vector (0)); - for (size_t i = 0; i < cloud.size (); i+=3) - test_indices->push_back (static_cast (i)); - - //testSHOTIndicesAndSearchSurface, PointXYZ, Normal, SHOT> (cloud.makeShared (), normals, test_indices); - //testSHOTLocalReferenceFrame, PointXYZ, Normal, SHOT> (cloud.makeShared (), normals, test_indices); - - testSHOTIndicesAndSearchSurface, PointXYZ, Normal, SHOT352> (cloud.makeShared (), normals, test_indices); - testSHOTLocalReferenceFrame, PointXYZ, Normal, SHOT352> (cloud.makeShared (), normals, test_indices); -} - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -TEST (PCL,SHOTShapeAndColorEstimationOpenMP) -{ - double mr = 0.002; - // Estimate normals first - NormalEstimation n; - PointCloud::Ptr normals (new PointCloud ()); - // set parameters - n.setInputCloud (cloud.makeShared ()); - boost::shared_ptr > indicesptr (new vector (indices)); - n.setIndices (indicesptr); - n.setSearchMethod (tree); - n.setRadiusSearch (20 * mr); - n.compute (*normals); - - search::KdTree::Ptr rgbaTree; - - rgbaTree.reset (new search::KdTree (false)); - - // Create fake point cloud with colors - PointCloud cloudWithColors; - for (int i = 0; i < static_cast (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 shot (true, true, -1); - shot.setInputNormals (normals); - - EXPECT_EQ (shot.getInputNormals (), normals); - - shot.setRadiusSearch ( 20 * mr); - - rgbaTree->setInputCloud (cloudWithColors.makeShared ()); - - PointCloud::Ptr shots (new PointCloud ()); - - 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 shot1344 (true, true); - shot1344.setInputNormals (normals); - - EXPECT_EQ (shot1344.getInputNormals (), normals); - - shot1344.setRadiusSearch ( 20 * mr); - - PointCloud::Ptr shots1344 (new PointCloud ()); - - 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 > test_indices (new vector (0)); - for (size_t i = 0; i < cloud.size (); i+=3) - test_indices->push_back (static_cast (i)); - - //testSHOTIndicesAndSearchSurface, PointXYZRGBA, Normal, SHOT> (cloudWithColors.makeShared (), normals, test_indices); - //testSHOTLocalReferenceFrame, PointXYZRGBA, Normal, SHOT> (cloudWithColors.makeShared (), normals, test_indices); - - testSHOTIndicesAndSearchSurface, PointXYZRGBA, Normal, SHOT1344> (cloudWithColors.makeShared (), normals, test_indices); - testSHOTLocalReferenceFrame, PointXYZRGBA, Normal, SHOT1344> (cloudWithColors.makeShared (), normals, test_indices); + testSHOTIndicesAndSearchSurface (cloudWithColors.makeShared (), normals, test_indices); + testSHOTLocalReferenceFrame (cloudWithColors.makeShared (), normals, test_indices); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/visualization/src/pcl_visualizer.cpp b/visualization/src/pcl_visualizer.cpp index afdddb35..a0b881e9 100644 --- a/visualization/src/pcl_visualizer.cpp +++ b/visualization/src/pcl_visualizer.cpp @@ -3528,12 +3528,11 @@ pcl::visualization::PCLVisualizer::addTextureMesh (const pcl::TextureMesh &mesh, 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 texture = vtkSmartPointer::New (); if (textureFromTexMaterial (mesh.tex_materials[tex_id], texture)) { @@ -3561,10 +3560,10 @@ pcl::visualization::PCLVisualizer::addTextureMesh (const pcl::TextureMesh &mesh, 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; -- 2.30.2