diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..dc84959d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build/ + diff --git a/CMakeLists.txt b/CMakeLists.txt index 257b5df3..ccdc00d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,117 +1,63 @@ cmake_minimum_required(VERSION 3.10) -project(ndt_omp) +project(PCLOMP VERSION "1.0.0") -add_definitions(-std=c++14) -set(CMAKE_CXX_FLAGS "-std=c++14") +include(GNUInstallDirs) -if (BUILD_WITH_MARCH_NATIVE) - add_compile_options(-march=native) -else() - add_definitions(-msse -msse2 -msse3 -msse4 -msse4.1 -msse4.2) - set(CMAKE_CXX_FLAGS "-msse -msse2 -msse3 -msse4 -msse4.1 -msse4.2") -endif() +find_package(PCL 1.7 REQUIRED COMPONENTS registration) +find_package(OpenMP REQUIRED) -# pcl 1.7 causes a segfault when it is built with debug mode -set(CMAKE_BUILD_TYPE "RELEASE") - -find_package(PCL 1.7 REQUIRED) -include_directories(${PCL_INCLUDE_DIRS}) -link_directories(${PCL_LIBRARY_DIRS}) -add_definitions(${PCL_DEFINITIONS}) - -message(STATUS "PCL_INCLUDE_DIRS:" ${PCL_INCLUDE_DIRS}) -message(STATUS "PCL_LIBRARY_DIRS:" ${PCL_LIBRARY_DIRS}) -message(STATUS "PCL_DEFINITIONS:" ${PCL_DEFINITIONS}) - -find_package(OpenMP) -if (OPENMP_FOUND) - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") -endif() - -if($ENV{ROS_VERSION} EQUAL 1) -# ROS1 -find_package(catkin REQUIRED COMPONENTS - roscpp - pcl_ros +set(HEADERS + src/pclomp/gicp_omp.h + src/pclomp/ndt_omp.h + src/pclomp/voxel_grid_covariance_omp.h ) -################################### -## catkin specific configuration ## -################################### -catkin_package( - INCLUDE_DIRS include - LIBRARIES ndt_omp +add_library(registration SHARED + src/voxel_grid_covariance_omp.cpp + src/ndt_omp.cpp + src/gicp_omp.cpp ) -########### -## Build ## -########### -include_directories(include) -include_directories( - ${catkin_INCLUDE_DIRS} +set_target_properties(registration PROPERTIES + PUBLIC_HEADER "${HEADERS}" ) -add_library(ndt_omp - src/pclomp/voxel_grid_covariance_omp.cpp - src/pclomp/ndt_omp.cpp - src/pclomp/gicp_omp.cpp +target_link_libraries(registration + PUBLIC ${PCL_REGISTRATION_LIBRARIES} + PRIVATE OpenMP::OpenMP_CXX ) -add_executable(align - apps/align.cpp +target_include_directories(registration PUBLIC + $ + $ + ${PCL_INCLUDE_DIRS} ) -add_dependencies(align - ndt_omp -) -target_link_libraries(align - ${catkin_LIBRARIES} - ${PCL_LIBRARIES} - ndt_omp -) - -############# -## INSTALL ## -############# -install( - TARGETS - ndt_omp - ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +# Install binaries +install(TARGETS registration EXPORT pclomp-targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/pclomp ) -# install headers -install(DIRECTORY include/pclomp - DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}) -else() - -# ROS2 -find_package(ament_cmake_auto REQUIRED) -ament_auto_find_build_dependencies() - -########### -## Build ## -########### -include_directories(include) -include_directories( - ${catkin_INCLUDE_DIRS} +# Export the library interface +install(EXPORT pclomp-targets + NAMESPACE pclomp:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pclomp ) -add_library(ndt_omp - src/pclomp/voxel_grid_covariance_omp.cpp - src/pclomp/ndt_omp.cpp - src/pclomp/gicp_omp.cpp +# Create and install the version file +include(CMakePackageConfigHelpers) +write_basic_package_version_file("pclomp-config-version.cmake" + VERSION ${PCLOMP_VERSION} + COMPATIBILITY SameMajorVersion ) -target_link_libraries(ndt_omp ${PCL_LIBRARIES}) - -if(OpenMP_CXX_FOUND) - target_link_libraries(ndt_omp OpenMP::OpenMP_CXX) -else() - message(WARNING "OpenMP not found") -endif() - -ament_auto_package() -endif() +install( + FILES + pclomp-config.cmake + ${PROJECT_BINARY_DIR}/pclomp-config-version.cmake + DESTINATION + ${CMAKE_INSTALL_LIBDIR}/cmake/pclomp +) diff --git a/package.xml b/package.xml index c0da9ca6..81d07d4d 100644 --- a/package.xml +++ b/package.xml @@ -1,24 +1,17 @@ - ndt_omp - 0.0.0 + pclomp + 1.0.0 OpenMP boosted NDT and GICP algorithms koide BSD - catkin - ament_cmake_auto - - pcl_ros - roscpp - - libpcl-all-dev + cmake - catkin - ament_cmake + cmake diff --git a/pclomp-config.cmake b/pclomp-config.cmake new file mode 100644 index 00000000..afac9b08 --- /dev/null +++ b/pclomp-config.cmake @@ -0,0 +1,2 @@ +find_package(PCL 1.7 REQUIRED COMPONENTS registration) +include("${CMAKE_CURRENT_LIST_DIR}/pclomp-targets.cmake") diff --git a/src/pclomp/gicp_omp.cpp b/src/gicp_omp.cpp similarity index 85% rename from src/pclomp/gicp_omp.cpp rename to src/gicp_omp.cpp index 3357648f..f78a963f 100644 --- a/src/pclomp/gicp_omp.cpp +++ b/src/gicp_omp.cpp @@ -1,5 +1,5 @@ #include -#include +#include template class pclomp::GeneralizedIterativeClosestPoint; template class pclomp::GeneralizedIterativeClosestPoint; diff --git a/include/pclomp/gicp_omp_impl.hpp b/src/gicp_omp_impl.hpp similarity index 100% rename from include/pclomp/gicp_omp_impl.hpp rename to src/gicp_omp_impl.hpp diff --git a/src/pclomp/ndt_omp.cpp b/src/ndt_omp.cpp similarity index 84% rename from src/pclomp/ndt_omp.cpp rename to src/ndt_omp.cpp index 8e62c96c..843264e4 100644 --- a/src/pclomp/ndt_omp.cpp +++ b/src/ndt_omp.cpp @@ -1,5 +1,5 @@ #include -#include +#include template class pclomp::NormalDistributionsTransform; template class pclomp::NormalDistributionsTransform; diff --git a/include/pclomp/ndt_omp_impl.hpp b/src/ndt_omp_impl.hpp similarity index 99% rename from include/pclomp/ndt_omp_impl.hpp rename to src/ndt_omp_impl.hpp index 220d2019..fdc65251 100644 --- a/include/pclomp/ndt_omp_impl.hpp +++ b/src/ndt_omp_impl.hpp @@ -1,4 +1,4 @@ -#include "ndt_omp.h" +#include /* * Software License Agreement (BSD License) * diff --git a/include/pclomp/gicp_omp.h b/src/pclomp/gicp_omp.h similarity index 100% rename from include/pclomp/gicp_omp.h rename to src/pclomp/gicp_omp.h diff --git a/include/pclomp/ndt_omp.h b/src/pclomp/ndt_omp.h similarity index 99% rename from include/pclomp/ndt_omp.h rename to src/pclomp/ndt_omp.h index 85fbfda7..7e0728e0 100644 --- a/include/pclomp/ndt_omp.h +++ b/src/pclomp/ndt_omp.h @@ -43,7 +43,7 @@ #include #include -#include "voxel_grid_covariance_omp.h" +#include #include @@ -181,7 +181,7 @@ namespace pclomp * \param[in] outlier_ratio outlier ratio */ inline void - setOutlierRatio(double outlier_ratio) + setOulierRatio(double outlier_ratio) { outlier_ratio_ = outlier_ratio; } diff --git a/include/pclomp/voxel_grid_covariance_omp.h b/src/pclomp/voxel_grid_covariance_omp.h similarity index 100% rename from include/pclomp/voxel_grid_covariance_omp.h rename to src/pclomp/voxel_grid_covariance_omp.h diff --git a/src/pclomp/voxel_grid_covariance_omp.cpp b/src/voxel_grid_covariance_omp.cpp similarity index 75% rename from src/pclomp/voxel_grid_covariance_omp.cpp rename to src/voxel_grid_covariance_omp.cpp index bd67ecd8..4a78aa01 100644 --- a/src/pclomp/voxel_grid_covariance_omp.cpp +++ b/src/voxel_grid_covariance_omp.cpp @@ -1,5 +1,5 @@ #include -#include +#include template class pclomp::VoxelGridCovariance; template class pclomp::VoxelGridCovariance; diff --git a/include/pclomp/voxel_grid_covariance_omp_impl.hpp b/src/voxel_grid_covariance_omp_impl.hpp similarity index 99% rename from include/pclomp/voxel_grid_covariance_omp_impl.hpp rename to src/voxel_grid_covariance_omp_impl.hpp index 5b579a39..49c9295e 100644 --- a/include/pclomp/voxel_grid_covariance_omp_impl.hpp +++ b/src/voxel_grid_covariance_omp_impl.hpp @@ -40,7 +40,7 @@ #include #include -#include "voxel_grid_covariance_omp.h" +#include #include #include