Proposal for imported targets

This commit is contained in:
Simon Giraudot 2020-04-09 13:40:19 +02:00
parent 2167d4ffef
commit 41519e3010
6 changed files with 97 additions and 71 deletions

View File

@ -0,0 +1,9 @@
if(Eigen_FOUND AND NOT TARGET CGAL::Eigen_support)
if(NOT TARGET Threads::Threads)
find_package(Threads REQUIRED)
endif()
add_library(CGAL::Eigen_support INTERFACE IMPORTED)
set_target_properties(CGAL::Eigen_support PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "CGAL_EIGEN3_ENABLED"
INTERFACE_INCLUDE_DIRECTORIES "${EIGEN3_INCLUDE_DIR}")
endif()

View File

@ -0,0 +1,7 @@
if(LASLIB_FOUND AND NOT TARGET CGAL::LASLIB_support)
add_library(CGAL::LASLIB_support INTERFACE IMPORTED)
set_target_properties(CGAL::LASLIB_support PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_LASLIB"
INTERFACE_INCLUDE_DIRECTORIES "${LASLIB_INCLUDE_DIR};${LASZIP_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "${LASLIB_LIBRARIES}")
endif()

View File

@ -0,0 +1,6 @@
if(OpenGR_FOUND AND NOT TARGET CGAL::OpenGR_support)
add_library(CGAL::OpenGR_support INTERFACE IMPORTED)
set_target_properties(CGAL::OpenGR_support PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_OPENGR"
INTERFACE_INCLUDE_DIRECTORIES "${OpenGR_INCLUDE_DIR}")
endif()

View File

@ -0,0 +1,10 @@
if(TBB_FOUND AND NOT TARGET CGAL::TBB_support)
if(NOT TARGET Threads::Threads)
find_package(Threads REQUIRED)
endif()
add_library(CGAL::TBB_support INTERFACE IMPORTED)
set_target_properties(CGAL::TBB_support PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_TBB;NOMINMAX"
INTERFACE_INCLUDE_DIRECTORIES "${TBB_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "TBB:tbb;TBB:tbbmalloc;Threads::Threads")
endif()

View File

@ -0,0 +1,7 @@
if(libpointmatcher_FOUND AND NOT TARGET CGAL::pointmatcher_support)
add_library(CGAL::pointmatcher_support INTERFACE IMPORTED)
set_target_properties(CGAL::pointmatcher_support PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_POINTMATCHER"
INTERFACE_INCLUDE_DIRECTORIES "${libpointmatcher_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "${libpointmatcher_LIBRARIES}")
endif()

View File

@ -31,114 +31,101 @@ if ( CGAL_FOUND )
"Enable concurrency"
OFF)
set(CGAL_libs CGAL::CGAL)
if( CGAL_ACTIVATE_CONCURRENT_PSP3 OR ENV{CGAL_ACTIVATE_CONCURRENT_PSP3} )
find_package( TBB REQUIRED )
include(CGAL_TBB_support)
if (TARGET CGAL::TBB_support)
set(CGAL_TBB_target ${CGAL_libs} CGAL::TBB_support)
endif()
endif()
# Executables that do *not* require EIGEN
create_single_source_cgal_program( "average_spacing_example.cpp" )
create_single_source_cgal_program( "bilateral_smooth_point_set_example.cpp" )
create_single_source_cgal_program( "grid_simplification_example.cpp" )
create_single_source_cgal_program( "grid_simplify_indices.cpp" )
create_single_source_cgal_program( "property_map.cpp" )
create_single_source_cgal_program( "random_simplification_example.cpp" )
create_single_source_cgal_program( "read_write_xyz_point_set_example.cpp" )
create_single_source_cgal_program( "remove_outliers_example.cpp" )
create_single_source_cgal_program( "wlop_simplify_and_regularize_point_set_example.cpp" )
create_single_source_cgal_program( "edge_aware_upsample_point_set_example.cpp" )
create_single_source_cgal_program( "structuring_example.cpp" )
create_single_source_cgal_program( "read_ply_points_with_colors_example.cpp" )
create_single_source_cgal_program( "write_ply_points_example.cpp" )
foreach(target
average_spacing_example
bilateral_smooth_point_set_example
grid_simplification_example
grid_simplify_indices
property_map
random_simplification_example
read_write_xyz_point_set_example
remove_outliers_example
wlop_simplify_and_regularize_point_set_example
edge_aware_upsample_point_set_example
structuring_example
read_ply_points_with_colors_example
write_ply_points_example)
add_executable(${target} "${target}.cpp")
target_link_libraries(${target} ${CGAL_libs})
endforeach()
find_package(LASLIB)
if (LASLIB_FOUND)
create_single_source_cgal_program( "read_las_example.cpp" )
CGAL_target_use_LASLIB(read_las_example)
include(CGAL_LASLIB_support)
if (TARGET CGAL::LASLIB_support)
add_executable( read_las_example "read_las_example.cpp" )
target_link_libraries(read_las_example ${CGAL_libs} CGAL::LASLIB_support)
else()
message(STATUS "NOTICE : the LAS reader test requires LASlib and will not be compiled.")
endif()
# Use Eigen
find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater)
if (EIGEN3_FOUND)
include(CGAL_Eigen_support)
if (TARGET CGAL::Eigen_support)
set(CGAL_libs ${CGAL_libs} CGAL::Eigen_support)
# Executables that require Eigen
create_single_source_cgal_program( "jet_smoothing_example.cpp" )
CGAL_target_use_Eigen(jet_smoothing_example)
foreach(target
jet_smoothing_example
normal_estimation
edges_example
create_single_source_cgal_program( "normal_estimation.cpp" )
CGAL_target_use_Eigen(normal_estimation)
create_single_source_cgal_program( "edges_example.cpp" )
callback_example
scale_estimation_example
scale_estimation_2d_example
hierarchy_simplification_example
normals_example)
add_executable(${target} "${target}.cpp")
target_link_libraries(${target} ${CGAL_libs})
endforeach()
# Executables that require libpointmatcher
find_package(libpointmatcher QUIET)
if (libpointmatcher_FOUND)
create_single_source_cgal_program( "registration_with_pointmatcher.cpp" )
CGAL_target_use_pointmatcher(registration_with_pointmatcher)
CGAL_target_use_Eigen(registration_with_pointmatcher)
include(CGAL_pointmatcher_support)
if (TARGET CGAL::pointmatcher_support)
add_executable(registration_with_pointmatcher "registration_with_pointmatcher.cpp")
target_link_libraries(registration_with_pointmatcher
${CGAL_libs} CGAL::pointmatcher_support)
else()
message(STATUS "NOTICE : the registration_with_pointmatcher test requires libpointmatcher and will not be compiled.")
endif()
# Executables that require OpenGR
find_package(OpenGR QUIET)
if (OpenGR_FOUND)
create_single_source_cgal_program( "registration_with_OpenGR.cpp" )
CGAL_target_use_OpenGR(registration_with_OpenGR)
CGAL_target_use_Eigen(registration_with_OpenGR)
include(CGAL_OpenGR_support)
if (TARGET CGAL::OpenGR_support)
add_executable(registration_with_OpenGR "registration_with_OpenGR.cpp" )
target_link_libraries(registration_with_OpenGR
${CGAL_libs} CGAL::OpenGR_support)
else()
message(STATUS "NOTICE : registration_with_OpenGR requires OpenGR, and will not be compiled.")
endif()
# Executables that require both libpointmatcher and OpenGR
if (libpointmatcher_FOUND AND OpenGR_FOUND)
create_single_source_cgal_program( "registration_with_opengr_pointmatcher_pipeline.cpp" )
CGAL_target_use_OpenGR(registration_with_opengr_pointmatcher_pipeline)
CGAL_target_use_pointmatcher(registration_with_opengr_pointmatcher_pipeline)
CGAL_target_use_Eigen(registration_with_opengr_pointmatcher_pipeline)
if (TARGET CGAL::pointmatcher_support AND
TARGET CGAL::OpenGR_support)
add_executable(registration_with_opengr_pointmatcher_pipeline
"registration_with_opengr_pointmatcher_pipeline.cpp" )
target_link_libraries(registration_with_opengr_pointmatcher_pipeline
${CGAL_libs} CGAL::pointmatcher_support CGAL::OpenGR_support)
else()
message(STATUS "NOTICE : registration_with_opengr_pointmatcher_pipeline requires libpointmatcher and OpenGR, and will not be compiled.")
endif()
CGAL_target_use_Eigen(edges_example)
create_single_source_cgal_program( "callback_example.cpp" )
CGAL_target_use_Eigen(callback_example)
create_single_source_cgal_program( "scale_estimation_example.cpp" )
CGAL_target_use_Eigen(scale_estimation_example)
create_single_source_cgal_program( "scale_estimation_2d_example.cpp" )
CGAL_target_use_Eigen(scale_estimation_2d_example)
create_single_source_cgal_program( "hierarchy_simplification_example.cpp" )
CGAL_target_use_Eigen(hierarchy_simplification_example)
create_single_source_cgal_program( "normals_example.cpp" )
CGAL_target_use_Eigen(normals_example)
else()
message(STATUS "NOTICE: Some of the executables in this directory need Eigen 3.1 (or greater) and will not be compiled.")
endif()
if (TBB_FOUND)
foreach(target
scale_estimation_example
wlop_simplify_and_regularize_point_set_example
bilateral_smooth_point_set_example
edge_aware_upsample_point_set_example
average_spacing_example
normals_example
jet_smoothing_example
normal_estimation
callback_example)
if(TARGET ${target})
CGAL_target_use_TBB(${target})
endif()
endforeach()
endif()
else()
message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.")
endif()