-
-
Save csvance/391d04a8ecb75a3145fe6d2cdb800af7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cmake_minimum_required(VERSION 3.1) | |
# Fix behavior of CMAKE_CXX_STANDARD when targeting macOS. | |
if (POLICY CMP0025) | |
cmake_policy(SET CMP0025 NEW) | |
endif () | |
project(pcl_ros) | |
## Find system dependencies | |
find_package(cmake_modules REQUIRED) | |
find_package(Boost REQUIRED COMPONENTS system filesystem thread) | |
find_package(Eigen3 REQUIRED) | |
find_package(PCL REQUIRED COMPONENTS core features filters io segmentation surface) | |
# Find OpenSSL | |
find_package(PkgConfig REQUIRED) | |
pkg_check_modules(OpenSSL REQUIRED openssl) | |
if(NOT "${PCL_LIBRARIES}" STREQUAL "") | |
# For debian: https://github.com/ros-perception/perception_pcl/issues/139 | |
list(REMOVE_ITEM PCL_LIBRARIES | |
"vtkGUISupportQt" | |
"vtkGUISupportQtOpenGL" | |
"vtkGUISupportQtSQL" | |
"vtkGUISupportQtWebkit" | |
"vtkViewsQt" | |
"vtkRenderingQt") | |
endif() | |
# There is a bug in the Ubuntu Artful (17.10) version of the VTK package, | |
# where it includes /usr/include/*-linux-gnu/freetype2 in the include | |
# directories (which doesn't exist). This filters down to the PCL_INCLUDE_DIRS, | |
# and causes downstream projects trying to use these libraries to fail to | |
# configure properly. Here we remove those bogus entries so that downstream | |
# consumers of this package succeed. | |
if(NOT "${PCL_INCLUDE_DIRS}" STREQUAL "") | |
foreach(item ${PCL_INCLUDE_DIRS}) | |
string(REGEX MATCH "/usr/include/.*-linux-gnu/freetype2" item ${item}) | |
if(item) | |
list(REMOVE_ITEM PCL_INCLUDE_DIRS ${item}) | |
endif() | |
endforeach() | |
endif() | |
## Find catkin packages | |
find_package(catkin REQUIRED COMPONENTS | |
dynamic_reconfigure | |
message_filters | |
nodelet | |
nodelet_topic_tools | |
pcl_conversions | |
pcl_msgs | |
pluginlib | |
rosbag | |
rosconsole | |
roscpp | |
roslib | |
sensor_msgs | |
std_msgs | |
tf | |
tf2_eigen | |
) | |
## Add include directories | |
include_directories(include | |
${Boost_INCLUDE_DIRS} | |
${catkin_INCLUDE_DIRS} | |
${EIGEN3_INCLUDE_DIRS} | |
${PCL_INCLUDE_DIRS} | |
${OpenSSL_INCLUDE_DIRS} | |
) | |
## Generate dynamic_reconfigure | |
generate_dynamic_reconfigure_options( | |
cfg/EuclideanClusterExtraction.cfg | |
cfg/ExtractIndices.cfg | |
cfg/ExtractPolygonalPrismData.cfg | |
cfg/Feature.cfg | |
cfg/Filter.cfg | |
cfg/MLS.cfg | |
cfg/SACSegmentation.cfg | |
cfg/SACSegmentationFromNormals.cfg | |
cfg/SegmentDifferences.cfg | |
cfg/StatisticalOutlierRemoval.cfg | |
cfg/RadiusOutlierRemoval.cfg | |
cfg/VoxelGrid.cfg | |
cfg/CropBox.cfg | |
) | |
## Declare the catkin package | |
catkin_package( | |
INCLUDE_DIRS include | |
LIBRARIES | |
pcl_ros_filters | |
pcl_ros_io | |
pcl_ros_tf | |
CATKIN_DEPENDS | |
dynamic_reconfigure | |
message_filters | |
nodelet | |
nodelet_topic_tools | |
pcl_conversions | |
pcl_msgs | |
rosbag | |
roscpp | |
sensor_msgs | |
std_msgs | |
tf | |
DEPENDS | |
Boost | |
EIGEN3 | |
PCL | |
) | |
## Declare the pcl_ros_tf library | |
add_library(pcl_ros_tf src/transforms.cpp) | |
target_link_libraries(pcl_ros_tf ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
add_dependencies(pcl_ros_tf ${catkin_EXPORTED_TARGETS}) | |
## Nodelets | |
## Declare the pcl_ros_io library | |
add_library(pcl_ros_io | |
src/pcl_ros/io/bag_io.cpp | |
src/pcl_ros/io/concatenate_data.cpp | |
src/pcl_ros/io/concatenate_fields.cpp | |
src/pcl_ros/io/io.cpp | |
src/pcl_ros/io/pcd_io.cpp | |
) | |
target_link_libraries(pcl_ros_io pcl_ros_tf ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
class_loader_hide_library_symbols(pcl_ros_io) | |
## Declare the pcl_ros_features library | |
add_library(pcl_ros_features | |
src/pcl_ros/features/feature.cpp | |
# Compilation is much faster if we include all the following CPP files in feature.cpp | |
src/pcl_ros/features/boundary.cpp | |
src/pcl_ros/features/fpfh.cpp | |
src/pcl_ros/features/fpfh_omp.cpp | |
src/pcl_ros/features/shot.cpp | |
src/pcl_ros/features/shot_omp.cpp | |
src/pcl_ros/features/moment_invariants.cpp | |
src/pcl_ros/features/normal_3d.cpp | |
src/pcl_ros/features/normal_3d_omp.cpp | |
src/pcl_ros/features/pfh.cpp | |
src/pcl_ros/features/principal_curvatures.cpp | |
src/pcl_ros/features/vfh.cpp | |
) | |
target_link_libraries (pcl_ros_features ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
add_dependencies(pcl_ros_features ${PROJECT_NAME}_gencfg) | |
class_loader_hide_library_symbols(pcl_ros_features) | |
## Declare the pcl_ros_filters library | |
add_library(pcl_ros_filters | |
src/pcl_ros/filters/extract_indices.cpp | |
src/pcl_ros/filters/filter.cpp | |
src/pcl_ros/filters/passthrough.cpp | |
src/pcl_ros/filters/project_inliers.cpp | |
src/pcl_ros/filters/radius_outlier_removal.cpp | |
src/pcl_ros/filters/statistical_outlier_removal.cpp | |
src/pcl_ros/filters/voxel_grid.cpp | |
src/pcl_ros/filters/crop_box.cpp | |
) | |
target_link_libraries(pcl_ros_filters pcl_ros_tf ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
add_dependencies(pcl_ros_filters ${PROJECT_NAME}_gencfg) | |
class_loader_hide_library_symbols(pcl_ros_filters) | |
## Declare the pcl_ros_segmentation library | |
add_library (pcl_ros_segmentation | |
src/pcl_ros/segmentation/extract_clusters.cpp | |
src/pcl_ros/segmentation/extract_polygonal_prism_data.cpp | |
src/pcl_ros/segmentation/sac_segmentation.cpp | |
src/pcl_ros/segmentation/segment_differences.cpp | |
src/pcl_ros/segmentation/segmentation.cpp | |
) | |
target_link_libraries(pcl_ros_segmentation pcl_ros_tf ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
add_dependencies(pcl_ros_segmentation ${PROJECT_NAME}_gencfg) | |
class_loader_hide_library_symbols(pcl_ros_segmentation) | |
## Declare the pcl_ros_surface library | |
add_library (pcl_ros_surface | |
src/pcl_ros/surface/surface.cpp | |
# Compilation is much faster if we include all the following CPP files in surface.cpp | |
src/pcl_ros/surface/convex_hull.cpp | |
src/pcl_ros/surface/moving_least_squares.cpp | |
) | |
target_link_libraries(pcl_ros_surface ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
add_dependencies(pcl_ros_surface ${PROJECT_NAME}_gencfg) | |
class_loader_hide_library_symbols(pcl_ros_surface) | |
## Tools | |
add_executable(pcd_to_pointcloud tools/pcd_to_pointcloud.cpp) | |
target_link_libraries(pcd_to_pointcloud ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
add_executable(pointcloud_to_pcd tools/pointcloud_to_pcd.cpp) | |
target_link_libraries(pointcloud_to_pcd ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
add_executable(bag_to_pcd tools/bag_to_pcd.cpp) | |
target_link_libraries(bag_to_pcd pcl_ros_tf ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
add_executable(convert_pcd_to_image tools/convert_pcd_to_image.cpp) | |
target_link_libraries(convert_pcd_to_image ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
add_executable(convert_pointcloud_to_image tools/convert_pointcloud_to_image.cpp) | |
target_link_libraries(convert_pointcloud_to_image ${Boost_LIBRARIES} ${catkin_LIBRARIES} ${PCL_LIBRARIES}) | |
## Downloads | |
catkin_download(table_scene_lms400.pcd http://download.ros.org/data/pcl/table_scene_lms400.pcd | |
DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/samples/data | |
MD5 546b5b4822fb1de21b0cf83d41ad6683 | |
) | |
add_custom_target(download ALL DEPENDS download_extra_data) | |
############# | |
## Testing ## | |
############# | |
if(0) | |
find_package(rostest REQUIRED) | |
add_rostest_gtest(test_tf_message_filter_pcl tests/test_tf_message_filter_pcl.launch src/test/test_tf_message_filter_pcl.cpp) | |
target_link_libraries(test_tf_message_filter_pcl ${catkin_LIBRARIES} ${GTEST_LIBRARIES}) | |
add_rostest(samples/pcl_ros/features/sample_normal_3d.launch ARGS gui:=false) | |
add_rostest(samples/pcl_ros/filters/sample_statistical_outlier_removal.launch ARGS gui:=false) | |
add_rostest(samples/pcl_ros/filters/sample_voxel_grid.launch ARGS gui:=false) | |
add_rostest(samples/pcl_ros/segmentation/sample_extract_clusters.launch ARGS gui:=false) | |
add_rostest(samples/pcl_ros/surface/sample_convex_hull.launch ARGS gui:=false) | |
endif(0) | |
install(DIRECTORY include/${PROJECT_NAME}/ | |
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}) | |
install( | |
TARGETS | |
pcl_ros_tf | |
pcl_ros_io | |
pcl_ros_features | |
pcl_ros_filters | |
pcl_ros_surface | |
pcl_ros_segmentation | |
pcd_to_pointcloud | |
pointcloud_to_pcd | |
bag_to_pcd | |
convert_pcd_to_image | |
convert_pointcloud_to_image | |
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} | |
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} | |
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} | |
) | |
install(DIRECTORY plugins samples | |
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment