From 41519e30104fd6fbfbc178f18230a9fa7fd59076 Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Thu, 9 Apr 2020 13:40:19 +0200 Subject: [PATCH 01/46] Proposal for imported targets --- .../cmake/modules/CGAL_Eigen_support.cmake | 9 ++ .../cmake/modules/CGAL_LASLIB_support.cmake | 7 + .../cmake/modules/CGAL_OpenGR_support.cmake | 6 + .../cmake/modules/CGAL_TBB_support.cmake | 10 ++ .../modules/CGAL_pointmatcher_support.cmake | 7 + .../Point_set_processing_3/CMakeLists.txt | 129 ++++++++---------- 6 files changed, 97 insertions(+), 71 deletions(-) create mode 100644 Installation/cmake/modules/CGAL_Eigen_support.cmake create mode 100644 Installation/cmake/modules/CGAL_LASLIB_support.cmake create mode 100644 Installation/cmake/modules/CGAL_OpenGR_support.cmake create mode 100644 Installation/cmake/modules/CGAL_TBB_support.cmake create mode 100644 Installation/cmake/modules/CGAL_pointmatcher_support.cmake diff --git a/Installation/cmake/modules/CGAL_Eigen_support.cmake b/Installation/cmake/modules/CGAL_Eigen_support.cmake new file mode 100644 index 00000000000..31e5f22abf5 --- /dev/null +++ b/Installation/cmake/modules/CGAL_Eigen_support.cmake @@ -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() diff --git a/Installation/cmake/modules/CGAL_LASLIB_support.cmake b/Installation/cmake/modules/CGAL_LASLIB_support.cmake new file mode 100644 index 00000000000..6b1f6cbb58a --- /dev/null +++ b/Installation/cmake/modules/CGAL_LASLIB_support.cmake @@ -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() diff --git a/Installation/cmake/modules/CGAL_OpenGR_support.cmake b/Installation/cmake/modules/CGAL_OpenGR_support.cmake new file mode 100644 index 00000000000..227dda5ec57 --- /dev/null +++ b/Installation/cmake/modules/CGAL_OpenGR_support.cmake @@ -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() diff --git a/Installation/cmake/modules/CGAL_TBB_support.cmake b/Installation/cmake/modules/CGAL_TBB_support.cmake new file mode 100644 index 00000000000..e34882e949c --- /dev/null +++ b/Installation/cmake/modules/CGAL_TBB_support.cmake @@ -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() diff --git a/Installation/cmake/modules/CGAL_pointmatcher_support.cmake b/Installation/cmake/modules/CGAL_pointmatcher_support.cmake new file mode 100644 index 00000000000..c023102661f --- /dev/null +++ b/Installation/cmake/modules/CGAL_pointmatcher_support.cmake @@ -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() diff --git a/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt b/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt index 36412ac7b68..318f6a91e0c 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt +++ b/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt @@ -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() From 421096fd7f52ec7bb1e544860c22ff85d080a81c Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Wed, 15 Apr 2020 12:28:48 +0200 Subject: [PATCH 02/46] Use imported targets everywhere --- .../CMakeLists.txt | 14 +-- .../test/Bounding_volumes/CMakeLists.txt | 14 +-- .../test/Box_intersection_d/CMakeLists.txt | 6 +- CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt | 12 +-- .../examples/Classification/CMakeLists.txt | 37 +++++--- .../test/Classification/CMakeLists.txt | 22 +++-- Generator/examples/Generator/CMakeLists.txt | 8 +- Generator/test/Generator/CMakeLists.txt | 8 +- GraphicsView/demo/Polygon/CMakeLists.txt | 6 +- .../examples/Heat_method_3/CMakeLists.txt | 11 ++- .../test/Heat_method_3/CMakeLists.txt | 9 +- ...ake => CGAL_Boost_iostreams_support.cmake} | 41 ++++---- .../CGAL_Boost_serialization_support.cmake | 12 +++ Installation/cmake/modules/CGAL_Common.cmake | 15 +-- .../cmake/modules/CGAL_Eigen_support.cmake | 2 +- .../cmake/modules/CGAL_GLPK_support.cmake | 7 ++ .../cmake/modules/CGAL_OpenCV_support.cmake | 7 ++ .../cmake/modules/CGAL_SCIP_support.cmake | 7 ++ .../cmake/modules/CGAL_TBB_support.cmake | 2 +- .../modules/CGAL_TensorFlow_support.cmake | 7 ++ .../CGAL_target_use_Boost_Serialization.cmake | 14 --- .../cmake/modules/CGAL_target_use_Eigen.cmake | 13 --- .../cmake/modules/CGAL_target_use_GLPK.cmake | 11 --- .../modules/CGAL_target_use_LASLIB.cmake | 11 --- .../modules/CGAL_target_use_OpenCV.cmake | 10 -- .../modules/CGAL_target_use_OpenGR.cmake | 9 -- .../cmake/modules/CGAL_target_use_SCIP.cmake | 11 --- .../cmake/modules/CGAL_target_use_TBB.cmake | 4 +- .../modules/CGAL_target_use_TensorFlow.cmake | 10 -- .../CGAL_target_use_pointmatcher.cmake | 10 -- Installation/cmake/modules/UseTBB.cmake | 2 +- Installation/test/Installation/CMakeLists.txt | 5 +- .../examples/Jet_fitting_3/CMakeLists.txt | 8 +- .../test/Jet_fitting_3/CMakeLists.txt | 6 +- Mesh_3/benchmark/Mesh_3/CMakeLists.txt | 9 +- Mesh_3/examples/Mesh_3/CMakeLists.txt | 95 ++++++++++--------- Mesh_3/test/Mesh_3/CMakeLists.txt | 45 +++++---- NewKernel_d/test/NewKernel_d/CMakeLists.txt | 6 +- Number_types/test/Number_types/CMakeLists.txt | 5 +- .../examples/Periodic_3_mesh_3/CMakeLists.txt | 5 +- .../test/Periodic_3_mesh_3/CMakeLists.txt | 10 +- .../examples/Point_set_3/CMakeLists.txt | 3 +- .../Point_set_processing_3/CMakeLists.txt | 19 ++-- .../CMakeLists.txt | 12 +-- .../CMakeLists.txt | 6 +- .../Polygon_mesh_processing/CMakeLists.txt | 8 +- .../Polygon_mesh_processing/CMakeLists.txt | 27 +++--- .../Polygon_mesh_processing/CMakeLists.txt | 23 ++--- .../CMakeLists.txt | 17 ++-- .../CMakeLists.txt | 19 ++-- Polyhedron/demo/Polyhedron/CMakeLists.txt | 36 +++---- .../Plugins/AABB_tree/CMakeLists.txt | 4 +- .../Plugins/Classification/CMakeLists.txt | 39 ++++---- .../Polyhedron/Plugins/Display/CMakeLists.txt | 7 +- .../demo/Polyhedron/Plugins/IO/CMakeLists.txt | 5 +- .../Polyhedron/Plugins/Mesh_3/CMakeLists.txt | 13 +-- .../Polyhedron/Plugins/PMP/CMakeLists.txt | 39 ++++---- .../Plugins/Point_set/CMakeLists.txt | 51 +++++----- .../Plugins/Surface_mesh/CMakeLists.txt | 17 ++-- .../CMakeLists.txt | 6 +- .../CMakeLists.txt | 6 +- .../CMakeLists.txt | 6 +- .../examples/Property_map/CMakeLists.txt | 7 +- Ridges_3/examples/Ridges_3/CMakeLists.txt | 9 +- Ridges_3/test/Ridges_3/CMakeLists.txt | 6 +- .../CMakeLists.txt | 5 +- .../test/STL_Extension/CMakeLists.txt | 10 +- .../CMakeLists.txt | 24 ++--- .../benchmark/Shape_detection/CMakeLists.txt | 7 +- .../examples/Shape_detection/CMakeLists.txt | 5 +- .../test/Shape_detection/CMakeLists.txt | 3 +- .../examples/Solver_interface/CMakeLists.txt | 22 +++-- .../Spatial_searching/CMakeLists.txt | 4 +- .../examples/Spatial_searching/CMakeLists.txt | 7 +- .../examples/Spatial_sorting/CMakeLists.txt | 7 +- .../test/Spatial_sorting/CMakeLists.txt | 9 +- .../Surface_mesh_approximation/CMakeLists.txt | 16 ++-- .../Surface_mesh_approximation/CMakeLists.txt | 23 +++-- .../Surface_mesh_deformation/CMakeLists.txt | 6 +- .../Surface_mesh_deformation/CMakeLists.txt | 9 +- .../Surface_mesh_deformation/CMakeLists.txt | 13 ++- .../CMakeLists.txt | 20 ++-- .../CMakeLists.txt | 10 +- .../CMakeLists.txt | 5 +- .../CMakeLists.txt | 10 +- .../CMakeLists.txt | 6 +- .../CMakeLists.txt | 8 +- TDS_3/test/TDS_3/CMakeLists.txt | 5 +- .../applications/Triangulation/CMakeLists.txt | 7 +- .../benchmark/Triangulation/CMakeLists.txt | 8 +- .../examples/Triangulation/CMakeLists.txt | 6 +- .../test/Triangulation/CMakeLists.txt | 6 +- .../benchmark/Triangulation_3/CMakeLists.txt | 8 +- .../demo/Triangulation_3/CMakeLists.txt | 6 +- .../examples/Triangulation_3/CMakeLists.txt | 12 +-- .../test/Triangulation_3/CMakeLists.txt | 6 +- 96 files changed, 596 insertions(+), 628 deletions(-) rename Installation/cmake/modules/{CGAL_target_use_Boost_IOStreams.cmake => CGAL_Boost_iostreams_support.cmake} (54%) create mode 100644 Installation/cmake/modules/CGAL_Boost_serialization_support.cmake create mode 100644 Installation/cmake/modules/CGAL_GLPK_support.cmake create mode 100644 Installation/cmake/modules/CGAL_OpenCV_support.cmake create mode 100644 Installation/cmake/modules/CGAL_SCIP_support.cmake create mode 100644 Installation/cmake/modules/CGAL_TensorFlow_support.cmake delete mode 100644 Installation/cmake/modules/CGAL_target_use_Boost_Serialization.cmake delete mode 100644 Installation/cmake/modules/CGAL_target_use_Eigen.cmake delete mode 100644 Installation/cmake/modules/CGAL_target_use_GLPK.cmake delete mode 100644 Installation/cmake/modules/CGAL_target_use_LASLIB.cmake delete mode 100644 Installation/cmake/modules/CGAL_target_use_OpenCV.cmake delete mode 100644 Installation/cmake/modules/CGAL_target_use_OpenGR.cmake delete mode 100644 Installation/cmake/modules/CGAL_target_use_SCIP.cmake delete mode 100644 Installation/cmake/modules/CGAL_target_use_TensorFlow.cmake delete mode 100644 Installation/cmake/modules/CGAL_target_use_pointmatcher.cmake diff --git a/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt b/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt index 5ea12f55be3..9c066bd6cf4 100644 --- a/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt +++ b/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt @@ -8,15 +8,18 @@ if ( CGAL_FOUND ) # Use Eigen find_package(Eigen3 3.1.0 QUIET) #(3.1.0 or greater) + include(CGAL_Eigen_support) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) - if(NOT (${cppfile} STREQUAL "ellipsoid.cpp") OR EIGEN3_FOUND) - create_single_source_cgal_program( "${cppfile}" ) - if (EIGEN3_FOUND) - get_filename_component(target ${cppfile} NAME_WE) - CGAL_target_use_Eigen(${target}) + if(NOT (${cppfile} STREQUAL "ellipsoid.cpp") OR TARGET CGAL::Eigen_support) + get_filename_component(target ${cppfile} NAME_WE) + add_executable(${target} ${cppfile}) + if (TARGET CGAL::Eigen_support) + target_link_libraries(${target} CGAL::CGAL CGAL::Eigen_support) + else() + target_link_libraries(${target} CGAL::CGAL) endif() endif() endforeach() @@ -26,4 +29,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt b/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt index 804517aea26..5a29e19f887 100644 --- a/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt +++ b/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt @@ -14,15 +14,18 @@ if ( CGAL_FOUND ) # Use Eigen find_package(Eigen3 3.1.0 QUIET) #(3.1.0 or greater) + include(CGAL_Eigen_support) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) - if(NOT (${cppfile} STREQUAL "Approximate_min_ellipsoid_d.cpp") OR EIGEN3_FOUND) - create_single_source_cgal_program( "${cppfile}" ) - if (EIGEN3_FOUND) - get_filename_component(target ${cppfile} NAME_WE) - CGAL_target_use_Eigen(${target}) + if(NOT (${cppfile} STREQUAL "Approximate_min_ellipsoid_d.cpp") OR TARGET CGAL::Eigen_support) + get_filename_component(target ${cppfile} NAME_WE) + add_executable(${target} ${cppfile}) + if (TARGET CGAL::Eigen_support) + target_link_libraries(${target} CGAL::CGAL CGAL::Eigen_support) + else() + target_link_libraries(${target} CGAL::CGAL) endif() endif() endforeach() @@ -32,4 +35,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt b/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt index 6f4ec1704ce..de7955c4208 100644 --- a/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt +++ b/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt @@ -8,6 +8,7 @@ project( Box_intersection_d_Tests ) find_package( CGAL QUIET ) find_package( TBB ) +include(CGAL_TBB_support) if ( CGAL_FOUND ) @@ -16,12 +17,11 @@ if ( CGAL_FOUND ) create_single_source_cgal_program( "random_set_test.cpp" ) create_single_source_cgal_program( "test_box_grid.cpp" ) - if( TBB_FOUND ) - CGAL_target_use_TBB( test_box_grid ) + if(TARGET CGAL::TBB_support) + target_link_libraries(test_box_grid PUBLIC CGAL::TBB_support) else() message( STATUS "NOTICE: Intel TBB was not found. Sequential code will be used." ) endif() else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt b/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt index 18e2f342352..6e6749d8619 100644 --- a/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt +++ b/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt @@ -27,7 +27,8 @@ if ( CGAL_FOUND ) include(${CGAL_USE_FILE}) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) - if (NOT EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (NOT TARGET CGAL::Eigen_support) message(STATUS "NOTICE: This project requires the Eigen library, and will not be compiled.") return() endif() @@ -140,8 +141,7 @@ if ( CGAL_FOUND ) foreach(IPELET ${CGAL_IPELETS}) add_library(CGAL_${IPELET} MODULE ${IPELET}.cpp) add_to_cached_list(CGAL_EXECUTABLE_TARGETS CGAL_${IPELET}) - target_link_libraries(CGAL_${IPELET} PRIVATE CGAL::CGAL ${IPE_LIBRARIES}) - CGAL_target_use_Eigen(CGAL_${IPELET}) + target_link_libraries(CGAL_${IPELET} PRIVATE CGAL::CGAL CGAL::Eigen_support ${IPE_LIBRARIES}) if ( IPELET_INSTALL_DIR ) install(TARGETS CGAL_${IPELET} DESTINATION ${IPELET_INSTALL_DIR}) if (WITH_IPE_7) @@ -151,14 +151,12 @@ if ( CGAL_FOUND ) cgal_add_compilation_test(CGAL_${IPELET}) endforeach(IPELET) if(CGAL_Core_FOUND) - target_link_libraries(CGAL_cone_spanners PRIVATE CGAL::CGAL_Core) - CGAL_target_use_Eigen(CGAL_cone_spanners) + target_link_libraries(CGAL_cone_spanners PRIVATE CGAL::CGAL_Core CGAL::Eigen_support) endif() #example in doc not installed add_library(simple_triangulation MODULE simple_triangulation.cpp) add_to_cached_list(CGAL_EXECUTABLE_TARGETS simple_triangulation) - target_link_libraries(simple_triangulation ${IPE_LIBRARIES}) - CGAL_target_use_Eigen(simple_triangulation) + target_link_libraries(simple_triangulation CGAL::Eigen_support ${IPE_LIBRARIES}) cgal_add_compilation_test(simple_triangulation) else() diff --git a/Classification/examples/Classification/CMakeLists.txt b/Classification/examples/Classification/CMakeLists.txt index f2e1cf3ec61..4aea4f3ebc4 100644 --- a/Classification/examples/Classification/CMakeLists.txt +++ b/Classification/examples/Classification/CMakeLists.txt @@ -24,32 +24,39 @@ endif() set(Classification_dependencies_met TRUE) find_package( Boost OPTIONAL_COMPONENTS serialization iostreams ) -if (NOT Boost_SERIALIZATION_FOUND) +include(CGAL_Boost_serialization_support) +include(CGAL_Boost_iostreams_support) + +if (NOT TARGET CGAL::Boost_serialization_support) message(STATUS "NOTICE: This project requires Boost Serialization, and will not be compiled.") set(Classification_dependencies_met FALSE) endif() -if (NOT Boost_IOSTREAMS_FOUND) +if (NOT TARGET CGAL::Boost_iostreams_support) message(STATUS "NOTICE: This project requires Boost IO Streams, and will not be compiled.") set(Classification_dependencies_met FALSE) endif() find_package(OpenCV QUIET COMPONENTS core ml) # Need core + machine learning -if (NOT OpenCV_FOUND) +include(CGAL_OpenCV_support) +if (NOT TARGET CGAL::OpenCV_support) message(STATUS "NOTICE: OpenCV was not found. OpenCV random forest predicate for classification won't be available.") endif() find_package(TensorFlow QUIET) -if (NOT TensorFlow_FOUND) +include(CGAL_TensorFlow_support) +if (NOT TARGET CGAL::TensorFlow_support) message(STATUS "NOTICE: TensorFlow was not found. TensorFlow neural network predicate for classification won't be available.") endif() find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) -if (NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") set(Classification_dependencies_met FALSE) endif() find_package(TBB QUIET) +include(CGAL_TBB_support) if (NOT Classification_dependencies_met) return() @@ -62,14 +69,14 @@ create_single_source_cgal_program( "example_generation_and_training.cpp" ) create_single_source_cgal_program( "example_mesh_classification.cpp" ) create_single_source_cgal_program( "example_cluster_classification.cpp" ) -if (OpenCV_FOUND) +if (TARGET CGAL::OpenCV_support) create_single_source_cgal_program( "example_opencv_random_forest.cpp" ) - CGAL_target_use_OpenCV(example_opencv_random_forest) + target_link_libraries(example_opencv_random_forest PUBLIC CGAL::OpenCV_support) endif() -if (TensorFlow_FOUND) +if (TARGET CGAL::TensorFlow_support) create_single_source_cgal_program( "example_tensorflow_neural_network.cpp" ) - CGAL_target_use_TensorFlow(example_tensorflow_neural_network) + target_link_libraries(example_opencv_random_forest PUBLIC CGAL::TensorFlow_support) endif() foreach(target @@ -82,12 +89,12 @@ foreach(target example_opencv_random_forest example_tensorflow_neural_network) if(TARGET ${target}) - CGAL_target_use_Eigen(${target}) - CGAL_target_use_Boost_IOStreams(${target}) - CGAL_target_use_Boost_Serialization(${target}) - if(TBB_FOUND) - CGAL_target_use_TBB(${target}) + target_link_libraries(${target} PUBLIC + CGAL::Eigen_support + CGAL::Boost_iostreams_support + CGAL::Boost_serialization_support) + if(TARGET CGAL::TBB_support) + target_link_libraries(${target} PUBLIC CGAL::TBB_support) endif() endif() endforeach() - diff --git a/Classification/test/Classification/CMakeLists.txt b/Classification/test/Classification/CMakeLists.txt index 9dc6193801a..a93e0277355 100644 --- a/Classification/test/Classification/CMakeLists.txt +++ b/Classification/test/Classification/CMakeLists.txt @@ -24,17 +24,21 @@ endif() set(Classification_dependencies_met TRUE) find_package( Boost OPTIONAL_COMPONENTS serialization iostreams ) -if (NOT Boost_SERIALIZATION_FOUND) +include(CGAL_Boost_serialization_support) +include(CGAL_Boost_iostreams_support) + +if (NOT TARGET CGAL::Boost_serialization_support) message(STATUS "NOTICE: This project requires Boost Serialization, and will not be compiled.") set(Classification_dependencies_met FALSE) endif() -if (NOT Boost_IOSTREAMS_FOUND) +if (NOT TARGET CGAL::Boost_iostreams_support) message(STATUS "NOTICE: This project requires Boost IO Streams, and will not be compiled.") set(Classification_dependencies_met FALSE) endif() find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) -if (NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") set(Classification_dependencies_met FALSE) endif() @@ -49,11 +53,11 @@ create_single_source_cgal_program( "test_classification_point_set.cpp" ) create_single_source_cgal_program( "test_classification_io.cpp" ) foreach(target test_classification_point_set test_classification_io) - CGAL_target_use_Eigen(${target}) - CGAL_target_use_Boost_IOStreams(${target}) - CGAL_target_use_Boost_Serialization(${target}) - if(TBB_FOUND) - CGAL_target_use_TBB(${target}) + target_link_libraries(${target} PUBLIC + CGAL::Eigen_support + CGAL::Boost_iostreams_support + CGAL::Boost_serialization_support) + if(TARGET CGAL::TBB_support) + target_link_libraries(${target} PUBLIC CGAL::TBB_support) endif() endforeach() - diff --git a/Generator/examples/Generator/CMakeLists.txt b/Generator/examples/Generator/CMakeLists.txt index c5ac751d26c..fa8efe5d09a 100644 --- a/Generator/examples/Generator/CMakeLists.txt +++ b/Generator/examples/Generator/CMakeLists.txt @@ -12,17 +12,18 @@ if ( CGAL_FOUND ) # Use Eigen find_package(Eigen3 3.1.0 QUIET) #(3.1.0 or greater) + include(CGAL_Eigen_support) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) if(NOT (${cppfile} STREQUAL "random_points_in_tetrahedral_mesh_3.cpp") OR NOT (${cppfile} STREQUAL "random_points_on_tetrahedral_mesh_3.cpp") - OR EIGEN3_FOUND) + OR TARGET CGAL::Eigen_support) create_single_source_cgal_program( "${cppfile}" ) - if (EIGEN3_FOUND) + if (TARGET CGAL::Eigen_support) get_filename_component(target ${cppfile} NAME_WE) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endif() endif() endforeach() @@ -32,4 +33,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Generator/test/Generator/CMakeLists.txt b/Generator/test/Generator/CMakeLists.txt index 3f24895ab6a..a757803d15c 100644 --- a/Generator/test/Generator/CMakeLists.txt +++ b/Generator/test/Generator/CMakeLists.txt @@ -12,15 +12,16 @@ if ( CGAL_FOUND ) # Use Eigen find_package(Eigen3 3.1.0 QUIET) #(3.1.0 or greater) + include(CGAL_Eigen_support) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) - if(NOT (${cppfile} STREQUAL "generic_random_test.cpp") OR EIGEN3_FOUND) + if(NOT (${cppfile} STREQUAL "generic_random_test.cpp") OR TARGET CGAL::Eigen_support) create_single_source_cgal_program( "${cppfile}" ) - if (EIGEN3_FOUND) + if (TARGET CGAL::Eigen_support) get_filename_component(target ${cppfile} NAME_WE) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endif() endif() endforeach() @@ -30,4 +31,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/GraphicsView/demo/Polygon/CMakeLists.txt b/GraphicsView/demo/Polygon/CMakeLists.txt index 4ef96ffcf74..a38afceeedd 100644 --- a/GraphicsView/demo/Polygon/CMakeLists.txt +++ b/GraphicsView/demo/Polygon/CMakeLists.txt @@ -16,7 +16,8 @@ endif() find_package(CGAL COMPONENTS Qt5 Core) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) -if (NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "NOTICE: This project requires the Eigen library, and will not be compiled.") return() endif() @@ -46,12 +47,11 @@ if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) # The executable itself. add_executable ( Polygon_2 Polygon_2.cpp ${DT_UI_FILES} ${DT_RESOURCE_FILES} ${CGAL_Qt5_RESOURCE_FILES} ${CGAL_Qt5_MOC_FILES} ) - CGAL_target_use_Eigen(Polygon_2) add_to_cached_list( CGAL_EXECUTABLE_TARGETS Polygon_2 ) target_link_libraries( Polygon_2 PRIVATE - CGAL::CGAL CGAL::CGAL_Qt5 Qt5::Gui ) + CGAL::CGAL CGAL::CGAL_Qt5 CGAL::Eigen_support Qt5::Gui ) include(${CGAL_MODULES_DIR}/CGAL_add_test.cmake) cgal_add_compilation_test(Polygon_2) diff --git a/Heat_method_3/examples/Heat_method_3/CMakeLists.txt b/Heat_method_3/examples/Heat_method_3/CMakeLists.txt index f9703071b81..0a29731a259 100644 --- a/Heat_method_3/examples/Heat_method_3/CMakeLists.txt +++ b/Heat_method_3/examples/Heat_method_3/CMakeLists.txt @@ -33,8 +33,9 @@ endif() find_package(Eigen3 3.3.0) +include(CGAL_Eigen_support) -if (NOT EIGEN3_FOUND) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library (3.3 or greater), and will not be compiled.") return() endif() @@ -51,10 +52,10 @@ include_directories( BEFORE include ) include( CGAL_CreateSingleSourceCGALProgram ) create_single_source_cgal_program( "heat_method.cpp" ) -CGAL_target_use_Eigen(heat_method) +target_link_libraries(heat_method PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "heat_method_polyhedron.cpp" ) -CGAL_target_use_Eigen(heat_method_polyhedron) +target_link_libraries(heat_method_polyhedron PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "heat_method_surface_mesh.cpp" ) -CGAL_target_use_Eigen(heat_method_surface_mesh) +target_link_libraries(heat_method_surface_mesh PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "heat_method_surface_mesh_direct.cpp" ) -CGAL_target_use_Eigen(heat_method_surface_mesh_direct) +target_link_libraries(heat_method_surface_mesh_direct PUBLIC CGAL::Eigen_support) diff --git a/Heat_method_3/test/Heat_method_3/CMakeLists.txt b/Heat_method_3/test/Heat_method_3/CMakeLists.txt index 7876d80a53b..9a86ed7236c 100644 --- a/Heat_method_3/test/Heat_method_3/CMakeLists.txt +++ b/Heat_method_3/test/Heat_method_3/CMakeLists.txt @@ -33,8 +33,9 @@ endif() find_package(Eigen3 3.3.0) +include(CGAL_Eigen_support) -if (NOT EIGEN3_FOUND) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library (3.3 or greater), and will not be compiled.") return() endif() @@ -49,8 +50,8 @@ include_directories( BEFORE include ) include( CGAL_CreateSingleSourceCGALProgram ) create_single_source_cgal_program( "heat_method_concept.cpp" ) -CGAL_target_use_Eigen(heat_method_concept) +target_link_libraries(heat_method_concept PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "heat_method_surface_mesh_test.cpp" ) -CGAL_target_use_Eigen(heat_method_surface_mesh_test) +target_link_libraries(heat_method_surface_mesh_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "heat_method_surface_mesh_direct_test.cpp" ) -CGAL_target_use_Eigen(heat_method_surface_mesh_direct_test) +target_link_libraries(heat_method_surface_mesh_direct_test PUBLIC CGAL::Eigen_support) diff --git a/Installation/cmake/modules/CGAL_target_use_Boost_IOStreams.cmake b/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake similarity index 54% rename from Installation/cmake/modules/CGAL_target_use_Boost_IOStreams.cmake rename to Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake index d57f785d54f..49e5965662b 100644 --- a/Installation/cmake/modules/CGAL_target_use_Boost_IOStreams.cmake +++ b/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake @@ -1,39 +1,38 @@ -if (CGAL_target_use_Boost_IOStreams_included) - return() -endif() -set(CGAL_target_use_Boost_IOStreams_included TRUE) - -function(CGAL_target_use_Boost_IOStreams target) +if(Boost_IOSTREAMS_FOUND AND NOT TARGET CGAL::Boost_iostreams_support) if( WIN32 ) - # to avoid a warning with old cmake + + # to avoid a warning with old cmake set(_Boost_BZIP2_HEADERS "boost/iostreams/filter/bzip2.hpp") set(_Boost_ZLIB_HEADERS "boost/iostreams/filter/zlib.hpp") find_package( Boost OPTIONAL_COMPONENTS bzip2 zlib) - else() - find_package(ZLIB QUIET) - endif() - - if(TARGET Boost::iostreams) - target_link_libraries(${target} PUBLIC Boost::iostreams) - else() - target_link_libraries(${target} PUBLIC ${Boost_IOSTREAMS_LIBRARY}) - endif() - - if( WIN32 ) if (Boost_ZLIB_FOUND AND Boost_BZIP2_FOUND) - target_link_libraries(${target} PUBLIC ${Boost_ZLIB_LIBRARY} ${Boost_BZIP2_LIBRARY}) + set(ZLIB_LIBS ${Boost_ZLIB_LIBRARY} ${Boost_BZIP2_LIBRARY}) else() message(STATUS "NOTICE: This project requires Boost ZLIB and Boost BZIP2, and will not be compiled.") return() endif() + else() + + find_package(ZLIB QUIET) if(ZLIB_FOUND) - target_link_libraries(${target} PUBLIC ZLIB::ZLIB) + set(ZLIB_LIBS ZLIB::ZLIB) else() message(STATUS "NOTICE: This project requires ZLIB, and will not be compiled.") return() endif() + endif() -endfunction() + if(TARGET Boost::iostreams) + set(Boost_LIB Boost::iostreams) + else() + set(Boost_LIB ${Boost_IOSTREAMS_LIBRARY}) + endif() + + add_library(CGAL::Boost_iostreams_support INTERFACE IMPORTED) + set_target_properties(CGAL::Boost_iostreams_support PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_BOOST_IOSTREAMS" + INTERFACE_LINK_LIBRARIES "${Boost_LIB};${ZLIB_LIBS}") +endif() diff --git a/Installation/cmake/modules/CGAL_Boost_serialization_support.cmake b/Installation/cmake/modules/CGAL_Boost_serialization_support.cmake new file mode 100644 index 00000000000..236fbb4bf0c --- /dev/null +++ b/Installation/cmake/modules/CGAL_Boost_serialization_support.cmake @@ -0,0 +1,12 @@ +if(Boost_SERIALIZATION_FOUND AND NOT TARGET CGAL::Boost_serialization_support) + if(TARGET Boost::serialization) + set(Boost_LIB Boost::serialization) + else() + set(Boost_LIB ${Boost_SERIALIZATION_LIBRARY}) + endif() + + add_library(CGAL::Boost_serialization_support INTERFACE IMPORTED) + set_target_properties(CGAL::Boost_serialization_support PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_BOOST_SERIALIZATION" + INTERFACE_LINK_LIBRARIES "${Boost_LIB}") +endif() diff --git a/Installation/cmake/modules/CGAL_Common.cmake b/Installation/cmake/modules/CGAL_Common.cmake index 786763eb01f..ed1fe54ad0c 100644 --- a/Installation/cmake/modules/CGAL_Common.cmake +++ b/Installation/cmake/modules/CGAL_Common.cmake @@ -23,7 +23,7 @@ if( NOT CGAL_COMMON_FILE_INCLUDED ) else() set( CMAKE_2_6_3_OR_ABOVE FALSE ) endif() - + if ( CGAL_BUILDING_LIBS ) option(BUILD_SHARED_LIBS "Build shared libraries" ON) set(CGAL_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) @@ -34,7 +34,7 @@ if( NOT CGAL_COMMON_FILE_INCLUDED ) message( STATUS "Building static libraries" ) endif() endif() - + if ( WIN32 ) find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin ) if(CMAKE_UNAME) @@ -61,15 +61,4 @@ if( NOT CGAL_COMMON_FILE_INCLUDED ) # set use-file for Eigen3 (needed to have default solvers) set(EIGEN3_USE_FILE "UseEigen3") - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_Boost_IOStreams.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_Boost_Serialization.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_Eigen.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_GLPK.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_LASLIB.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_OpenCV.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_OpenGR.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_pointmatcher.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_SCIP.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_TBB.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/CGAL_target_use_TensorFlow.cmake) endif() diff --git a/Installation/cmake/modules/CGAL_Eigen_support.cmake b/Installation/cmake/modules/CGAL_Eigen_support.cmake index 31e5f22abf5..5039bd5871a 100644 --- a/Installation/cmake/modules/CGAL_Eigen_support.cmake +++ b/Installation/cmake/modules/CGAL_Eigen_support.cmake @@ -1,4 +1,4 @@ -if(Eigen_FOUND AND NOT TARGET CGAL::Eigen_support) +if(EIGEN3_FOUND AND NOT TARGET CGAL::Eigen_support) if(NOT TARGET Threads::Threads) find_package(Threads REQUIRED) endif() diff --git a/Installation/cmake/modules/CGAL_GLPK_support.cmake b/Installation/cmake/modules/CGAL_GLPK_support.cmake new file mode 100644 index 00000000000..391fdf6263f --- /dev/null +++ b/Installation/cmake/modules/CGAL_GLPK_support.cmake @@ -0,0 +1,7 @@ +if(GLPK_FOUND AND NOT TARGET CGAL::GLPK_support) + add_library(CGAL::GLPK_support INTERFACE IMPORTED) + set_target_properties(CGAL::GLPK_support PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "CGAL_USE_GLPK" + INTERFACE_INCLUDE_DIRECTORIES "${GLPK_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${GLPK_LIBRARIES}") +endif() diff --git a/Installation/cmake/modules/CGAL_OpenCV_support.cmake b/Installation/cmake/modules/CGAL_OpenCV_support.cmake new file mode 100644 index 00000000000..84b4e9dd34d --- /dev/null +++ b/Installation/cmake/modules/CGAL_OpenCV_support.cmake @@ -0,0 +1,7 @@ +if(OpenCV_FOUND AND NOT TARGET CGAL::OpenCV_support) + add_library(CGAL::OpenCV_support INTERFACE IMPORTED) + set_target_properties(CGAL::OpenCV_support PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_OPENCV" + INTERFACE_INCLUDE_DIRECTORIES "${OpenCV_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${OpenCV_LIBS}") +endif() diff --git a/Installation/cmake/modules/CGAL_SCIP_support.cmake b/Installation/cmake/modules/CGAL_SCIP_support.cmake new file mode 100644 index 00000000000..6035b6d64cd --- /dev/null +++ b/Installation/cmake/modules/CGAL_SCIP_support.cmake @@ -0,0 +1,7 @@ +if(SCIP_FOUND AND NOT TARGET CGAL::SCIP_support) + add_library(CGAL::SCIP_support INTERFACE IMPORTED) + set_target_properties(CGAL::SCIP_support PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "CGAL_USE_SCIP" + INTERFACE_INCLUDE_DIRECTORIES "${SCIP_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${SCIP_LIBRARIES}") +endif() diff --git a/Installation/cmake/modules/CGAL_TBB_support.cmake b/Installation/cmake/modules/CGAL_TBB_support.cmake index e34882e949c..372f3208578 100644 --- a/Installation/cmake/modules/CGAL_TBB_support.cmake +++ b/Installation/cmake/modules/CGAL_TBB_support.cmake @@ -6,5 +6,5 @@ if(TBB_FOUND AND NOT TARGET CGAL::TBB_support) 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") + INTERFACE_LINK_LIBRARIES "TBB::tbb;TBB::tbbmalloc;Threads::Threads") endif() diff --git a/Installation/cmake/modules/CGAL_TensorFlow_support.cmake b/Installation/cmake/modules/CGAL_TensorFlow_support.cmake new file mode 100644 index 00000000000..2a910c1257e --- /dev/null +++ b/Installation/cmake/modules/CGAL_TensorFlow_support.cmake @@ -0,0 +1,7 @@ +if(TensorFlow_FOUND AND NOT TARGET CGAL::TensorFlow_support) + add_library(CGAL::TensorFlow_support INTERFACE IMPORTED) + set_target_properties(CGAL::TensorFlow_support PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_TENSORFLOW" + INTERFACE_INCLUDE_DIRECTORIES "${TensorFlow_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${TensorFlow_LIBRARY}") +endif() diff --git a/Installation/cmake/modules/CGAL_target_use_Boost_Serialization.cmake b/Installation/cmake/modules/CGAL_target_use_Boost_Serialization.cmake deleted file mode 100644 index d6ae805efd8..00000000000 --- a/Installation/cmake/modules/CGAL_target_use_Boost_Serialization.cmake +++ /dev/null @@ -1,14 +0,0 @@ -if (CGAL_target_use_Boost_Serialization_included) - return() -endif() -set(CGAL_target_use_Boost_Serialization_included TRUE) - -function(CGAL_target_use_Boost_Serialization target) - - if(TARGET Boost::serialization) - target_link_libraries(${target} PUBLIC Boost::serialization) - else() - target_link_libraries(${target} PUBLIC ${Boost_SERIALIZATION_LIBRARY}) - endif() - -endfunction() diff --git a/Installation/cmake/modules/CGAL_target_use_Eigen.cmake b/Installation/cmake/modules/CGAL_target_use_Eigen.cmake deleted file mode 100644 index 84f9f3be721..00000000000 --- a/Installation/cmake/modules/CGAL_target_use_Eigen.cmake +++ /dev/null @@ -1,13 +0,0 @@ -if (CGAL_target_use_Eigen_included) - return() -endif() -set(CGAL_target_use_Eigen_included TRUE) - -set( Eigen3_FIND_VERSION "3.1.0") -set(EIGEN3_USE_FILE "UseEigen3") - -function(CGAL_target_use_Eigen target) - target_include_directories(${target} PUBLIC ${EIGEN3_INCLUDE_DIR}) - target_compile_options( ${target} PUBLIC -DCGAL_EIGEN3_ENABLED) -endfunction() - diff --git a/Installation/cmake/modules/CGAL_target_use_GLPK.cmake b/Installation/cmake/modules/CGAL_target_use_GLPK.cmake deleted file mode 100644 index f19bd315b16..00000000000 --- a/Installation/cmake/modules/CGAL_target_use_GLPK.cmake +++ /dev/null @@ -1,11 +0,0 @@ -if (CGAL_target_use_GLPK_included) - return() -endif() -set(CGAL_target_use_GLPK_included TRUE) - -function(CGAL_target_use_GLPK target) - target_include_directories(${target} PUBLIC ${GLPK_INCLUDE_DIR}) - target_compile_options(${target} PUBLIC -DCGAL_USE_GLPK) - target_link_libraries(${target} PUBLIC ${GLPK_LIBRARIES}) -endfunction() - diff --git a/Installation/cmake/modules/CGAL_target_use_LASLIB.cmake b/Installation/cmake/modules/CGAL_target_use_LASLIB.cmake deleted file mode 100644 index 65ad9084e5a..00000000000 --- a/Installation/cmake/modules/CGAL_target_use_LASLIB.cmake +++ /dev/null @@ -1,11 +0,0 @@ -if (CGAL_target_use_LASLIB_included) - return() -endif() -set(CGAL_target_use_LASLIB_included TRUE) - -function(CGAL_target_use_LASLIB target) - target_include_directories(${target} PUBLIC ${LASLIB_INCLUDE_DIR}) - target_include_directories(${target} PUBLIC ${LASZIP_INCLUDE_DIR}) - target_compile_options( ${target} PUBLIC -DCGAL_LINKED_WITH_LASLIB) - target_link_libraries(${target} PUBLIC ${LASLIB_LIBRARIES}) -endfunction() diff --git a/Installation/cmake/modules/CGAL_target_use_OpenCV.cmake b/Installation/cmake/modules/CGAL_target_use_OpenCV.cmake deleted file mode 100644 index d378d50aead..00000000000 --- a/Installation/cmake/modules/CGAL_target_use_OpenCV.cmake +++ /dev/null @@ -1,10 +0,0 @@ -if (CGAL_target_use_OpenCV_included) - return() -endif() -set(CGAL_target_use_OpenCV_included TRUE) - -function(CGAL_target_use_OpenCV target) - target_include_directories(${target} PUBLIC ${OpenCV_INCLUDE_DIRS}) - target_compile_options( ${target} PUBLIC -DCGAL_LINKED_WITH_OPENCV) - target_link_libraries(${target} PUBLIC ${OpenCV_LIBS}) -endfunction() diff --git a/Installation/cmake/modules/CGAL_target_use_OpenGR.cmake b/Installation/cmake/modules/CGAL_target_use_OpenGR.cmake deleted file mode 100644 index dc6044f8926..00000000000 --- a/Installation/cmake/modules/CGAL_target_use_OpenGR.cmake +++ /dev/null @@ -1,9 +0,0 @@ -if (CGAL_target_use_OpenGR_included) - return() -endif() -set(CGAL_target_use_OpenGR_included TRUE) - -function(CGAL_target_use_OpenGR target) - target_include_directories(${target} PUBLIC ${OpenGR_INCLUDE_DIR}) - target_compile_options( ${target} PUBLIC -DCGAL_LINKED_WITH_OPENGR) -endfunction() diff --git a/Installation/cmake/modules/CGAL_target_use_SCIP.cmake b/Installation/cmake/modules/CGAL_target_use_SCIP.cmake deleted file mode 100644 index 354216bb1f7..00000000000 --- a/Installation/cmake/modules/CGAL_target_use_SCIP.cmake +++ /dev/null @@ -1,11 +0,0 @@ -if (CGAL_target_use_SCIP_included) - return() -endif() -set(CGAL_target_use_SCIP_included TRUE) - -function(CGAL_target_use_SCIP target) - target_include_directories(${target} PUBLIC ${SCIP_INCLUDE_DIRS}) - target_compile_options(${target} PUBLIC -DCGAL_USE_SCIP) - target_link_libraries(${target} PUBLIC ${SCIP_LIBRARIES}) -endfunction() - diff --git a/Installation/cmake/modules/CGAL_target_use_TBB.cmake b/Installation/cmake/modules/CGAL_target_use_TBB.cmake index 76c41c4ec25..5f68060eea5 100644 --- a/Installation/cmake/modules/CGAL_target_use_TBB.cmake +++ b/Installation/cmake/modules/CGAL_target_use_TBB.cmake @@ -6,7 +6,9 @@ set(CGAL_target_use_TBB_included TRUE) set(TBB_USE_FILE "UseTBB") function(CGAL_target_use_TBB target) - if(NOT TARGET Threads::Threads) + message(DEPRECATION "This file CGAL_target_use_TBB.cmake is deprecated, and the imported target `CGAL::TBB_support` from CGAL_TBB_support.cmake should be used instead.") + if(NOT TARGET + Threads::Threads) find_package(Threads REQUIRED) endif() target_link_libraries( ${target} PUBLIC TBB::tbb TBB::tbbmalloc Threads::Threads) diff --git a/Installation/cmake/modules/CGAL_target_use_TensorFlow.cmake b/Installation/cmake/modules/CGAL_target_use_TensorFlow.cmake deleted file mode 100644 index 80bda689dab..00000000000 --- a/Installation/cmake/modules/CGAL_target_use_TensorFlow.cmake +++ /dev/null @@ -1,10 +0,0 @@ -if (CGAL_target_use_TensorFlow_included) - return() -endif() -set(CGAL_target_use_TensorFlow_included TRUE) - -function(CGAL_target_use_TensorFlow target) - target_include_directories(${target} PUBLIC ${TensorFlow_INCLUDE_DIR}) - target_compile_options( ${target} PUBLIC -DCGAL_LINKED_WITH_TENSORFLOW) - target_link_libraries(${target} PUBLIC ${TensorFlow_LIBRARU}) -endfunction() diff --git a/Installation/cmake/modules/CGAL_target_use_pointmatcher.cmake b/Installation/cmake/modules/CGAL_target_use_pointmatcher.cmake deleted file mode 100644 index 5047815a336..00000000000 --- a/Installation/cmake/modules/CGAL_target_use_pointmatcher.cmake +++ /dev/null @@ -1,10 +0,0 @@ -if (CGAL_target_use_pointmatcher_included) - return() -endif() -set(CGAL_target_use_pointmatcher_included TRUE) - -function(CGAL_target_use_pointmatcher target) - target_include_directories(${target} PUBLIC ${libpointmatcher_INCLUDE_DIR}) - target_compile_options( ${target} PUBLIC -DCGAL_LINKED_WITH_POINTMATCHER) - target_link_libraries(${target} PUBLIC ${libpointmatcher_LIBRARIES}) -endfunction() diff --git a/Installation/cmake/modules/UseTBB.cmake b/Installation/cmake/modules/UseTBB.cmake index 5a22f6f079a..a1322a2f3a6 100644 --- a/Installation/cmake/modules/UseTBB.cmake +++ b/Installation/cmake/modules/UseTBB.cmake @@ -5,4 +5,4 @@ include_directories ( ${TBB_INCLUDE_DIRS} ) link_directories( ${TBB_LIBRARY_DIRS} ) add_definitions( -DNOMINMAX -DCGAL_LINKED_WITH_TBB ) -message(DEPRECATION "This file UseTBB.cmake is deprecated, and the function `CGAL_target_use_TBB` from CGAL_target_use_TBB.cmake should be used instead.") +message(DEPRECATION "This file UseTBB.cmake is deprecated, and the imported target `CGAL::TBB_support` from CGAL_TBB_support.cmake should be used instead.") diff --git a/Installation/test/Installation/CMakeLists.txt b/Installation/test/Installation/CMakeLists.txt index cba75d0bb15..7dd169ead9f 100644 --- a/Installation/test/Installation/CMakeLists.txt +++ b/Installation/test/Installation/CMakeLists.txt @@ -48,9 +48,10 @@ if ( CGAL_FOUND ) endif() find_package( TBB QUIET ) + include(CGAL_TBB_support) create_single_source_cgal_program( "test_TBB.cpp" ) - if(TBB_FOUND) - CGAL_target_use_TBB(test_TBB) + if(TARGET CGAl::TBB_support) + target_link_libraries(test_TBB PUBLIC CGAL::TBB_support) endif() create_link_to_program(CGAL) diff --git a/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt b/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt index b52c55f79a3..74595d7724f 100644 --- a/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt +++ b/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt @@ -13,7 +13,8 @@ if ( CGAL_FOUND ) # 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) # Link with Boost.ProgramOptions (optional) find_package(Boost QUIET COMPONENTS program_options) if(Boost_PROGRAM_OPTIONS_FOUND) @@ -30,9 +31,9 @@ if ( CGAL_FOUND ) endif() create_single_source_cgal_program( "Mesh_estimation.cpp" ) - CGAL_target_use_Eigen(Mesh_estimation) + target_link_libraries(Mesh_estimation PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "Single_estimation.cpp" ) - CGAL_target_use_Eigen(Single_estimation) + target_link_libraries(Single_estimation PUBLIC CGAL::Eigen_support) else() message(STATUS "NOTICE: This program requires Eigen 3.1 (or greater) and will not be compiled.") @@ -43,4 +44,3 @@ else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt b/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt index feff5e7bb7a..2ff8f62b541 100644 --- a/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt +++ b/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt @@ -13,9 +13,10 @@ if ( CGAL_FOUND ) # 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) create_single_source_cgal_program( "blind_1pt.cpp" ) - CGAL_target_use_Eigen(blind_1pt) + target_link_libraries(blind_1pt PUBLIC CGAL::Eigen_support) else() message(STATUS "NOTICE: This program requires Eigen 3.1 (or greater) and will not be compiled.") endif() @@ -25,4 +26,3 @@ else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Mesh_3/benchmark/Mesh_3/CMakeLists.txt b/Mesh_3/benchmark/Mesh_3/CMakeLists.txt index aa4ede4ecf7..1987d458724 100644 --- a/Mesh_3/benchmark/Mesh_3/CMakeLists.txt +++ b/Mesh_3/benchmark/Mesh_3/CMakeLists.txt @@ -57,12 +57,14 @@ if ( CGAL_FOUND ) if( CGAL_ACTIVATE_CONCURRENT_MESH_3 ) add_definitions( -DCGAL_CONCURRENT_MESH_3 ) find_package( TBB REQUIRED ) + include(CGAL_TBB_support) else() option( LINK_WITH_TBB "Link with TBB anyway so we can use TBB timers for profiling" ON) if( LINK_WITH_TBB ) find_package( TBB ) + include(CGAL_TBB_support) endif( LINK_WITH_TBB ) endif() @@ -81,11 +83,11 @@ if ( CGAL_FOUND ) if ( Boost_FOUND AND Boost_VERSION GREATER 103400 ) # Compilable benchmark set (BENCHMARK_SOURCE_FILES "concurrency.cpp") - if(TBB_FOUND) - CGAL_target_use_TBB(concurrency) - endif() ADD_MSVC_PRECOMPILED_HEADER("StdAfx.h" "StdAfx.cpp" BENCHMARK_SOURCE_FILES) create_single_source_cgal_program( ${BENCHMARK_SOURCE_FILES} ) + if(TARGET CGAL::TBB_support) + target_link_libraries(concurrency PUBLIC CGAL::TBB_support) + endif() else() message(STATUS "NOTICE: This program requires Boost >= 1.34.1, and will not be compiled.") @@ -94,4 +96,3 @@ if ( CGAL_FOUND ) else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Mesh_3/examples/Mesh_3/CMakeLists.txt b/Mesh_3/examples/Mesh_3/CMakeLists.txt index 7a259ab4037..851ce574dec 100644 --- a/Mesh_3/examples/Mesh_3/CMakeLists.txt +++ b/Mesh_3/examples/Mesh_3/CMakeLists.txt @@ -34,18 +34,21 @@ if ( CGAL_FOUND ) if( CGAL_ACTIVATE_CONCURRENT_MESH_3 OR ENV{CGAL_ACTIVATE_CONCURRENT_MESH_3} ) add_definitions( -DCGAL_CONCURRENT_MESH_3 ) find_package( TBB REQUIRED ) + include(CGAL_TBB_support) else( CGAL_ACTIVATE_CONCURRENT_MESH_3 OR ENV{CGAL_ACTIVATE_CONCURRENT_MESH_3} ) option( LINK_WITH_TBB "Link with TBB anyway so we can use TBB timers for profiling" ON) if( LINK_WITH_TBB ) find_package( TBB ) + include(CGAL_TBB_support) endif( LINK_WITH_TBB ) endif() # Use Eigen find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) - if (NOT EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") return() endif() @@ -70,92 +73,91 @@ if ( CGAL_FOUND ) # Compilable examples create_single_source_cgal_program( "mesh_hybrid_mesh_domain.cpp" ) - CGAL_target_use_Eigen(mesh_hybrid_mesh_domain) + target_link_libraries(mesh_hybrid_mesh_domain PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_implicit_sphere.cpp" ) - CGAL_target_use_Eigen(mesh_implicit_sphere) + target_link_libraries(mesh_implicit_sphere PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_implicit_sphere_variable_size.cpp" ) - CGAL_target_use_Eigen(mesh_implicit_sphere_variable_size) + target_link_libraries(mesh_implicit_sphere_variable_size PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_two_implicit_spheres_with_balls.cpp" ) - CGAL_target_use_Eigen(mesh_two_implicit_spheres_with_balls) + target_link_libraries(mesh_two_implicit_spheres_with_balls PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_implicit_domains_2.cpp" "implicit_functions.cpp" ) - CGAL_target_use_Eigen(mesh_implicit_domains_2) + target_link_libraries(mesh_implicit_domains_2 PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_cubes_intersection.cpp" ) - CGAL_target_use_Eigen(mesh_cubes_intersection) + target_link_libraries(mesh_cubes_intersection PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_cubes_intersection_with_features.cpp" ) - CGAL_target_use_Eigen(mesh_cubes_intersection_with_features) + target_link_libraries(mesh_cubes_intersection_with_features PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_implicit_domains.cpp" "implicit_functions.cpp" ) - CGAL_target_use_Eigen(mesh_implicit_domains) + target_link_libraries(mesh_implicit_domains PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_polyhedral_domain.cpp" ) - CGAL_target_use_Eigen(mesh_polyhedral_domain) + target_link_libraries(mesh_polyhedral_domain PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_polyhedral_domain_sm.cpp" ) - CGAL_target_use_Eigen(mesh_polyhedral_domain_sm) + target_link_libraries(mesh_polyhedral_domain_sm PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_polyhedral_domain_with_surface_inside.cpp" ) - CGAL_target_use_Eigen(mesh_polyhedral_domain_with_surface_inside) + target_link_libraries(mesh_polyhedral_domain_with_surface_inside PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "remesh_polyhedral_surface.cpp" ) - CGAL_target_use_Eigen(remesh_polyhedral_surface) + target_link_libraries(remesh_polyhedral_surface PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "remesh_polyhedral_surface_sm.cpp" ) - CGAL_target_use_Eigen(remesh_polyhedral_surface_sm) + target_link_libraries(remesh_polyhedral_surface_sm PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_polyhedral_domain_with_features.cpp" ) - CGAL_target_use_Eigen(mesh_polyhedral_domain_with_features) + target_link_libraries(mesh_polyhedral_domain_with_features PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_polyhedral_domain_with_features_sm.cpp" ) - CGAL_target_use_Eigen(mesh_polyhedral_domain_with_features_sm) + target_link_libraries(mesh_polyhedral_domain_with_features_sm PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_polyhedral_domain_with_lipschitz_sizing.cpp" ) - CGAL_target_use_Eigen(mesh_polyhedral_domain_with_lipschitz_sizing) + target_link_libraries(mesh_polyhedral_domain_with_lipschitz_sizing PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_polyhedral_complex.cpp" ) - CGAL_target_use_Eigen(mesh_polyhedral_complex) + target_link_libraries(mesh_polyhedral_complex PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_polyhedral_complex_sm.cpp" ) - CGAL_target_use_Eigen(mesh_polyhedral_complex_sm) + target_link_libraries(mesh_polyhedral_complex_sm PUBLIC CGAL::Eigen_support) if( WITH_CGAL_ImageIO ) if( VTK_FOUND AND ("${VTK_VERSION_MAJOR}" GREATER "5" OR VTK_VERSION VERSION_GREATER 5) ) add_executable ( mesh_3D_gray_vtk_image mesh_3D_gray_vtk_image.cpp ) - CGAL_target_use_Eigen(mesh_3D_gray_vtk_image) - target_link_libraries( mesh_3D_gray_vtk_image ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES} ${VTK_LIBRARIES}) + target_link_libraries( mesh_3D_gray_vtk_image PUBLIC CGAL::Eigen_support ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES} ${VTK_LIBRARIES}) cgal_add_test( mesh_3D_gray_vtk_image ) add_to_cached_list( CGAL_EXECUTABLE_TARGETS mesh_3D_gray_vtk_image ) endif() create_single_source_cgal_program( "mesh_3D_gray_image.cpp" ) - CGAL_target_use_Eigen(mesh_3D_gray_image) + target_link_libraries(mesh_3D_gray_image PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_3D_gray_image_multiple_values.cpp" ) - CGAL_target_use_Eigen(mesh_3D_gray_image_multiple_values) + target_link_libraries(mesh_3D_gray_image_multiple_values PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_3D_image_with_features.cpp" ) - CGAL_target_use_Eigen(mesh_3D_image_with_features) + target_link_libraries(mesh_3D_image_with_features PUBLIC CGAL::Eigen_support) if( CGAL_ImageIO_USE_ZLIB ) create_single_source_cgal_program( "mesh_optimization_example.cpp" ) - CGAL_target_use_Eigen(mesh_optimization_example) + target_link_libraries(mesh_optimization_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_optimization_lloyd_example.cpp" ) - CGAL_target_use_Eigen(mesh_optimization_lloyd_example) + target_link_libraries(mesh_optimization_lloyd_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_3D_image.cpp" ) - CGAL_target_use_Eigen(mesh_3D_image) + target_link_libraries(mesh_3D_image PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_3D_image_with_custom_initialization.cpp" ) - CGAL_target_use_Eigen(mesh_3D_image_with_custom_initialization) + target_link_libraries(mesh_3D_image_with_custom_initialization PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mesh_3D_image_variable_size.cpp" ) - CGAL_target_use_Eigen(mesh_3D_image_variable_size) + target_link_libraries(mesh_3D_image_variable_size PUBLIC CGAL::Eigen_support) else() message( STATUS "NOTICE: The examples mesh_3D_image.cpp, mesh_3D_image_variable_size.cpp, mesh_optimization_example.cpp and mesh_optimization_lloyd_example.cpp need CGAL_ImageIO to be configured with ZLIB support, and will not be compiled." ) endif() @@ -167,28 +169,27 @@ if ( CGAL_FOUND ) # create_single_source_cgal_program( "mesh_polyhedral_surface_tolerance_region.cpp" ) # create_single_source_cgal_program( "mesh_polyhedral_edge_tolerance_region.cpp" ) - if(CGAL_ACTIVATE_CONCURRENT_MESH_3 AND TBB_FOUND AND TARGET ${target}) + if(CGAL_ACTIVATE_CONCURRENT_MESH_3 AND TARGET CGAL::TBB_support AND TARGET ${target}) foreach(target - mesh_3D_image_with_features - mesh_3D_image - mesh_polyhedral_domain - mesh_3D_image_with_custom_initialization - mesh_two_implicit_spheres_with_balls - mesh_optimization_lloyd_example - mesh_optimization_example - mesh_implicit_sphere - mesh_polyhedral_complex_sm - mesh_implicit_sphere_variable_size - mesh_polyhedral_domain_sm - mesh_polyhedral_domain_with_lipschitz_sizing - mesh_polyhedral_complex - mesh_polyhedral_domain_with_features - mesh_3D_image_variable_size) - CGAL_target_use_TBB(${target}) + mesh_3D_image_with_features + mesh_3D_image + mesh_polyhedral_domain + mesh_3D_image_with_custom_initialization + mesh_two_implicit_spheres_with_balls + mesh_optimization_lloyd_example + mesh_optimization_example + mesh_implicit_sphere + mesh_polyhedral_complex_sm + mesh_implicit_sphere_variable_size + mesh_polyhedral_domain_sm + mesh_polyhedral_domain_with_lipschitz_sizing + mesh_polyhedral_complex + mesh_polyhedral_domain_with_features + mesh_3D_image_variable_size) + target_link_libraries(${target} PUBLIC CGAL::TBB_support) endforeach() endif() else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Mesh_3/test/Mesh_3/CMakeLists.txt b/Mesh_3/test/Mesh_3/CMakeLists.txt index ee17ea5e154..d731e12d4e4 100644 --- a/Mesh_3/test/Mesh_3/CMakeLists.txt +++ b/Mesh_3/test/Mesh_3/CMakeLists.txt @@ -16,10 +16,12 @@ if ( CGAL_FOUND ) include( ${CGAL_USE_FILE} ) find_package( TBB QUIET ) + include(CGAL_TBB_support) # Use Eigen find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) - if (NOT EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") return() endif() @@ -91,32 +93,33 @@ if ( CGAL_FOUND ) test_mesh_polyhedral_domain_with_features_deprecated test_meshing_with_one_step.cpp) if(TARGET ${target}) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endif() endforeach() - foreach(target - test_meshing_verbose - test_meshing_polyhedron_with_features - test_meshing_utilities.h - test_meshing_implicit_function - test_meshing_3D_image - test_meshing_3D_gray_image - test_meshing_unit_tetrahedron - test_meshing_polyhedron - test_meshing_polyhedral_complex - test_mesh_capsule_var_distance_bound - test_mesh_3_issue_1554 - test_mesh_polyhedral_domain_with_features_deprecated - ) - if(TBB_FOUND AND TARGET ${target}) - CGAL_target_use_TBB(${target}) - endif() - endforeach() + if(TARGET CGAL::TBB_support) + foreach(target + test_meshing_verbose + test_meshing_polyhedron_with_features + test_meshing_utilities.h + test_meshing_implicit_function + test_meshing_3D_image + test_meshing_3D_gray_image + test_meshing_unit_tetrahedron + test_meshing_polyhedron + test_meshing_polyhedral_complex + test_mesh_capsule_var_distance_bound + test_mesh_3_issue_1554 + test_mesh_polyhedral_domain_with_features_deprecated + ) + if(TARGET ${target}) + target_link_libraries(${target} PUBLIC CGAL::TBB_support) + endif() + endforeach() + endif() else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/NewKernel_d/test/NewKernel_d/CMakeLists.txt b/NewKernel_d/test/NewKernel_d/CMakeLists.txt index e315981083a..ba586fee06d 100644 --- a/NewKernel_d/test/NewKernel_d/CMakeLists.txt +++ b/NewKernel_d/test/NewKernel_d/CMakeLists.txt @@ -17,9 +17,10 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package(Eigen3) - if (EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "Epick_d.cpp" ) - CGAL_target_use_Eigen(Epick_d) + target_link_libraries(Epick_d PUBLIC CGAL::Eigen_support) else() message(STATUS "NOTICE: This program requires the Eigen3 library, and will not be compiled.") @@ -31,4 +32,3 @@ else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Number_types/test/Number_types/CMakeLists.txt b/Number_types/test/Number_types/CMakeLists.txt index a10e4a8ee8b..52dd912d2f4 100644 --- a/Number_types/test/Number_types/CMakeLists.txt +++ b/Number_types/test/Number_types/CMakeLists.txt @@ -82,8 +82,9 @@ if ( CGAL_FOUND ) create_single_source_cgal_program( "eigen.cpp" ) find_package(Eigen3 3.2.0) #(requires 3.2.0 or greater) - if (EIGEN3_FOUND) - cgal_target_use_Eigen(eigen) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) + target_link_libraries(eigen PUBLIC CGAL::Eigen_support) endif() else( CGAL_FOUND ) diff --git a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/CMakeLists.txt b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/CMakeLists.txt index bcb9a3247c0..0b936e2c370 100644 --- a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/CMakeLists.txt +++ b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/CMakeLists.txt @@ -23,7 +23,8 @@ endif() # Use Eigen find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) -if (NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") return() endif() @@ -52,5 +53,5 @@ foreach(target mesh_implicit_shape_with_subdomains mesh_implicit_shape_with_optimizers mesh_implicit_shape_with_features) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endforeach() diff --git a/Periodic_3_mesh_3/test/Periodic_3_mesh_3/CMakeLists.txt b/Periodic_3_mesh_3/test/Periodic_3_mesh_3/CMakeLists.txt index 3a3f69e79d7..ceba5546a54 100644 --- a/Periodic_3_mesh_3/test/Periodic_3_mesh_3/CMakeLists.txt +++ b/Periodic_3_mesh_3/test/Periodic_3_mesh_3/CMakeLists.txt @@ -16,21 +16,21 @@ if ( CGAL_FOUND ) # Use Eigen find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) - if (NOT EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") return() endif() create_single_source_cgal_program( "test_implicit_shapes_bunch.cpp" ) - CGAL_target_use_Eigen(test_implicit_shapes_bunch) + target_link_libraries(test_implicit_shapes_bunch PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "test_implicit_shapes_with_features.cpp" ) - CGAL_target_use_Eigen(test_implicit_shapes_with_features) + target_link_libraries(test_implicit_shapes_with_features PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "test_triply_periodic_minimal_surfaces.cpp" ) - CGAL_target_use_Eigen(test_triply_periodic_minimal_surfaces) + target_link_libraries(test_triply_periodic_minimal_surfaces PUBLIC CGAL::Eigen_support) else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Point_set_3/examples/Point_set_3/CMakeLists.txt b/Point_set_3/examples/Point_set_3/CMakeLists.txt index 172e045e4d2..cc8a77fb8b6 100644 --- a/Point_set_3/examples/Point_set_3/CMakeLists.txt +++ b/Point_set_3/examples/Point_set_3/CMakeLists.txt @@ -44,9 +44,10 @@ set(needed_cxx_features cxx_rvalue_references cxx_variadic_templates) create_single_source_cgal_program( "point_set_read_ply.cpp" CXX_FEATURES ${needed_cxx_features} ) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) +include(CGAL_Eigen_support) if (EIGEN3_FOUND) create_single_source_cgal_program( "point_set_algo.cpp" ) - CGAL_target_use_Eigen(point_set_algo) + target_link_libraries(point_set_algo PUBLIC CGAL::Eigen_support) endif() create_single_source_cgal_program("draw_point_set_3.cpp" ) diff --git a/Point_set_processing_3/test/Point_set_processing_3/CMakeLists.txt b/Point_set_processing_3/test/Point_set_processing_3/CMakeLists.txt index f057bb7332b..33f229e2fe9 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/CMakeLists.txt +++ b/Point_set_processing_3/test/Point_set_processing_3/CMakeLists.txt @@ -27,6 +27,7 @@ if ( CGAL_FOUND ) ADD_DEFINITIONS( "-DDEBUG_TRACE" ) find_package( TBB QUIET ) + include(CGAL_TBB_support) # Executables that do *not* require Eigen create_single_source_cgal_program( "read_test.cpp" ) @@ -40,30 +41,31 @@ if ( CGAL_FOUND ) # Use Eigen find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) + include(CGAL_Eigen_support) if (EIGEN3_FOUND) # Executables that require Eigen create_single_source_cgal_program( "normal_estimation_test.cpp" ) - CGAL_target_use_Eigen(normal_estimation_test) + target_link_libraries(normal_estimation_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "hierarchy_simplification_test.cpp" ) - CGAL_target_use_Eigen(hierarchy_simplification_test) + target_link_libraries(hierarchy_simplification_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "smoothing_test.cpp" ) - CGAL_target_use_Eigen(smoothing_test) + target_link_libraries(smoothing_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vcm_plane_test.cpp" ) - CGAL_target_use_Eigen(vcm_plane_test) + target_link_libraries(vcm_plane_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vcm_all_test.cpp" ) - CGAL_target_use_Eigen(vcm_all_test) + target_link_libraries(vcm_all_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "jet_pointer_as_property_map.cpp" ) - CGAL_target_use_Eigen(jet_pointer_as_property_map) + target_link_libraries(jet_pointer_as_property_map PUBLIC CGAL::Eigen_support) else() message(STATUS "NOTICE: This program requires Eigen 3.1 (or greater) and will not be compiled.") endif() - if (TBB_FOUND) + if (TARGET CGAL::TBB_support) foreach(target analysis_test smoothing_test @@ -72,7 +74,7 @@ if ( CGAL_FOUND ) edge_aware_upsample_test normal_estimation_test) if(TARGET ${target}) - CGAL_target_use_TBB(${target}) + target_link_libraries(${target} PUBLIC CGAL::TBB_support) endif() endforeach() endif() @@ -82,4 +84,3 @@ else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/CMakeLists.txt b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/CMakeLists.txt index a7eb729ec77..b67981f06b6 100644 --- a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/CMakeLists.txt +++ b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/CMakeLists.txt @@ -23,16 +23,17 @@ if ( CGAL_FOUND ) # Find Eigen3 (requires 3.1.0 or greater) find_package(Eigen3 3.1.0) - if (EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) # Executables that require Eigen 3 create_single_source_cgal_program( "poisson_reconstruction_example.cpp" ) - CGAL_target_use_Eigen(poisson_reconstruction_example) + target_link_libraries(poisson_reconstruction_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "poisson_reconstruction.cpp" ) - CGAL_target_use_Eigen(poisson_reconstruction) + target_link_libraries(poisson_reconstruction PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "poisson_reconstruction_function.cpp" ) - CGAL_target_use_Eigen(poisson_reconstruction_function) + target_link_libraries(poisson_reconstruction_function PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "tutorial_example.cpp" ) - CGAL_target_use_Eigen(tutorial_example) + target_link_libraries(tutorial_example PUBLIC CGAL::Eigen_support) else() message(STATUS "NOTICE: The examples need Eigen 3.1 (or greater) will not be compiled.") endif() @@ -43,4 +44,3 @@ else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/CMakeLists.txt b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/CMakeLists.txt index 1c518a1267b..b8cb454be73 100644 --- a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/CMakeLists.txt +++ b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/CMakeLists.txt @@ -24,10 +24,11 @@ if ( CGAL_FOUND ) # Temporary debugging stuff find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) - if(EIGEN3_FOUND) + include(CGAL_Eigen_support) + if(TARGET CGAL::Eigen_support) # Executables that require Eigen 3.1 create_single_source_cgal_program( "poisson_reconstruction_test.cpp" ) - CGAL_target_use_Eigen(poisson_reconstruction_test) + target_link_libraries(poisson_reconstruction_test PUBLIC CGAL::Eigen_support) else() message(STATUS "NOTICE: Some of the executables in this directory need Eigen 3.1 (or greater) and will not be compiled.") @@ -39,4 +40,3 @@ else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/CMakeLists.txt b/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/CMakeLists.txt index 33c8b074104..008b892cd43 100644 --- a/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/CMakeLists.txt +++ b/Polygon_mesh_processing/benchmark/Polygon_mesh_processing/CMakeLists.txt @@ -29,6 +29,7 @@ endif() # include for local package find_package(Eigen3 3.2.0) #(requires 3.2.0 or greater) +include(CGAL_Eigen_support) # Creating entries for all .cpp/.C files with "main" routine # ########################################################## @@ -37,8 +38,7 @@ create_single_source_cgal_program( "polygon_mesh_slicer.cpp" ) create_single_source_cgal_program( "hole_filling.cpp" ) -if (EIGEN3_FOUND) - CGAL_target_use_Eigen(polygon_mesh_slicer) - CGAL_target_use_Eigen(hole_filling) +if (TARGET CGAL::Eigen_support) + target_link_libraries(polygon_mesh_slicer PUBLIC CGAL::Eigen_support) + target_link_libraries(hole_filling PUBLIC CGAL::Eigen_support) endif() - diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt b/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt index 151f4fe333c..46a7f04d886 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt @@ -38,6 +38,7 @@ endif() # include for local package find_package(Eigen3 3.2.0) #(requires 3.2.0 or greater) +include(CGAL_Eigen_support) # Creating entries for all .cpp/.C files with "main" routine @@ -45,18 +46,18 @@ find_package(Eigen3 3.2.0) #(requires 3.2.0 or greater) create_single_source_cgal_program( "hausdorff_distance_remeshing_example.cpp") -if (EIGEN3_FOUND) +if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "hole_filling_example.cpp" ) - CGAL_target_use_Eigen(hole_filling_example) + target_link_libraries(hole_filling_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "hole_filling_example_SM.cpp" ) - CGAL_target_use_Eigen(hole_filling_example_SM) + target_link_libraries(hole_filling_example_SM PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "refine_fair_example.cpp") - CGAL_target_use_Eigen(refine_fair_example) + target_link_libraries(refine_fair_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "shape_smoothing_example.cpp") - CGAL_target_use_Eigen(shape_smoothing_example) + target_link_libraries(shape_smoothing_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "hole_filling_example_LCC.cpp" ) - CGAL_target_use_Eigen(hole_filling_example_LCC) -endif(EIGEN3_FOUND) + target_link_libraries(hole_filling_example_LCC PUBLIC CGAL::Eigen_support) +endif() create_single_source_cgal_program( "self_intersections_example.cpp" ) create_single_source_cgal_program( "stitch_borders_example.cpp" ) @@ -98,10 +99,9 @@ if(OpenMesh_FOUND) create_single_source_cgal_program( "compute_normals_example_OM.cpp" ) target_link_libraries( compute_normals_example_OM PRIVATE ${OPENMESH_LIBRARIES} ) -if (EIGEN3_FOUND) +if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "hole_filling_example_OM.cpp" ) - target_link_libraries( hole_filling_example_OM PRIVATE ${OPENMESH_LIBRARIES} ) - CGAL_target_use_Eigen( hole_filling_example_OM ) + target_link_libraries( hole_filling_example_OM PRIVATE CGAL::Eigen_support ${OPENMESH_LIBRARIES} ) endif() create_single_source_cgal_program( "point_inside_example_OM.cpp") @@ -118,9 +118,10 @@ target_link_libraries( triangulate_faces_example_OM PRIVATE ${OPENMESH_LIBRARIES endif(OpenMesh_FOUND) find_package( TBB ) -if( TBB_FOUND ) - CGAL_target_use_TBB(self_intersections_example) - CGAL_target_use_TBB(hausdorff_distance_remeshing_example) +include(CGAL_TBB_support) +if( TARGET CGAL::TBB_support ) + target_link_libraries(self_intersections_example PUBLIC CGAL::TBB_support) + target_link_libraries(hausdorff_distance_remeshing_example PUBLIC CGAL::TBB_support) else() message( STATUS "NOTICE: Intel TBB was not found. Sequential code will be used." ) endif() diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt b/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt index f18ccb8bd61..214d55114f2 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt @@ -31,22 +31,24 @@ endif() # include for local package find_package(Eigen3 3.2.0) #(requires 3.2.0 or greater) +include(CGAL_Eigen_support) find_package( TBB ) +include(CGAL_TBB_support) -if (EIGEN3_FOUND) +if (TARGET CGAL::Eigen_support) # Creating entries for all .cpp/.C files with "main" routine # ########################################################## create_single_source_cgal_program("fairing_test.cpp") - CGAL_target_use_Eigen(fairing_test) + target_link_libraries(fairing_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program("triangulate_hole_Polyhedron_3_no_delaunay_test.cpp" ) - CGAL_target_use_Eigen(triangulate_hole_Polyhedron_3_no_delaunay_test) + target_link_libraries(triangulate_hole_Polyhedron_3_no_delaunay_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program("triangulate_hole_Polyhedron_3_test.cpp") - CGAL_target_use_Eigen(triangulate_hole_Polyhedron_3_test) + target_link_libraries(triangulate_hole_Polyhedron_3_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program("test_shape_smoothing.cpp") - CGAL_target_use_Eigen(test_shape_smoothing) + target_link_libraries(test_shape_smoothing PUBLIC CGAL::Eigen_support) -endif(EIGEN3_FOUND) +endif() find_package( OpenMesh QUIET ) if ( OpenMesh_FOUND ) @@ -103,11 +105,10 @@ endif() create_single_source_cgal_program("test_remove_caps_needles.cpp") # create_single_source_cgal_program("test_pmp_repair_self_intersections.cpp") - if( TBB_FOUND ) - include(CGAL_target_use_TBB) - CGAL_target_use_TBB(test_pmp_distance) - CGAL_target_use_TBB(orient_polygon_soup_test) - CGAL_target_use_TBB(self_intersection_surface_mesh_test) + if( TARGET CGAL::TBB_support ) + target_link_libraries(test_pmp_distance PUBLIC CGAL::TBB_support) + target_link_libraries(orient_polygon_soup_test PUBLIC CGAL::TBB_support) + target_link_libraries(self_intersection_surface_mesh_test PUBLIC CGAL::TBB_support) else() message( STATUS "NOTICE: Intel TBB was not found. test_pmp_distance will use sequential code." ) endif() diff --git a/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/CMakeLists.txt b/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/CMakeLists.txt index 5fd39e6bcc1..68eec9daba7 100644 --- a/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/CMakeLists.txt +++ b/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/CMakeLists.txt @@ -37,15 +37,18 @@ endif() include( CGAL_CreateSingleSourceCGALProgram ) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) -if(NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if(NOT TARGET CGAL::Eigen_support) message(STATUS "NOTICE: This project requires Eigen 3.1 (or greater) and will not be compiled.") return() endif() find_package(SCIP QUIET) -if (NOT SCIP_FOUND ) +include(CGAL_SCIP_support) +if (NOT TARGET CGAL::SCIP_support ) find_package( GLPK QUIET) - if ( NOT GLPK_FOUND ) + include(CGAL_GLPK_support) + if (NOT TARGET CGAL::GLPK_support ) message( STATUS "NOTICE: This project requires either SCIP or GLPK, and will not be compiled.") return() endif() @@ -61,10 +64,10 @@ foreach(target polyfit_example_user_provided_planes polyfit_example_model_complexty_control polyfit_example_with_region_growing) - CGAL_target_use_Eigen(${target}) - if (SCIP_FOUND) - CGAL_target_use_SCIP(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) + if (TARGET CGAL::SCIP_support) + target_link_libraries(${target} PUBLIC CGAL::SCIP_support) else() - CGAL_target_use_GLPK(${target}) + target_link_libraries(${target} PUBLIC CGAL::GLPK_support) endif() endforeach() diff --git a/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/CMakeLists.txt b/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/CMakeLists.txt index fb12c54a420..7ce3ba34320 100644 --- a/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/CMakeLists.txt +++ b/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/CMakeLists.txt @@ -38,24 +38,27 @@ include( CGAL_CreateSingleSourceCGALProgram ) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) -if(NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if(NOT TARGET CGAL::Eigen_support) message(STATUS "NOTICE: This project requires Eigen 3.1 (or greater) and will not be compiled.") return() endif() find_package(SCIP QUIET) -if (NOT SCIP_FOUND ) +include(CGAL_SCIP_support) +if (NOT TARGET CGAL::SCIP_support ) find_package( GLPK QUIET) - if ( NOT GLPK_FOUND ) - message( STATUS "NOTICE : This project requires either SCIP or GLPK, and will not be compiled.") + include(CGAL_GLPK_support) + if (NOT TARGET CGAL::GLPK_support ) + message( STATUS "NOTICE: This project requires either SCIP or GLPK, and will not be compiled.") return() endif() endif() create_single_source_cgal_program( "polygonal_surface_reconstruction_test.cpp") -CGAL_target_use_Eigen(polygonal_surface_reconstruction_test) -if (SCIP_FOUND) - CGAL_target_use_SCIP(polygonal_surface_reconstruction_test) +target_link_libraries(polygonal_surface_reconstruction_test PUBLIC CGAL::Eigen_support) +if (TARGET CGAL::SCIP_support) + target_link_libraries(polygonal_surface_reconstruction_test PUBLIC CGAL::SCIP_support) else() - CGAL_target_use_GLPK(polygonal_surface_reconstruction_test) + target_link_libraries(polygonal_surface_reconstruction_test PUBLIC CGAL::GLPK_support) endif() diff --git a/Polyhedron/demo/Polyhedron/CMakeLists.txt b/Polyhedron/demo/Polyhedron/CMakeLists.txt index 9e00808a516..d6914d1aa07 100644 --- a/Polyhedron/demo/Polyhedron/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/CMakeLists.txt @@ -73,6 +73,7 @@ if(Qt5_FOUND) endif(Qt5_FOUND) find_package(Eigen3 3.2.0) #(requires 3.2.0 or greater) +include(CGAL_Eigen_support) find_package( METIS ) @@ -87,7 +88,8 @@ option(POLYHEDRON_DEMO_ACTIVATE_CONCURRENCY if( POLYHEDRON_DEMO_ACTIVATE_CONCURRENCY ) find_package( TBB ) - if( NOT TBB_FOUND ) + include(CGAL_TBB_support) + if( NOT TARGET CGAL::TBB_support ) message( STATUS "NOTICE: Intel TBB was not found. Bilateral smoothing and WLOP plugins are faster if TBB is linked." ) endif() endif() @@ -108,7 +110,8 @@ if( CGAL_ACTIVATE_CONCURRENT_MESH_3 OR ENV{CGAL_ACTIVATE_CONCURRENT_MESH_3} ) add_definitions( -DCGAL_CONCURRENT_MESH_3 ) if(NOT TBB_FOUND) find_package( TBB REQUIRED ) - if( NOT TBB_FOUND ) + include( CGAL_TBB_support) + if( NOT TARGET CGAL::TBB_support ) message(STATUS "NOTICE: Intel TBB was not found. Mesh_3 is faster if TBB is linked.") endif() endif() @@ -119,6 +122,7 @@ else( CGAL_ACTIVATE_CONCURRENT_MESH_3 OR ENV{CGAL_ACTIVATE_CONCURRENT_MESH_3} ) ON) if( LINK_WITH_TBB ) find_package( TBB ) + include( CGAL_TBB_support) endif( LINK_WITH_TBB ) endif() @@ -248,8 +252,8 @@ if(CGAL_Qt5_FOUND AND Qt5_FOUND) add_item(scene_c3t3_item Scene_c3t3_item.cpp) target_link_libraries(scene_c3t3_item PUBLIC scene_surface_mesh_item scene_polygon_soup_item scene_basic_objects ${TBB_LIBRARIES}) - if(TBB_FOUND) - CGAL_target_use_TBB(scene_c3t3_item) + if(TARGET CGAL::TBB_support) + target_link_libraries(scene_c3t3_item PUBLIC CGAL::TBB_support) endif() if(COMMAND target_precompile_headers) # Support for precompiled headers, for Mesh_3 (since CMake 3.16) @@ -261,7 +265,7 @@ if(CGAL_Qt5_FOUND AND Qt5_FOUND) add_item(scene_surface_mesh_item Scene_surface_mesh_item.cpp) if(TBB_FOUND) - CGAL_target_use_TBB(scene_surface_mesh_item) + target_link_libraries(scene_surface_mesh_item PUBLIC CGAL::TBB_support) endif() # special @@ -274,7 +278,7 @@ if(CGAL_Qt5_FOUND AND Qt5_FOUND) add_item(scene_selection_item Scene_polyhedron_selection_item.cpp) target_link_libraries(scene_selection_item PUBLIC scene_item_decorator scene_k_ring_selection) if(TBB_FOUND) - CGAL_target_use_TBB(scene_selection_item) + target_link_libraries(scene_selection_item PUBLIC CGAL::TBB_support) endif() add_item(scene_shortest_path_item Plugins/Surface_mesh/Scene_polyhedron_shortest_path_item.cpp) @@ -282,17 +286,16 @@ if(CGAL_Qt5_FOUND AND Qt5_FOUND) add_item(scene_movable_sm_item Plugins/AABB_tree/Scene_movable_sm_item.cpp) - if(EIGEN3_FOUND ) + if(TARGET CGAL::Eigen_support ) add_item(scene_textured_item Scene_textured_surface_mesh_item.cpp texture.cpp) - CGAL_target_use_Eigen(scene_textured_item) + target_link_libraries(scene_textured_item PUBLIC CGAL::Eigen_support) qt5_wrap_ui( editionUI_FILES Plugins/Surface_mesh_deformation/Deform_mesh.ui ) add_item(scene_edit_item Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.cpp ${editionUI_FILES}) - CGAL_target_use_Eigen(scene_edit_item) - target_link_libraries(scene_edit_item PUBLIC scene_surface_mesh_item scene_k_ring_selection + target_link_libraries(scene_edit_item PUBLIC CGAL::Eigen_support scene_surface_mesh_item scene_k_ring_selection scene_basic_objects) add_item(scene_mcf_item Plugins/PMP/Scene_mcf_item.cpp) - CGAL_target_use_Eigen(scene_mcf_item) + target_link_libraries(scene_mcf_item PUBLIC CGAL::Eigen_support) endif() add_item(scene_implicit_function_item Scene_implicit_function_item.cpp ) @@ -305,20 +308,21 @@ if(CGAL_Qt5_FOUND AND Qt5_FOUND) target_link_libraries(scene_nef_polyhedron_item PUBLIC scene_surface_mesh_item) add_item(scene_points_with_normal_item Scene_points_with_normal_item.cpp) - if (EIGEN3_FOUND) - CGAL_target_use_Eigen(scene_points_with_normal_item) + if (TARGET CGAL::Eigen_support) + target_link_libraries(scene_points_with_normal_item PUBLIC CGAL::Eigen_support) endif() find_package(LASLIB) - if (LASLIB_FOUND) - CGAL_target_use_LASLIB(scene_points_with_normal_item) + include(CGAL_LASLIB_support) + if (TARGET CGAL::LASLIB_support) + target_link_libraries(scene_points_with_normal_item PUBLIC CGAL::LASLIB_support) if (MSVC) target_compile_definitions( scene_points_with_normal_item PUBLIC "-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS") endif() endif() if(TBB_FOUND) - CGAL_target_use_TBB(scene_points_with_normal_item) + target_link_libraries(scene_points_with_normal_item PUBLIC CGAL::TBB_support) endif() add_item(scene_polylines_item Scene_polylines_item.cpp) diff --git a/Polyhedron/demo/Polyhedron/Plugins/AABB_tree/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/AABB_tree/CMakeLists.txt index bff0df4c9a1..1336c086cd7 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/AABB_tree/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/AABB_tree/CMakeLists.txt @@ -5,6 +5,6 @@ target_link_libraries(do_trees_intersect_plugin PUBLIC scene_surface_mesh_item s polyhedron_demo_plugin(cut_plugin Cut_plugin ) target_link_libraries(cut_plugin PUBLIC scene_surface_mesh_item scene_basic_objects scene_color_ramp) -if(TBB_FOUND) - CGAL_target_use_TBB(cut_plugin) +if(TARGET CGAL::TBB_support) + target_link_libraries(cut_plugin PUBLIC CGAL::TBB_support) endif() diff --git a/Polyhedron/demo/Polyhedron/Plugins/Classification/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Classification/CMakeLists.txt index b4a49753ce2..288c22109ff 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Classification/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Classification/CMakeLists.txt @@ -1,54 +1,61 @@ include( polyhedron_demo_macros ) -if(EIGEN3_FOUND) +if(TARGET CGAL::Eigen_support) set(Classification_dependencies_met TRUE) find_package( Boost OPTIONAL_COMPONENTS serialization iostreams ) - if (NOT Boost_SERIALIZATION_FOUND) + include(CGAL_Boost_serialization_support) + include(CGAL_Boost_iostreams_support) + if (NOT TARGET CGAL::Boost_serialization_support) message(STATUS "NOTICE: Boost Serialization not found. Classification plugin won't be available.") set(Classification_dependencies_met FALSE) endif() - if (NOT Boost_IOSTREAMS_FOUND) + if (NOT TARGET CGAL::Boost_iostreams_support) message(STATUS "NOTICE: Boost IOStreams not found. Classification plugin won't be available.") set(Classification_dependencies_met FALSE) endif() find_package(OpenCV QUIET COMPONENTS core ml) # Need core + machine learning - if (NOT OpenCV_FOUND) + include(CGAL_OpenCV_support) + if (NOT TARGET CGAL::OpenCV_support) message(STATUS "NOTICE: OpenCV was not found. OpenCV random forest predicate for classification won't be available.") endif() find_package(TensorFlow QUIET) - if (NOT TensorFlow_FOUND) + include(CGAL_TensorFlow_support) + if (NOT TARGET CGAL::TensorFlow_support) message(STATUS "NOTICE: TensorFlow not found, Neural Network predicate for classification won't be available.") endif() if (Classification_dependencies_met) qt5_wrap_ui( classificationUI_FILES Classification_widget.ui Classification_advanced_widget.ui ) polyhedron_demo_plugin(classification_plugin Classification_plugin Point_set_item_classification Cluster_classification Surface_mesh_item_classification ${classificationUI_FILES} KEYWORDS Classification) - target_link_libraries(classification_plugin PUBLIC scene_points_with_normal_item - scene_polylines_item scene_polygon_soup_item scene_surface_mesh_item scene_selection_item scene_color_ramp) + target_link_libraries(classification_plugin PUBLIC + scene_points_with_normal_item + scene_polylines_item + scene_polygon_soup_item + scene_surface_mesh_item + scene_selection_item + scene_color_ramp + CGAL::Eigen_support + CGAL::Boost_serialization_support + CGAL::Boost_iostreams_support) - CGAL_target_use_Eigen(classification_plugin) - CGAL_target_use_Boost_IOStreams(classification_plugin) - CGAL_target_use_Boost_Serialization(classification_plugin) if(OpenCV_FOUND) - CGAL_target_use_OpenCV(classification_plugin) + target_link_libraries(classification_plugin PUBLIC CGAL::OpenCV_support) endif() if(TensorFlow_FOUND) - CGAL_target_use_TensorFlow(classification_plugin) + target_link_libraries(classification_plugin PUBLIC CGAL::TensorFlow_support) endif() if(TBB_FOUND) - CGAL_target_use_TBB(classification_plugin) + target_link_libraries(classification_plugin PUBLIC CGAL::TBB_support) endif() add_dependencies(classification_plugin point_set_selection_plugin selection_plugin) endif() -else(EIGEN3_FOUND) +else() message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. Classification plugin will not be available.") endif() - - diff --git a/Polyhedron/demo/Polyhedron/Plugins/Display/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Display/CMakeLists.txt index c783cd751ac..0f03d24021e 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Display/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Display/CMakeLists.txt @@ -1,7 +1,6 @@ include( polyhedron_demo_macros ) -if(EIGEN3_FOUND) +if(TARGET CGAL::Eigen_support) qt5_wrap_ui( display_propertyUI_FILES Display_property.ui ) polyhedron_demo_plugin(display_property_plugin Display_property_plugin ${display_propertyUI_FILES}) - target_link_libraries(display_property_plugin PUBLIC scene_surface_mesh_item scene_points_with_normal_item scene_color_ramp) - CGAL_target_use_Eigen(display_property_plugin) -endif(EIGEN3_FOUND) + target_link_libraries(display_property_plugin PUBLIC scene_surface_mesh_item scene_points_with_normal_item scene_color_ramp CGAL::Eigen_support) +endif() diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/IO/CMakeLists.txt index c5c5f52ccd8..753eb232b22 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/CMakeLists.txt @@ -69,11 +69,10 @@ else() target_link_libraries(ply_plugin PUBLIC scene_points_with_normal_item scene_polygon_soup_item scene_surface_mesh_item scene_textured_item) target_compile_features(ply_plugin PRIVATE ${needed_cxx_features}) - if (LASLIB_FOUND) + if (TARGET CGAL::LASLIB_support) polyhedron_demo_plugin(las_plugin LAS_io_plugin KEYWORDS IO PointSetProcessing Classification) - target_link_libraries(las_plugin PUBLIC scene_points_with_normal_item) + target_link_libraries(las_plugin PUBLIC scene_points_with_normal_item CGAL::LASLIB_support) target_compile_features(las_plugin PRIVATE ${needed_cxx_features}) - CGAL_target_use_LASLIB(las_plugin) else() message(STATUS "NOTICE : the LAS IO plugin needs LAS libraries and will not be compiled.") endif() diff --git a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/CMakeLists.txt index 8f1468406ac..a4e6ac600e2 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/CMakeLists.txt @@ -54,9 +54,10 @@ target_link_libraries(mesh_3_optimization_plugin PUBLIC scene_c3t3_item scene_su # Use Eigen find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) + include(CGAL_Eigen_support) - if (EIGEN3_FOUND) - CGAL_target_use_Eigen(mesh_3_optimization_plugin) + if (TARGET CGAL::Eigen_support) + target_link_libraries(mesh_3_optimization_plugin PUBLIC CGAL::Eigen_support) else() #eigen message(STATUS "The Mesh_3_optimization_plugin requires Eigen, which was not found, and will use a deprecated class to replace it. Warnings are to be expected.") endif()#eigen @@ -69,8 +70,8 @@ polyhedron_demo_plugin(c3t3_rib_exporter_plugin C3t3_rib_exporter_plugin ${ribUI target_link_libraries(c3t3_rib_exporter_plugin PUBLIC scene_c3t3_item) if(TBB_FOUND) - CGAL_target_use_TBB(mesh_3_plugin) - CGAL_target_use_TBB(mesh_3_optimization_plugin) - CGAL_target_use_TBB(c3t3_io_plugin) - CGAL_target_use_TBB(c3t3_rib_exporter_plugin) + target_link_libraries(mesh_3_plugin PUBLIC CGAL::TBB_support) + target_link_libraries(mesh_3_optimization_plugin PUBLIC CGAL::TBB_support) + target_link_libraries(c3t3_io_plugin PUBLIC CGAL::TBB_support) + target_link_libraries(c3t3_rib_exporter_plugin PUBLIC CGAL::TBB_support) endif() diff --git a/Polyhedron/demo/Polyhedron/Plugins/PMP/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/PMP/CMakeLists.txt index f5380d67133..56d43cccef3 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PMP/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/PMP/CMakeLists.txt @@ -1,33 +1,29 @@ include( polyhedron_demo_macros ) -if(EIGEN3_FOUND) +if(TARGET CGAL::Eigen_support) polyhedron_demo_plugin(jet_fitting_plugin Jet_fitting_plugin) - target_link_libraries(jet_fitting_plugin PUBLIC scene_surface_mesh_item scene_polylines_item) - CGAL_target_use_Eigen(jet_fitting_plugin) + target_link_libraries(jet_fitting_plugin PUBLIC scene_surface_mesh_item scene_polylines_item CGAL::Eigen_support) -else(EIGEN3_FOUND) +else() message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. Jet fitting plugin will not be available.") -endif(EIGEN3_FOUND) +endif() polyhedron_demo_plugin(extrude_plugin Extrude_plugin KEYWORDS PMP) target_link_libraries(extrude_plugin PUBLIC scene_surface_mesh_item scene_selection_item) -if(EIGEN3_FOUND) +if(TARGET CGAL::Eigen_support) if("${EIGEN3_VERSION}" VERSION_GREATER "3.1.90") qt5_wrap_ui( hole_fillingUI_FILES Hole_filling_widget.ui) polyhedron_demo_plugin(hole_filling_plugin Hole_filling_plugin ${hole_fillingUI_FILES} KEYWORDS PMP) - target_link_libraries(hole_filling_plugin PUBLIC scene_surface_mesh_item scene_polylines_item scene_selection_item) - CGAL_target_use_Eigen(hole_filling_plugin) + target_link_libraries(hole_filling_plugin PUBLIC scene_surface_mesh_item scene_polylines_item scene_selection_item CGAL::Eigen_support) qt5_wrap_ui( fairingUI_FILES Fairing_widget.ui) polyhedron_demo_plugin(fairing_plugin Fairing_plugin ${fairingUI_FILES} KEYWORDS PMP) - target_link_libraries(fairing_plugin PUBLIC scene_selection_item) - CGAL_target_use_Eigen(fairing_plugin) + target_link_libraries(fairing_plugin PUBLIC scene_selection_item CGAL::Eigen_support) polyhedron_demo_plugin(hole_filling_polyline_plugin Hole_filling_polyline_plugin ) - target_link_libraries(hole_filling_polyline_plugin PUBLIC scene_surface_mesh_item scene_polylines_item) - CGAL_target_use_Eigen(hole_filling_polyline_plugin) + target_link_libraries(hole_filling_polyline_plugin PUBLIC scene_surface_mesh_item scene_polylines_item CGAL::Eigen_support) qt5_wrap_ui( Mean_curvature_flow_skeleton_pluginUI_FILES Mean_curvature_flow_skeleton_plugin.ui) polyhedron_demo_plugin(mean_curvature_flow_skeleton_plugin Mean_curvature_flow_skeleton_plugin ${Mean_curvature_flow_skeleton_pluginUI_FILES}) @@ -37,20 +33,19 @@ if(EIGEN3_FOUND) scene_points_with_normal_item scene_polylines_item scene_mcf_item - demo_framework) - CGAL_target_use_Eigen(mean_curvature_flow_skeleton_plugin) + demo_framework + CGAL::Eigen_support) # The smoothing plugin can still do some things, even if Ceres is not found qt5_wrap_ui( smoothingUI_FILES Smoothing_plugin.ui) polyhedron_demo_plugin(smoothing_plugin Smoothing_plugin ${smoothingUI_FILES}) - target_link_libraries(smoothing_plugin PUBLIC scene_surface_mesh_item scene_selection_item) - CGAL_target_use_Eigen(smoothing_plugin) + target_link_libraries(smoothing_plugin PUBLIC scene_surface_mesh_item scene_selection_item CGAL::Eigen_support) find_package(Ceres QUIET) if(TARGET ceres) target_compile_definitions( smoothing_plugin PRIVATE CGAL_PMP_USE_CERES_SOLVER ) target_link_libraries(smoothing_plugin PUBLIC ceres) endif() - CGAL_target_use_Eigen(extrude_plugin) + target_link_libraries(extrude_plugin PUBLIC CGAL::Eigen_support) else() message(STATUS "NOTICE: The hole filling and fairing plugins require Eigen 3.2 (or higher) and will not be available.") endif() @@ -106,17 +101,16 @@ qt5_wrap_ui( isotropicRemeshingUI_FILES Isotropic_remeshing_dialog.ui) polyhedron_demo_plugin(isotropic_remeshing_plugin Isotropic_remeshing_plugin ${isotropicRemeshingUI_FILES} KEYWORDS PMP) target_link_libraries(isotropic_remeshing_plugin PUBLIC scene_surface_mesh_item scene_selection_item) -if(TBB_FOUND) - CGAL_target_use_TBB(isotropic_remeshing_plugin) +if(TARGET CGAL::TBB_support) + target_link_libraries(isotropic_remeshing_plugin PUBLIC CGAL::TBB_support) endif() polyhedron_demo_plugin(distance_plugin Distance_plugin KEYWORDS PMP) target_link_libraries(distance_plugin PUBLIC scene_surface_mesh_item scene_color_ramp) -if(TBB_FOUND) - CGAL_target_use_TBB(distance_plugin) +if(TARGET CGAL::TBB_support) + target_link_libraries(distance_plugin PUBLIC CGAL::TBB_support) endif() - polyhedron_demo_plugin(detect_sharp_edges_plugin Detect_sharp_edges_plugin KEYWORDS IO Mesh_3 PMP) target_link_libraries(detect_sharp_edges_plugin PUBLIC scene_surface_mesh_item) @@ -130,4 +124,3 @@ target_link_libraries(degenerated_faces_plugin PUBLIC scene_surface_mesh_item sc qt5_wrap_ui( engravUI_FILES Engrave_dock_widget.ui ) polyhedron_demo_plugin(engrave_text_plugin Engrave_text_plugin ${engravUI_FILES}) target_link_libraries(engrave_text_plugin PUBLIC scene_surface_mesh_item scene_selection_item scene_polylines_item) - diff --git a/Polyhedron/demo/Polyhedron/Plugins/Point_set/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Point_set/CMakeLists.txt index eaf6ddfaf9f..63dd314cd54 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Point_set/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Point_set/CMakeLists.txt @@ -1,60 +1,59 @@ include( polyhedron_demo_macros ) -if(EIGEN3_FOUND) +if(TARGET CGAL::Eigen_support) find_package(SCIP QUIET) - if(NOT SCIP_FOUND) + include(CGAL_SCIP_support) + if(NOT TARGET CGAL::SCIP_support) find_package(GLPK QUIET) + include(CGAL_GLPK_support) endif() - if(NOT SCIP_FOUND AND NOT GLPK_FOUND) + if(NOT TARGET CGAL::SCIP_support AND NOT TARGET CGAL::GLPK_support) message(STATUS "NOTICE: SCIP and GLPK were not found. Polygonal surface reconstruction will not be available.") endif() qt5_wrap_ui( surface_reconstructionUI_FILES Surface_reconstruction_plugin.ui) polyhedron_demo_plugin(surface_reconstruction_plugin Surface_reconstruction_plugin Surface_reconstruction_poisson_impl Surface_reconstruction_advancing_front_impl Surface_reconstruction_scale_space_impl Surface_reconstruction_polygonal_impl ${surface_reconstructionUI_FILES} KEYWORDS PointSetProcessing) - target_link_libraries(surface_reconstruction_plugin PUBLIC scene_polygon_soup_item scene_surface_mesh_item scene_points_with_normal_item) - CGAL_target_use_Eigen(surface_reconstruction_plugin) + target_link_libraries(surface_reconstruction_plugin PUBLIC scene_polygon_soup_item scene_surface_mesh_item scene_points_with_normal_item CGAL::Eigen_support) - if (SCIP_FOUND) - CGAL_target_use_SCIP(surface_reconstruction_plugin) - elseif(GLPK_FOUND) - CGAL_target_use_GLPK(surface_reconstruction_plugin) + if (TARGET CGAL::SCIP_support) + target_link_libraries(surface_reconstruction_plugin PUBLIC CGAL::SCIP_support) + elseif(TARGET CGAL::GLPK_support) + target_link_libraries(surface_reconstruction_plugin PUBLIC CGAL::GLPK_support) endif() qt5_wrap_ui( point_set_normal_estimationUI_FILES Point_set_normal_estimation_plugin.ui) polyhedron_demo_plugin(point_set_normal_estimation_plugin Point_set_normal_estimation_plugin ${point_set_normal_estimationUI_FILES} KEYWORDS PointSetProcessing Classification) - target_link_libraries(point_set_normal_estimation_plugin PUBLIC scene_points_with_normal_item scene_callback_signaler) - CGAL_target_use_Eigen(point_set_normal_estimation_plugin) + target_link_libraries(point_set_normal_estimation_plugin PUBLIC scene_points_with_normal_item scene_callback_signaler CGAL::Eigen_support) qt5_wrap_ui( features_detection_pluginUI_FILES Features_detection_plugin.ui) polyhedron_demo_plugin(features_detection_plugin Features_detection_plugin ${features_detection_pluginUI_FILES} KEYWORDS PointSetProcessing) - target_link_libraries(features_detection_plugin PUBLIC scene_points_with_normal_item) - CGAL_target_use_Eigen(features_detection_plugin) + target_link_libraries(features_detection_plugin PUBLIC scene_points_with_normal_item CGAL::Eigen_support) polyhedron_demo_plugin(point_set_smoothing_plugin Point_set_smoothing_plugin KEYWORDS PointSetProcessing) - target_link_libraries(point_set_smoothing_plugin PUBLIC scene_points_with_normal_item scene_callback_signaler) - CGAL_target_use_Eigen(point_set_smoothing_plugin) + target_link_libraries(point_set_smoothing_plugin PUBLIC scene_points_with_normal_item scene_callback_signaler CGAL::Eigen_support) polyhedron_demo_plugin(point_set_average_spacing_plugin Point_set_average_spacing_plugin KEYWORDS PointSetProcessing Classification) - target_link_libraries(point_set_average_spacing_plugin PUBLIC scene_points_with_normal_item scene_callback_signaler) - CGAL_target_use_Eigen(point_set_average_spacing_plugin) + target_link_libraries(point_set_average_spacing_plugin PUBLIC scene_points_with_normal_item scene_callback_signaler CGAL::Eigen_support) qt5_wrap_ui(point_set_shape_detectionUI_FILES Point_set_shape_detection_plugin.ui) polyhedron_demo_plugin(point_set_shape_detection_plugin Point_set_shape_detection_plugin ${point_set_shape_detectionUI_FILES} KEYWORDS PointSetProcessing Classification) - target_link_libraries(point_set_shape_detection_plugin PUBLIC scene_surface_mesh_item scene_points_with_normal_item scene_polygon_soup_item scene_callback_signaler) - CGAL_target_use_Eigen(point_set_shape_detection_plugin) + target_link_libraries(point_set_shape_detection_plugin PUBLIC scene_surface_mesh_item scene_points_with_normal_item scene_polygon_soup_item scene_callback_signaler CGAL::Eigen_support) find_package(OpenGR QUIET) + include(CGAL_OpenGR_support) find_package(libpointmatcher QUIET) + include(CGAL_pointmatcher_support) - if (OpenGR_FOUND OR libpointmatcher_FOUND) + if (TARGET CGAL::OpenGR_support OR CGAL::pointmatcher_support) qt5_wrap_ui(register_point_setsUI_FILES Register_point_sets_plugin.ui) polyhedron_demo_plugin(register_point_sets_plugin Register_point_sets_plugin ${register_point_setsUI_FILES} KEYWORDS PointSetProcessing) - if (OpenGR_FOUND) - CGAL_target_use_OpenGR(register_point_sets_plugin) + target_link_libraries(register_point_sets_plugin PUBLIC CGAL::Eigen_support) + if (TARGET CGAL::OpenGR_support) + target_link_libraries(register_point_sets_plugin PUBLIC CGAL::OpenGR_support) endif() - if (libpointmatcher_FOUND) - CGAL_target_use_pointmatcher(register_point_sets_plugin) + if (TARGET CGAL::pointmatcher_support) + target_link_libraries(register_point_sets_plugin PUBLIC CGAL::pointmatcher_support) endif() else() message(STATUS "NOTICE: OpenGR and libpointmatcher were not found. Registrationp plugin will not be available.") @@ -106,7 +105,7 @@ endif() polyhedron_demo_plugin(point_set_to_mesh_distance_plugin Point_set_to_mesh_distance_plugin ${distanceUI_FILES} KEYWORDS PointSetProcessing) target_link_libraries(point_set_to_mesh_distance_plugin PUBLIC scene_points_with_normal_item scene_surface_mesh_item scene_color_ramp) - if(TBB_FOUND) + if(TARGET CGAL::TBB_support) foreach(plugin surface_reconstruction_plugin point_set_normal_estimation_plugin @@ -125,7 +124,7 @@ endif() alpha_shape_plugin point_set_to_mesh_distance_plugin) if(TARGET ${plugin}) - CGAL_target_use_TBB(${plugin}) + target_link_libraries(${plugin} PUBLIC CGAL::TBB_support) endif() endforeach() endif() diff --git a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/CMakeLists.txt index d56331772af..45c1eccb50e 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/CMakeLists.txt @@ -4,18 +4,17 @@ if(POLICY CMP0074) cmake_policy(SET CMP0074 NEW) endif() -if(EIGEN3_FOUND) +if(TARGET CGAL::Eigen_support) find_package(CGAL COMPONENTS Core) include(${CGAL_USE_FILE}) qt5_wrap_ui(parameterizationUI_FILES Parameterization_widget.ui OTE_dialog.ui) polyhedron_demo_plugin(parameterization_plugin Parameterization_plugin ${parameterizationUI_FILES}) - target_link_libraries(parameterization_plugin PUBLIC scene_surface_mesh_item scene_textured_item scene_selection_item) - CGAL_target_use_Eigen(parameterization_plugin) -else(EIGEN3_FOUND) + target_link_libraries(parameterization_plugin PUBLIC scene_surface_mesh_item scene_textured_item scene_selection_item CGAL::Eigen_support) +else() message(STATUS "NOTICE: Eigen 3.1 (or greater) was not found. The Parameterization plugin will not be available.") -endif(EIGEN3_FOUND) +endif() qt5_wrap_ui( segmentationUI_FILES Mesh_segmentation_widget.ui) polyhedron_demo_plugin(mesh_segmentation_plugin Mesh_segmentation_plugin ${segmentationUI_FILES}) @@ -32,11 +31,11 @@ target_link_libraries(mesh_simplification_plugin PUBLIC scene_surface_mesh_item qt5_wrap_ui( remeshingUI_FILES Remeshing_dialog.ui) polyhedron_demo_plugin(offset_meshing_plugin Offset_meshing_plugin ${remeshingUI_FILES}) target_link_libraries(offset_meshing_plugin PUBLIC scene_surface_mesh_item scene_polygon_soup_item) -if(EIGEN3_FOUND) - CGAL_target_use_Eigen(offset_meshing_plugin) +if(TARGET CGAL::Eigen_support) + target_link_libraries(offset_meshing_plugin PUBLIC CGAL::Eigen_support) endif() -if(TBB_FOUND) - CGAL_target_use_TBB(offset_meshing_plugin) +if(TARGET CGAL::TBB_support) + target_link_libraries(offset_meshing_plugin PUBLIC CGAL::TBB_support) endif() qt5_wrap_ui( shortestPathUI_FILES Shortest_path_widget.ui ) diff --git a/Principal_component_analysis/demo/Principal_component_analysis/CMakeLists.txt b/Principal_component_analysis/demo/Principal_component_analysis/CMakeLists.txt index d8e2d1c3387..fa25ad50bf6 100644 --- a/Principal_component_analysis/demo/Principal_component_analysis/CMakeLists.txt +++ b/Principal_component_analysis/demo/Principal_component_analysis/CMakeLists.txt @@ -19,7 +19,8 @@ include_directories( ./ ) find_package(CGAL COMPONENTS Qt5) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) -if (NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "NOTICE: This project requires the Eigen library, and will not be compiled.") return() endif() @@ -45,10 +46,9 @@ if(CGAL_Qt5_FOUND AND Qt5_FOUND ) add_file_dependencies( PCA_demo.cpp "${CMAKE_CURRENT_BINARY_DIR}/MainWindow_moc.cpp" "${CMAKE_CURRENT_BINARY_DIR}/Viewer_moc.cpp" ) add_executable ( PCA_demo PCA_demo.cpp ${UI_FILES} ${CGAL_Qt5_RESOURCE_FILES} ${CGAL_Qt5_MOC_FILES}) - CGAL_target_use_Eigen(PCA_demo) target_link_libraries( PCA_demo PRIVATE - CGAL::CGAL CGAL::CGAL_Qt5 Qt5::Gui) + CGAL::CGAL CGAL::CGAL_Qt5 CGAL::Eigen_support Qt5::Gui) add_to_cached_list( CGAL_EXECUTABLE_TARGETS PCA_demo ) diff --git a/Principal_component_analysis/examples/Principal_component_analysis/CMakeLists.txt b/Principal_component_analysis/examples/Principal_component_analysis/CMakeLists.txt index acdc5826865..c5955afe2b4 100644 --- a/Principal_component_analysis/examples/Principal_component_analysis/CMakeLists.txt +++ b/Principal_component_analysis/examples/Principal_component_analysis/CMakeLists.txt @@ -12,14 +12,15 @@ if ( CGAL_FOUND ) # Use Eigen find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) + include(CGAL_Eigen_support) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) create_single_source_cgal_program( "${cppfile}" ) - if (EIGEN3_FOUND) + if (TARGET CGAL::Eigen_support) get_filename_component(target ${cppfile} NAME_WE) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endif() endforeach() @@ -28,4 +29,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Principal_component_analysis/test/Principal_component_analysis/CMakeLists.txt b/Principal_component_analysis/test/Principal_component_analysis/CMakeLists.txt index 02d5f28a0ac..236ac02b1be 100644 --- a/Principal_component_analysis/test/Principal_component_analysis/CMakeLists.txt +++ b/Principal_component_analysis/test/Principal_component_analysis/CMakeLists.txt @@ -12,14 +12,15 @@ if ( CGAL_FOUND ) # Use Eigen find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) + include(CGAL_Eigen_support) # create a target per cppfile file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) foreach(cppfile ${cppfiles}) create_single_source_cgal_program( "${cppfile}" ) - if (EIGEN3_FOUND) + if (TARGET CGAL::Eigen_support) get_filename_component(target ${cppfile} NAME_WE) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endif() endforeach() @@ -28,4 +29,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Property_map/examples/Property_map/CMakeLists.txt b/Property_map/examples/Property_map/CMakeLists.txt index d5717d3f5d2..5d251def5cf 100644 --- a/Property_map/examples/Property_map/CMakeLists.txt +++ b/Property_map/examples/Property_map/CMakeLists.txt @@ -33,9 +33,8 @@ endif() create_single_source_cgal_program( "dynamic_properties.cpp" ) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) -if (EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "custom_property_map.cpp" ) - CGAL_target_use_Eigen(custom_property_map) + target_link_libraries(custom_property_map PUBLIC CGAL::Eigen_support) endif() - - diff --git a/Ridges_3/examples/Ridges_3/CMakeLists.txt b/Ridges_3/examples/Ridges_3/CMakeLists.txt index 9392ccb1b48..3fe086671df 100644 --- a/Ridges_3/examples/Ridges_3/CMakeLists.txt +++ b/Ridges_3/examples/Ridges_3/CMakeLists.txt @@ -10,7 +10,8 @@ if ( CGAL_FOUND ) # use either 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) # Link with Boost.ProgramOptions (optional) find_package(Boost QUIET COMPONENTS program_options) @@ -28,11 +29,11 @@ if ( CGAL_FOUND ) endif() create_single_source_cgal_program( Compute_Ridges_Umbilics.cpp) - CGAL_target_use_Eigen(Compute_Ridges_Umbilics) + target_link_libraries(Compute_Ridges_Umbilics PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( Ridges_Umbilics_SM.cpp) - CGAL_target_use_Eigen(Ridges_Umbilics_SM) + target_link_libraries(Ridges_Umbilics_SM PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( Ridges_Umbilics_LCC.cpp) - CGAL_target_use_Eigen(Ridges_Umbilics_LCC) + target_link_libraries(Ridges_Umbilics_LCC PUBLIC CGAL::Eigen_support) else() diff --git a/Ridges_3/test/Ridges_3/CMakeLists.txt b/Ridges_3/test/Ridges_3/CMakeLists.txt index 139ca8dfb10..95025861c1c 100644 --- a/Ridges_3/test/Ridges_3/CMakeLists.txt +++ b/Ridges_3/test/Ridges_3/CMakeLists.txt @@ -13,9 +13,10 @@ if ( CGAL_FOUND ) # use either 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) create_single_source_cgal_program( "ridge_test.cpp" ) - CGAL_target_use_Eigen(ridge_test) + target_link_libraries(ridge_test PUBLIC CGAL::Eigen_support) else() message(STATUS "NOTICE: This program requires Eigen 3.1 (or greater) and will not be compiled.") @@ -27,4 +28,3 @@ else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/STL_Extension/benchmark/compact_container_benchmark/CMakeLists.txt b/STL_Extension/benchmark/compact_container_benchmark/CMakeLists.txt index 4bfa4327eb0..de657c74d8f 100644 --- a/STL_Extension/benchmark/compact_container_benchmark/CMakeLists.txt +++ b/STL_Extension/benchmark/compact_container_benchmark/CMakeLists.txt @@ -6,9 +6,10 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package( TBB ) + include(CGAL_TBB_support) create_single_source_cgal_program( "cc_benchmark.cpp" ) - if(TBB_FOUND) - CGAL_target_use_TBB(cc_benchmark) + if(TARGET CGAL::TBB_support) + target_link_libraries(cc_benchmark PUBLIC CGAL::TBB_support) endif() else() message(STATUS "This program requires the CGAL library, and will not be compiled.") diff --git a/STL_Extension/test/STL_Extension/CMakeLists.txt b/STL_Extension/test/STL_Extension/CMakeLists.txt index 80563069300..4a427003e02 100644 --- a/STL_Extension/test/STL_Extension/CMakeLists.txt +++ b/STL_Extension/test/STL_Extension/CMakeLists.txt @@ -12,6 +12,7 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package( TBB QUIET ) + include(CGAL_TBB_support) create_single_source_cgal_program( "test_Boolean_tag.cpp" ) create_single_source_cgal_program( "test_Cache.cpp" ) @@ -21,8 +22,8 @@ if ( CGAL_FOUND ) create_single_source_cgal_program( "test_composition.cpp" ) create_single_source_cgal_program( "test_Concatenate_iterator.cpp" ) create_single_source_cgal_program( "test_Concurrent_compact_container.cpp" ) - if(TBB_FOUND) - CGAL_target_use_TBB(test_Concurrent_compact_container) + if(TARGET CGAL::TBB_support) + target_link_libraries(test_Concurrent_compact_container PUBLIC CGAL::TBB_support) endif() create_single_source_cgal_program( "test_dispatch_output.cpp" ) create_single_source_cgal_program( "test_Flattening_iterator.cpp" ) @@ -43,12 +44,11 @@ if ( CGAL_FOUND ) create_single_source_cgal_program( "test_vector.cpp" ) create_single_source_cgal_program( "test_join_iterators.cpp" ) create_single_source_cgal_program( "test_for_each.cpp" ) - if(TBB_FOUND) - CGAL_target_use_TBB(test_for_each) + if(TARGET CGAL::TBB_support) + target_link_libraries(test_for_each PUBLIC CGAL::TBB_support) endif() else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/CMakeLists.txt b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/CMakeLists.txt index e1bfb24bc41..b6b1e1a3ba1 100644 --- a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/CMakeLists.txt +++ b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/CMakeLists.txt @@ -13,26 +13,28 @@ if ( CGAL_FOUND ) if( ACTIVATE_CONCURRENCY ) find_package( TBB ) - if( NOT TBB_FOUND ) + include(CGAL_TBB_support) + if( NOT TARGET CGAL::TBB_support ) message( STATUS "NOTICE: Intel TBB NOT found! The example is faster if TBB is linked." ) endif() endif() find_package( Eigen3 3.1.0 ) - if( EIGEN3_FOUND ) + include(CGAL_Eigen_support) + if( TARGET CGAL::Eigen_support ) create_single_source_cgal_program( "scale_space.cpp" ) - CGAL_target_use_Eigen(scale_space) + target_link_libraries(scale_space PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "scale_space_incremental.cpp" ) - CGAL_target_use_Eigen(scale_space_incremental) + target_link_libraries(scale_space_incremental PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "scale_space_manifold.cpp" ) - CGAL_target_use_Eigen(scale_space_manifold) + target_link_libraries(scale_space_manifold PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "scale_space_advancing_front.cpp" ) - CGAL_target_use_Eigen(scale_space_advancing_front) - if(ACTIVATE_CONCURRENCY AND TBB_FOUND) - CGAL_target_use_TBB(scale_space) - CGAL_target_use_TBB(scale_space_incremental) - CGAL_target_use_TBB(scale_space_manifold) - CGAL_target_use_TBB(scale_space_advancing_front) + target_link_libraries(scale_space_advancing_front PUBLIC CGAL::Eigen_support) + if(ACTIVATE_CONCURRENCY AND TARGET CGAL::TBB_support) + target_link_libraries(scale_space PUBLIC CGAL::TBB_support) + target_link_libraries(scale_space_incremental PUBLIC CGAL::TBB_support) + target_link_libraries(scale_space_manifold PUBLIC CGAL::TBB_support) + target_link_libraries(scale_space_advancing_front PUBLIC CGAL::TBB_support) endif() else() message( STATUS "NOTICE: The example needs Eigen 3.1 (or greater) and will not be compiled." ) diff --git a/Shape_detection/benchmark/Shape_detection/CMakeLists.txt b/Shape_detection/benchmark/Shape_detection/CMakeLists.txt index e89abfcbdf8..0e8d4b74cf0 100644 --- a/Shape_detection/benchmark/Shape_detection/CMakeLists.txt +++ b/Shape_detection/benchmark/Shape_detection/CMakeLists.txt @@ -14,13 +14,14 @@ if(CGAL_FOUND) # Use Eigen. find_package(Eigen3 3.1.0 QUIET) # (3.1.0 or greater) - if(EIGEN3_FOUND) + include(CGAL_Eigen_support) + if(TARGET CGAL::Eigen_support) create_single_source_cgal_program( "benchmark_region_growing_on_point_set_2.cpp") - CGAL_target_use_Eigen(benchmark_region_growing_on_point_set_2) + target_link_libraries(benchmark_region_growing_on_point_set_2 PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "benchmark_region_growing_on_point_set_3.cpp") - CGAL_target_use_Eigen(benchmark_region_growing_on_point_set_3) + target_link_libraries(benchmark_region_growing_on_point_set_3 PUBLIC CGAL::Eigen_support) endif() else() diff --git a/Shape_detection/examples/Shape_detection/CMakeLists.txt b/Shape_detection/examples/Shape_detection/CMakeLists.txt index be7c4667d6d..b012e3a0256 100644 --- a/Shape_detection/examples/Shape_detection/CMakeLists.txt +++ b/Shape_detection/examples/Shape_detection/CMakeLists.txt @@ -14,7 +14,8 @@ if(CGAL_FOUND) # Use Eigen. find_package(Eigen3 3.1.0 QUIET) # (3.1.0 or greater) - if(EIGEN3_FOUND) + include(CGAL_Eigen_support) + if(TARGET CGAL::Eigen_support) create_single_source_cgal_program( "efficient_RANSAC_basic.cpp") create_single_source_cgal_program( @@ -43,7 +44,7 @@ if(CGAL_FOUND) region_growing_on_polygon_mesh region_growing_with_custom_classes shape_detection_basic_deprecated) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endforeach() endif() diff --git a/Shape_detection/test/Shape_detection/CMakeLists.txt b/Shape_detection/test/Shape_detection/CMakeLists.txt index 2effc7dd265..b804d1014f2 100644 --- a/Shape_detection/test/Shape_detection/CMakeLists.txt +++ b/Shape_detection/test/Shape_detection/CMakeLists.txt @@ -14,6 +14,7 @@ if(CGAL_FOUND) # Use Eigen. find_package(Eigen3 3.1.0 QUIET) # (3.1.0 or greater) + include(CGAL_Eigen_support) if(EIGEN3_FOUND) create_single_source_cgal_program( "test_region_growing_basic.cpp") @@ -43,7 +44,7 @@ if(CGAL_FOUND) test_region_growing_on_point_set_3_with_sorting test_region_growing_on_polygon_mesh_with_sorting test_region_growing_on_degenerated_mesh) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endforeach() endif() diff --git a/Solver_interface/examples/Solver_interface/CMakeLists.txt b/Solver_interface/examples/Solver_interface/CMakeLists.txt index fbbea89f568..d6f2c10833a 100644 --- a/Solver_interface/examples/Solver_interface/CMakeLists.txt +++ b/Solver_interface/examples/Solver_interface/CMakeLists.txt @@ -12,32 +12,35 @@ if ( CGAL_FOUND ) # Use Eigen find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) + include(CGAL_Eigen_support) - if (EIGEN3_FOUND) + if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "singular_value_decomposition.cpp" ) - CGAL_target_use_Eigen(singular_value_decomposition) + target_link_libraries(singular_value_decomposition PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "sparse_solvers.cpp" ) - CGAL_target_use_Eigen(sparse_solvers) + target_link_libraries(sparse_solvers PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "diagonalize_matrix.cpp" ) - CGAL_target_use_Eigen(diagonalize_matrix) + target_link_libraries(diagonalize_matrix PUBLIC CGAL::Eigen_support) endif() create_single_source_cgal_program( "mixed_integer_program.cpp" ) find_package( SCIP QUIET) + include(CGAL_SCIP_support) - if (SCIP_FOUND) + if (TARGET CGAL::SCIP_support) - CGAL_target_use_SCIP(mixed_integer_program) + target_link_libraries(mixed_integer_program PUBLIC CGAL::SCIP_support) message("SCIP found and used") else() - find_package( GLPK QUIET) + find_package( GLPK QUIET) + include(CGAL_GLPK_support) - if (GLPK_FOUND) + if (TARGET CGAL::GLPK_support) - CGAL_target_use_GLPK(mixed_integer_program) + target_link_libraries(mixed_integer_program PUBLIC CGAL::GLPK_support) message("GLPK found and used") else() @@ -54,4 +57,3 @@ else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Spatial_searching/benchmark/Spatial_searching/CMakeLists.txt b/Spatial_searching/benchmark/Spatial_searching/CMakeLists.txt index 010a9bc992f..e2bb99bb3f6 100644 --- a/Spatial_searching/benchmark/Spatial_searching/CMakeLists.txt +++ b/Spatial_searching/benchmark/Spatial_searching/CMakeLists.txt @@ -13,6 +13,7 @@ if ( CGAL_FOUND ) include(${CGAL_USE_FILE}) find_package(Eigen3 3.1.91) #(requires 3.2.0 or greater) +include(CGAL_Eigen_support) include_directories (BEFORE "include") @@ -45,7 +46,7 @@ find_package(Eigen3 3.1.91) #(requires 3.2.0 or greater) nn3nanoflan sizeof deque) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endforeach() else() @@ -53,4 +54,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Spatial_searching/examples/Spatial_searching/CMakeLists.txt b/Spatial_searching/examples/Spatial_searching/CMakeLists.txt index a7e3bdd7983..37737a91826 100644 --- a/Spatial_searching/examples/Spatial_searching/CMakeLists.txt +++ b/Spatial_searching/examples/Spatial_searching/CMakeLists.txt @@ -18,6 +18,7 @@ if ( NOT CGAL_FOUND ) endif() find_package(Eigen3 3.1.91) #(requires 3.2.0 or greater) +include(CGAL_Eigen_support) if (MSVC) # Turn off VC++ warning @@ -62,13 +63,13 @@ create_single_source_cgal_program( "weighted_Minkowski_distance.cpp" ) -if (EIGEN3_FOUND) +if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "fuzzy_range_query.cpp" ) - CGAL_target_use_Eigen(fuzzy_range_query) + target_link_libraries(fuzzy_range_query PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "general_neighbor_searching.cpp" ) - CGAL_target_use_Eigen(general_neighbor_searching) + target_link_libraries(general_neighbor_searching PUBLIC CGAL::Eigen_support) else() diff --git a/Spatial_sorting/examples/Spatial_sorting/CMakeLists.txt b/Spatial_sorting/examples/Spatial_sorting/CMakeLists.txt index f865c8028c2..25197170b29 100644 --- a/Spatial_sorting/examples/Spatial_sorting/CMakeLists.txt +++ b/Spatial_sorting/examples/Spatial_sorting/CMakeLists.txt @@ -16,13 +16,12 @@ if ( CGAL_FOUND ) endforeach() find_package( TBB QUIET ) - if( TBB_FOUND ) - include( CGAL_target_use_TBB ) - CGAL_target_use_TBB( parallel_spatial_sort_3 ) + include(CGAL_TBB_support) + if( TARGET CGAL::TBB_support ) + target_link_libraries( parallel_spatial_sort_3 PUBLIC CGAL::TBB_support) endif() else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Spatial_sorting/test/Spatial_sorting/CMakeLists.txt b/Spatial_sorting/test/Spatial_sorting/CMakeLists.txt index 8213186a4b0..437508bf629 100644 --- a/Spatial_sorting/test/Spatial_sorting/CMakeLists.txt +++ b/Spatial_sorting/test/Spatial_sorting/CMakeLists.txt @@ -13,14 +13,13 @@ if ( CGAL_FOUND ) create_single_source_cgal_program( "test_multiscale.cpp" ) find_package (TBB QUIET) - if( TBB_FOUND ) - include( CGAL_target_use_TBB ) - CGAL_target_use_TBB( test_hilbert ) - endif( TBB_FOUND ) + include(CGAL_TBB_support) + if( TARGET CGAL::TBB_support ) + target_link_libraries( test_hilbert PUBLIC CGAL::TBB_support ) + endif() else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Surface_mesh_approximation/examples/Surface_mesh_approximation/CMakeLists.txt b/Surface_mesh_approximation/examples/Surface_mesh_approximation/CMakeLists.txt index aa73bcd3807..c73ab50c135 100644 --- a/Surface_mesh_approximation/examples/Surface_mesh_approximation/CMakeLists.txt +++ b/Surface_mesh_approximation/examples/Surface_mesh_approximation/CMakeLists.txt @@ -28,7 +28,8 @@ endif() # Use Eigen (for PCA) find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) -if (NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") return() endif() @@ -39,20 +40,19 @@ endif() include( CGAL_CreateSingleSourceCGALProgram ) create_single_source_cgal_program( "vsa_approximation_2_example.cpp" ) -CGAL_target_use_Eigen(vsa_approximation_2_example) +target_link_libraries(vsa_approximation_2_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_approximation_example.cpp" ) -CGAL_target_use_Eigen(vsa_approximation_example) +target_link_libraries(vsa_approximation_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_class_interface_example.cpp" ) -CGAL_target_use_Eigen(vsa_class_interface_example) +target_link_libraries(vsa_class_interface_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_isotropic_metric_example.cpp" ) -CGAL_target_use_Eigen(vsa_isotropic_metric_example) +target_link_libraries(vsa_isotropic_metric_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_segmentation_example.cpp" ) -CGAL_target_use_Eigen(vsa_segmentation_example) +target_link_libraries(vsa_segmentation_example PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_simple_approximation_example.cpp" ) -CGAL_target_use_Eigen(vsa_simple_approximation_example) - +target_link_libraries(vsa_simple_approximation_example PUBLIC CGAL::Eigen_support) diff --git a/Surface_mesh_approximation/test/Surface_mesh_approximation/CMakeLists.txt b/Surface_mesh_approximation/test/Surface_mesh_approximation/CMakeLists.txt index a41a41f1996..9548e5ac986 100644 --- a/Surface_mesh_approximation/test/Surface_mesh_approximation/CMakeLists.txt +++ b/Surface_mesh_approximation/test/Surface_mesh_approximation/CMakeLists.txt @@ -29,7 +29,8 @@ endif() # Use Eigen (for PCA) find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) -if (NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") return() endif() @@ -41,30 +42,28 @@ endif() include( CGAL_CreateSingleSourceCGALProgram ) create_single_source_cgal_program( "vsa_class_interface_test.cpp" ) -CGAL_target_use_Eigen(vsa_class_interface_test) +target_link_libraries(vsa_class_interface_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_correctness_test.cpp" ) -CGAL_target_use_Eigen(vsa_correctness_test) +target_link_libraries(vsa_correctness_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_error_decrease_test.cpp" ) -CGAL_target_use_Eigen(vsa_error_decrease_test) +target_link_libraries(vsa_error_decrease_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_kernel_test.cpp" ) -CGAL_target_use_Eigen(vsa_kernel_test) +target_link_libraries(vsa_kernel_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_approximation_test.cpp" ) -CGAL_target_use_Eigen(vsa_approximation_test) +target_link_libraries(vsa_approximation_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_segmentation_test.cpp" ) -CGAL_target_use_Eigen(vsa_segmentation_test) +target_link_libraries(vsa_segmentation_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_meshing_manifold_test.cpp" ) -CGAL_target_use_Eigen(vsa_meshing_manifold_test) +target_link_libraries(vsa_meshing_manifold_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_metric_test.cpp" ) -CGAL_target_use_Eigen(vsa_metric_test) +target_link_libraries(vsa_metric_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "vsa_teleportation_test.cpp" ) -CGAL_target_use_Eigen(vsa_teleportation_test) - - +target_link_libraries(vsa_teleportation_test PUBLIC CGAL::Eigen_support) diff --git a/Surface_mesh_deformation/demo/Surface_mesh_deformation/CMakeLists.txt b/Surface_mesh_deformation/demo/Surface_mesh_deformation/CMakeLists.txt index b17f5995d32..daabda6ac44 100644 --- a/Surface_mesh_deformation/demo/Surface_mesh_deformation/CMakeLists.txt +++ b/Surface_mesh_deformation/demo/Surface_mesh_deformation/CMakeLists.txt @@ -17,9 +17,10 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package(Eigen3 3.1.91) #(requires 3.2.0 or greater) - if (EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "deform_mesh_for_botsch08_format.cpp" ) - CGAL_target_use_Eigen(deform_mesh_for_botsch08_format) + target_link_libraries(deform_mesh_for_botsch08_format PUBLIC CGAL::Eigen_support) else() message(STATUS "NOTICE: This program requires the Eigen library, version 3.2 or later and will not be compiled.") endif() @@ -28,4 +29,3 @@ else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt b/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt index ca146f90433..f60163d11be 100644 --- a/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt +++ b/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt @@ -12,7 +12,8 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package(Eigen3 3.1.91) #(requires 3.2.0 or greater) - if (EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "all_roi_assign_example.cpp" ) create_single_source_cgal_program( "all_roi_assign_example_custom_polyhedron.cpp" ) create_single_source_cgal_program( "all_roi_assign_example_Surface_mesh.cpp" ) @@ -31,15 +32,14 @@ if ( CGAL_FOUND ) k_ring_roi_translate_rotate_example k_ring_roi_translate_rotate_Surface_mesh deform_mesh_for_botsch08_format_sre_arap) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endforeach() find_package( OpenMesh QUIET ) if ( OpenMesh_FOUND ) include( UseOpenMesh ) create_single_source_cgal_program( "all_roi_assign_example_with_OpenMesh.cpp" ) - target_link_libraries( all_roi_assign_example_with_OpenMesh PRIVATE ${OPENMESH_LIBRARIES} ) - CGAL_target_use_Eigen(all_roi_assign_example_with_OpenMesh) + target_link_libraries( all_roi_assign_example_with_OpenMesh PRIVATE ${OPENMESH_LIBRARIES} CGAL::Eigen_support) else() message(STATUS "Example that use OpenMesh will not be compiled.") endif() @@ -52,4 +52,3 @@ else() message(STATUS "NOTICE: These exmaples require the CGAL library, and will not be compiled.") endif() - diff --git a/Surface_mesh_deformation/test/Surface_mesh_deformation/CMakeLists.txt b/Surface_mesh_deformation/test/Surface_mesh_deformation/CMakeLists.txt index 05da9a51cf7..624cef733bb 100644 --- a/Surface_mesh_deformation/test/Surface_mesh_deformation/CMakeLists.txt +++ b/Surface_mesh_deformation/test/Surface_mesh_deformation/CMakeLists.txt @@ -12,20 +12,20 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package(Eigen3 3.1.91) #(requires 3.2.0 or greater) - if (EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "Cactus_deformation_session.cpp" ) - CGAL_target_use_Eigen(Cactus_deformation_session) + target_link_libraries(Cactus_deformation_session PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "Cactus_performance_test.cpp" ) - CGAL_target_use_Eigen(Cactus_performance_test) + target_link_libraries(Cactus_performance_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "Symmetry_test.cpp" ) - CGAL_target_use_Eigen(Symmetry_test) + target_link_libraries(Symmetry_test PUBLIC CGAL::Eigen_support) find_package( OpenMesh QUIET ) if ( OpenMesh_FOUND ) include( UseOpenMesh ) create_single_source_cgal_program( "Cactus_deformation_session_OpenMesh.cpp" ) - CGAL_target_use_Eigen(Cactus_deformation_session_OpenMesh) - target_link_libraries( Cactus_deformation_session_OpenMesh PRIVATE ${OPENMESH_LIBRARIES} ) + target_link_libraries( Cactus_deformation_session_OpenMesh PRIVATE ${OPENMESH_LIBRARIES} CGAL::Eigen_support) else() message(STATUS "Example that use OpenMesh will not be compiled.") endif() @@ -37,4 +37,3 @@ else() message(STATUS "NOTICE: These tests require the CGAL library, and will not be compiled.") endif() - diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt index 185aacb9503..eab97c84ecb 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt @@ -12,7 +12,8 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) - if (EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) # Executables that require Eigen 3.1 # ------------------------------------------------------------------ @@ -51,29 +52,28 @@ if ( CGAL_FOUND ) # ------------------------------------------------------------------ create_single_source_cgal_program( "discrete_authalic.cpp" ) - CGAL_target_use_Eigen(discrete_authalic) + target_link_libraries(discrete_authalic PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "lscm.cpp" ) - CGAL_target_use_Eigen(lscm) + target_link_libraries(lscm PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "orbifold.cpp" ) - CGAL_target_use_Eigen(orbifold) + target_link_libraries(orbifold PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "seam_Polyhedron_3.cpp" ) - CGAL_target_use_Eigen(seam_Polyhedron_3) + target_link_libraries(seam_Polyhedron_3 PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "simple_parameterization.cpp" ) - CGAL_target_use_Eigen(simple_parameterization) + target_link_libraries(simple_parameterization PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "square_border_parameterizer.cpp" ) - CGAL_target_use_Eigen(square_border_parameterizer) + target_link_libraries(square_border_parameterizer PUBLIC CGAL::Eigen_support) if(SuiteSparse_FOUND) target_link_libraries(orbifold PRIVATE ${SuiteSparse_LIBRARIES}) endif() - else(EIGEN3_FOUND) + else() message(STATUS "NOTICE: The examples require Eigen 3.1 (or greater) and will not be compiled.") - endif(EIGEN3_FOUND) + endif() else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt b/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt index 401f37978b4..7141d3fef9a 100644 --- a/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt +++ b/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt @@ -13,16 +13,16 @@ if ( CGAL_FOUND ) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) - if(EIGEN3_FOUND) + include(CGAL_Eigen_support) + if(TARGET CGAL::Eigen_support) create_single_source_cgal_program( "extensive_parameterization_test.cpp" ) - CGAL_target_use_Eigen(extensive_parameterization_test) - else(EIGEN3_FOUND) + target_link_libraries(extensive_parameterization_test PUBLIC CGAL::Eigen_support) + else() message(STATUS "NOTICE: The tests require Eigen 3.1 (or greater) and will not be compiled.") - endif(EIGEN3_FOUND) + endif() else() message(STATUS "NOTICE: This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt b/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt index cb06fb9d434..bfd216d1e80 100644 --- a/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt @@ -43,9 +43,10 @@ create_single_source_cgal_program( "edge_collapse_bounded_normal_change.cpp" ) create_single_source_cgal_program( "edge_collapse_visitor_surface_mesh.cpp" ) find_package(Eigen3 3.1.0 QUIET) #(3.1.0 or greater) -if( Eigen3_FOUND ) +include(CGAL_Eigen_support) +if( TARGET CGAL::Eigen_support ) create_single_source_cgal_program( "edge_collapse_garland_heckbert.cpp" ) - CGAL_target_use_Eigen(edge_collapse_garland_heckbert) + target_link_libraries(edge_collapse_garland_heckbert PUBLIC CGAL::Eigen_support) else () message(STATUS "Garland-Heckbert polices require the Eigen library, which has not been found; related examples will not be compiled.") endif() diff --git a/Surface_mesh_skeletonization/benchmark/Surface_mesh_skeletonization/CMakeLists.txt b/Surface_mesh_skeletonization/benchmark/Surface_mesh_skeletonization/CMakeLists.txt index 0fb1f28c09d..b5522d61809 100644 --- a/Surface_mesh_skeletonization/benchmark/Surface_mesh_skeletonization/CMakeLists.txt +++ b/Surface_mesh_skeletonization/benchmark/Surface_mesh_skeletonization/CMakeLists.txt @@ -35,17 +35,17 @@ endif() # include for local package find_package(Eigen3 3.2.0) #(requires 3.2.0 or greater) +include(CGAL_Eigen_support) -if(NOT EIGEN3_FOUND) +if(NOT TARGET CGAL::Eigen_support) message(STATUS "NOTICE: Eigen 3.2 (or greater) is not found.") -endif(NOT EIGEN3_FOUND) +endif() # Creating entries for all .cpp/.C files with "main" routine # ########################################################## create_single_source_cgal_program( "solver_benchmark.cpp" ) -CGAL_target_use_Eigen(solver_benchmark) +target_link_libraries(solver_benchmark PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "mcf_scale_invariance.cpp" ) -CGAL_target_use_Eigen(mcf_scale_invariance) - +target_link_libraries(mcf_scale_invariance PUBLIC CGAL::Eigen_support) diff --git a/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/CMakeLists.txt b/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/CMakeLists.txt index d3f29d30dc3..e5ee181c4d3 100644 --- a/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/CMakeLists.txt +++ b/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/CMakeLists.txt @@ -12,8 +12,9 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package(Eigen3 3.2.0) #(requires 3.2.0 or greater) + include(CGAL_Eigen_support) - if(EIGEN3_FOUND) + if(TARGET CGAL::Eigen_support) create_single_source_cgal_program( "simple_mcfskel_example.cpp" ) create_single_source_cgal_program( "simple_mcfskel_sm_example.cpp" ) create_single_source_cgal_program( "simple_mcfskel_LCC_example.cpp" ) @@ -29,7 +30,7 @@ if ( CGAL_FOUND ) MCF_Skeleton_sm_example MCF_Skeleton_LCC_example segmentation_example) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endforeach() else() message(STATUS "These programs require the Eigen library (3.2 or greater), and will not be compiled.") @@ -40,4 +41,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Surface_mesh_skeletonization/test/Surface_mesh_skeletonization/CMakeLists.txt b/Surface_mesh_skeletonization/test/Surface_mesh_skeletonization/CMakeLists.txt index fd313cbf499..29adc5293fe 100644 --- a/Surface_mesh_skeletonization/test/Surface_mesh_skeletonization/CMakeLists.txt +++ b/Surface_mesh_skeletonization/test/Surface_mesh_skeletonization/CMakeLists.txt @@ -12,12 +12,13 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package(Eigen3 3.2.0) #(requires 3.2.0 or greater) + include(CGAL_Eigen_support) - if(EIGEN3_FOUND) + if(TARGET CGAL::Eigen_support) create_single_source_cgal_program( "MCF_Skeleton_test.cpp" ) - CGAL_target_use_Eigen(MCF_Skeleton_test) + target_link_libraries(MCF_Skeleton_test PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "skeleton_connectivity_test.cpp" ) - CGAL_target_use_Eigen(skeleton_connectivity_test) + target_link_libraries(skeleton_connectivity_test PUBLIC CGAL::Eigen_support) else() message(STATUS "These tests require the Eigen library (3.2 or greater), and will not be compiled.") endif() @@ -26,4 +27,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/TDS_3/test/TDS_3/CMakeLists.txt b/TDS_3/test/TDS_3/CMakeLists.txt index b21488fe951..87f0c8a318e 100644 --- a/TDS_3/test/TDS_3/CMakeLists.txt +++ b/TDS_3/test/TDS_3/CMakeLists.txt @@ -9,10 +9,11 @@ if ( CGAL_FOUND ) include_directories (BEFORE "./include") find_package( TBB QUIET ) + include(CGAL_TBB_support) create_single_source_cgal_program( "test_triangulation_tds_3.cpp" ) create_single_source_cgal_program( "test_io_tds3.cpp" ) - if(TBB_FOUND) - CGAL_target_use_TBB(test_triangulation_tds_3) + if(TARGET CGAL::TBB_support) + target_link_libraries(test_triangulation_tds_3 PUBLIC CGAL::TBB_support) endif() else() message(STATUS "This program requires the CGAL library, and will not be compiled.") diff --git a/Triangulation/applications/Triangulation/CMakeLists.txt b/Triangulation/applications/Triangulation/CMakeLists.txt index d185fab4fdc..1fc7365fd39 100644 --- a/Triangulation/applications/Triangulation/CMakeLists.txt +++ b/Triangulation/applications/Triangulation/CMakeLists.txt @@ -26,6 +26,7 @@ if ( NOT Boost_FOUND ) endif() find_package(Eigen3 3.1.0) +include(CGAL_Eigen_support) # include for local directory include_directories( BEFORE include ) @@ -36,8 +37,6 @@ include_directories( BEFORE include ) # ########################################################## create_single_source_cgal_program( "points_to_RT_to_off.cpp" ) -CGAL_target_use_Eigen(points_to_RT_to_off) +target_link_libraries(points_to_RT_to_off PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "points_to_DT_to_off.cpp" ) -CGAL_target_use_Eigen(points_to_DT_to_off) - - +target_link_libraries(points_to_DT_to_off PUBLIC CGAL::Eigen_support) diff --git a/Triangulation/benchmark/Triangulation/CMakeLists.txt b/Triangulation/benchmark/Triangulation/CMakeLists.txt index 0e03f970220..681ffd10bc0 100644 --- a/Triangulation/benchmark/Triangulation/CMakeLists.txt +++ b/Triangulation/benchmark/Triangulation/CMakeLists.txt @@ -14,12 +14,13 @@ if ( CGAL_FOUND ) include(${CGAL_USE_FILE}) find_package(Eigen3 3.1.0) - if (EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) include_directories (BEFORE "include") create_single_source_cgal_program( "delaunay.cpp" ) - CGAL_target_use_Eigen(delaunay) + target_link_libraries(delaunay PUBLIC CGAL::Eigen_support) create_single_source_cgal_program( "Td_vs_T2_and_T3.cpp" ) - CGAL_target_use_Eigen(Td_vs_T2_and_T3) + target_link_libraries(Td_vs_T2_and_T3 PUBLIC CGAL::Eigen_support) else() message(STATUS "NOTICE: Some of the executables in this directory need Eigen 3.1 (or greater) and will not be compiled.") @@ -28,4 +29,3 @@ if ( CGAL_FOUND ) else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Triangulation/examples/Triangulation/CMakeLists.txt b/Triangulation/examples/Triangulation/CMakeLists.txt index 7f8609612df..f6589b3e63a 100644 --- a/Triangulation/examples/Triangulation/CMakeLists.txt +++ b/Triangulation/examples/Triangulation/CMakeLists.txt @@ -17,7 +17,8 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package(Eigen3 3.1.0) - if (EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "barycentric_subdivision.cpp" ) create_single_source_cgal_program( "delaunay_triangulation.cpp" ) create_single_source_cgal_program( "convex_hull.cpp" ) @@ -34,7 +35,7 @@ if ( CGAL_FOUND ) triangulation triangulation_data_structure_dynamic triangulation_data_structure_static) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endforeach() else() message(STATUS "NOTICE: Some of the executables in this directory need Eigen 3.1 (or greater) and will not be compiled.") @@ -45,4 +46,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Triangulation/test/Triangulation/CMakeLists.txt b/Triangulation/test/Triangulation/CMakeLists.txt index 2aed902c338..8dd9796ba23 100644 --- a/Triangulation/test/Triangulation/CMakeLists.txt +++ b/Triangulation/test/Triangulation/CMakeLists.txt @@ -15,7 +15,8 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package(Eigen3 3.1.0) - if (EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) include_directories (BEFORE "include") create_single_source_cgal_program( "test_triangulation.cpp" ) @@ -31,7 +32,7 @@ if ( CGAL_FOUND ) test_tds test_torture test_insert_if_in_star) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endforeach() else() @@ -41,4 +42,3 @@ if ( CGAL_FOUND ) else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Triangulation_3/benchmark/Triangulation_3/CMakeLists.txt b/Triangulation_3/benchmark/Triangulation_3/CMakeLists.txt index c6892abd08e..4d0c7c1c778 100644 --- a/Triangulation_3/benchmark/Triangulation_3/CMakeLists.txt +++ b/Triangulation_3/benchmark/Triangulation_3/CMakeLists.txt @@ -49,14 +49,12 @@ find_package(benchmark) if(TARGET benchmark::benchmark) find_package(TBB REQUIRED) - include( CGAL_target_use_TBB ) + include(CGAL_TBB_support) create_single_source_cgal_program( "DT3_benchmark_with_TBB.cpp" ) - CGAL_target_use_TBB(DT3_benchmark_with_TBB) - target_link_libraries(DT3_benchmark_with_TBB PRIVATE benchmark::benchmark) + target_link_libraries(DT3_benchmark_with_TBB PRIVATE benchmark::benchmark CGAL::TBB_support) add_executable(DT3_benchmark_with_TBB_CCC_approximate_size DT3_benchmark_with_TBB.cpp) - CGAL_target_use_TBB(DT3_benchmark_with_TBB_CCC_approximate_size) target_compile_definitions(DT3_benchmark_with_TBB_CCC_approximate_size PRIVATE CGAL_CONCURRENT_COMPACT_CONTAINER_APPROXIMATE_SIZE) - target_link_libraries(DT3_benchmark_with_TBB_CCC_approximate_size PRIVATE CGAL::CGAL benchmark::benchmark) + target_link_libraries(DT3_benchmark_with_TBB_CCC_approximate_size PRIVATE CGAL::CGAL benchmark::benchmark CGAL::TBB_support) endif() diff --git a/Triangulation_3/demo/Triangulation_3/CMakeLists.txt b/Triangulation_3/demo/Triangulation_3/CMakeLists.txt index 99856041fc3..4b659999e15 100644 --- a/Triangulation_3/demo/Triangulation_3/CMakeLists.txt +++ b/Triangulation_3/demo/Triangulation_3/CMakeLists.txt @@ -37,12 +37,14 @@ option(CGAL_ACTIVATE_CONCURRENT_TRIANGULATION_3 if( CGAL_ACTIVATE_CONCURRENT_TRIANGULATION_3 ) add_definitions( -DCGAL_CONCURRENT_TRIANGULATION_3 ) find_package( TBB REQUIRED ) + include(CGAL_TBB_support) else( CGAL_ACTIVATE_CONCURRENT_TRIANGULATION_3 ) option( LINK_WITH_TBB "Link with TBB anyway so we can use TBB timers for profiling" ON) if( LINK_WITH_TBB ) find_package( TBB ) + find_package( TBB REQUIRED ) endif( LINK_WITH_TBB ) endif() @@ -67,8 +69,8 @@ if ( CGAL_FOUND AND CGAL_Qt5_FOUND AND Qt5_FOUND ) target_link_libraries( T3_demo PRIVATE CGAL::CGAL CGAL::CGAL_Qt5) target_link_libraries( T3_demo PRIVATE Qt5::OpenGL Qt5::Xml) - if(TBB_FOUND) - CGAL_target_use_TBB(T3_demo) + if(TARGET CGAL::TBB_support) + target_link_libraries(T3_demo PUBLIC CGAL::TBB_support) endif() include(${CGAL_MODULES_DIR}/CGAL_add_test.cmake) diff --git a/Triangulation_3/examples/Triangulation_3/CMakeLists.txt b/Triangulation_3/examples/Triangulation_3/CMakeLists.txt index d6bd426e464..a44531dec74 100644 --- a/Triangulation_3/examples/Triangulation_3/CMakeLists.txt +++ b/Triangulation_3/examples/Triangulation_3/CMakeLists.txt @@ -39,16 +39,15 @@ if ( CGAL_FOUND ) endif() find_package( TBB QUIET ) + include(CGAL_TBB_support) - if( TBB_FOUND ) - include( CGAL_target_use_TBB ) - + if( TARGET CGAL::TBB_support ) create_single_source_cgal_program( "parallel_insertion_and_removal_in_regular_3.cpp" ) create_single_source_cgal_program( "parallel_insertion_in_delaunay_3.cpp" ) create_single_source_cgal_program( "sequential_parallel.cpp" ) - CGAL_target_use_TBB( parallel_insertion_and_removal_in_regular_3 ) - CGAL_target_use_TBB( parallel_insertion_in_delaunay_3 ) - CGAL_target_use_TBB( sequential_parallel ) + target_link_libraries( parallel_insertion_and_removal_in_regular_3 PUBLIC CGAL::TBB_support) + target_link_libraries( parallel_insertion_in_delaunay_3 PUBLIC CGAL::TBB_support ) + target_link_libraries( sequential_parallel PUBLIC CGAL::TBB_support) else() message(STATUS "NOTICE: a few examples require TBB and will not be compiled.") endif() @@ -58,4 +57,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Triangulation_3/test/Triangulation_3/CMakeLists.txt b/Triangulation_3/test/Triangulation_3/CMakeLists.txt index a2d10b47143..4dfcc8c4bb5 100644 --- a/Triangulation_3/test/Triangulation_3/CMakeLists.txt +++ b/Triangulation_3/test/Triangulation_3/CMakeLists.txt @@ -12,6 +12,7 @@ find_package(CGAL QUIET) if ( CGAL_FOUND ) find_package( TBB QUIET ) + include(CGAL_TBB_support) include_directories (BEFORE "include") @@ -30,12 +31,12 @@ if ( CGAL_FOUND ) create_single_source_cgal_program( "test_triangulation_3.cpp" ) create_single_source_cgal_program( "test_io_triangulation_3.cpp" ) - if(TBB_FOUND) + if(TARGET CGAL::TBB_support) foreach(target test_delaunay_3 test_regular_3 test_regular_insert_range_with_info) - CGAL_target_use_TBB(${target}) + target_link_libraries(${target} PUBLIC CGAL::TBB_support) endforeach() endif() @@ -54,4 +55,3 @@ else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - From 3668a22d89e4d8c24e13fbab8a713e1255aee75a Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Wed, 15 Apr 2020 12:32:28 +0200 Subject: [PATCH 03/46] Update deprecation warnings --- Installation/cmake/modules/UseEigen3.cmake | 2 +- Installation/cmake/modules/UseLASLIB.cmake | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Installation/cmake/modules/UseEigen3.cmake b/Installation/cmake/modules/UseEigen3.cmake index 850bb638392..ccdb6682bd7 100644 --- a/Installation/cmake/modules/UseEigen3.cmake +++ b/Installation/cmake/modules/UseEigen3.cmake @@ -8,4 +8,4 @@ add_definitions(-DCGAL_EIGEN3_ENABLED) set (EIGEN3_SETUP TRUE) -message(DEPRECATION "This file UseEigen.cmake is deprecated, and the function `CGAL_target_use_Eigen` from CGAL_target_use_Eigen.cmake should be used instead.") +message(DEPRECATION "This file UseEigen.cmake is deprecated, and the imported target `CGAL::Eigen_support` from CGAL_Eigen_support.cmake should be used instead.") diff --git a/Installation/cmake/modules/UseLASLIB.cmake b/Installation/cmake/modules/UseLASLIB.cmake index 99f3374a24f..1af7a023ceb 100644 --- a/Installation/cmake/modules/UseLASLIB.cmake +++ b/Installation/cmake/modules/UseLASLIB.cmake @@ -3,5 +3,4 @@ add_definitions(-DCGAL_LINKED_WITH_LASLIB) -message(DEPRECATION "This file UseLASLIB.cmake is deprecated, and the function `CGAL_target_use_LASLIB` from CGAL_target_use_LASLIB.cmake should be used instead.") - +message(DEPRECATION "This file UseLASLIB.cmake is deprecated, and the imported target `CGAL::TBB_support` from CGAL_LASLIB_support.cmake should be used instead.") From 15c07ff06fd4ddcb5b0619940884dd3eb4c409f8 Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Wed, 15 Apr 2020 13:46:42 +0200 Subject: [PATCH 04/46] Update third party doc with imported targets --- .../doc/Documentation/Third_party.txt | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/Documentation/doc/Documentation/Third_party.txt b/Documentation/doc/Documentation/Third_party.txt index 0aa2992e0af..b4164de39ab 100644 --- a/Documentation/doc/Documentation/Third_party.txt +++ b/Documentation/doc/Documentation/Third_party.txt @@ -132,8 +132,8 @@ sparse linear solvers and singular value decompositions. A package dependency over \sc{Eigen} is marked on the Package Overview page. In order to use Eigen in \cgal programs, the -provided CMake function `CGAL_target_use_Eigen()` should be -used. +executables should be linked with the CMake imported target +`CGAL::Eigen_support` provided in `CGAL_Eigen_support.cmake`. The \sc{Eigen} web site is `http://eigen.tuxfamily.org`. @@ -142,8 +142,7 @@ The \sc{Eigen} web site is `https://github.com/STORM-IRIT/OpenGR`. @@ -152,8 +151,10 @@ The \sc{OpenGR} web site is `http \sc{libpointmatcher} is a modular library implementing the Iterative Closest Point (ICP) algorithm for aligning point clouds, released under a permissive BSD license. \cgal provides wrappers for the ICP algorithm of \sc{libpointmatcher} in the \ref PkgPointSetProcessing3Ref -packages. In order to use \sc{libpointmatcher} in \cgal programs, the provided CMake function -`CGAL_target_use_pointmatcher()` should be used. +packages. In order to use \sc{libpointmatcher} in \cgal programs, the +executables should be linked with the CMake imported target +`CGAL::pointmatcher_support` provided in +`CGAL_pointmatcher_support.cmake`. The \sc{libpointmatcher} web site is `https://github.com/ethz-asl/libpointmatcher`. @@ -220,8 +221,9 @@ It can be downloaded from `http://esbtl. programs that take advantage of multi-core processors. In \cgal, \sc{Tbb} is used by the packages that offer parallel -code. In order to use \sc{Tbb} in \cgal programs, the provided CMake -function `CGAL_target_use_TBB()` should be used. +code. In order to use \sc{Tbb} in \cgal programs, the executables +should be linked with the CMake imported target `CGAL::TBB_support` +provided in `CGAL_TBB_support.cmake`. The \sc{Tbb} web site is `https://www.threadingbuildingblocks.org`. @@ -231,9 +233,10 @@ The \sc{Tbb} web site is `http the LAS format (or the compressed LAZ format). In \cgal, \sc{LASlib} is used to provide input and output functions in -the \ref PkgPointSetProcessing3 package. In order to use \sc{LASlib} in -\cgal programs, the provided CMake function -`CGAL_target_use_LASLIB()` should be used. +the \ref PkgPointSetProcessing3 package. In order to use \sc{LASlib} +in \cgal programs, the executables should be linked with the CMake +imported target `CGAL::LASLIB_support` provided in +`CGAL_LASLIB_support.cmake`. The \sc{LASlib} web site is `https://rapidlasso.com/lastools/`. \sc{LASlib} @@ -247,8 +250,9 @@ CMake based install procedure. vision, computer graphics and machine learning. In \cgal, \sc{OpenCV} is used by the \ref PkgClassification -package. In order to use \sc{OpenCV} in \cgal programs, the provided -CMake function `CGAL_target_use_OpenCV()` should be used. +package. In order to use \sc{OpenCV} in \cgal programs, the +executables should be linked with the CMake imported target +`CGAL::OpenCV_support` provided in `CGAL_OpenCV_support.cmake`. The \sc{OpenCV} web site is `https://opencv.org/`. @@ -266,8 +270,10 @@ enable and compile the following targets: - `tensorflow_BUILD_PYTHON_BINDINGS` - `tensorflow_BUILD_SHARED_LIB`. -In order to use \sc{TensorFlow} in \cgal programs, the provided CMake -function `CGAL_target_use_TensorFlow()` should be used. +In order to use \sc{TensorFlow} in \cgal programs, the executables +should be linked with the CMake imported target +`CGAL::TensorFlow_support` provided in +`CGAL_TensorFlow_support.cmake`. The \sc{TensorFlow} web site is `https://www.tensorflow.org/`. @@ -310,8 +316,9 @@ for more information. In \cgal, \sc{GLPK} provides an optional linear integer program solver in the \ref PkgPolygonalSurfaceReconstruction package. In order to use -\sc{GLPK} in \cgal programs, the provided CMake function -`CGAL_target_use_GLPK()` should be used. +\sc{GLPK} in \cgal programs, the executables should be linked with the +CMake imported target `CGAL::GLPK_support` provided in +`CGAL_GLPK_support.cmake`. The \sc{GLPK} web site is `https://www.gnu.org/software/glpk/`. @@ -321,8 +328,9 @@ The \sc{GLPK} web site is `https:// In \cgal, \sc{SCIP} provides an optional linear integer program solver in the \ref PkgPolygonalSurfaceReconstruction package. In order to use -\sc{SCIP} in \cgal programs, the provided CMake function -`CGAL_target_use_SCIP()` should be used. +\sc{SCIP} in \cgal programs, the executables should be linked with the +CMake imported target `CGAL::SCIP_support` provided in +`CGAL_SCIP_support.cmake`. The \sc{SCIP} web site is `http://scip.zib.de/`. From 12a51af61f61545434ca471c7a2b08e2e970257c Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Wed, 15 Apr 2020 15:02:49 +0200 Subject: [PATCH 05/46] Fixes for imported targets --- .../optimal_rotation/CMakeLists.txt | 6 +++--- Triangulation_3/demo/Triangulation_3/CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Surface_mesh_deformation/benchmark/Surface_mesh_deformation/optimal_rotation/CMakeLists.txt b/Surface_mesh_deformation/benchmark/Surface_mesh_deformation/optimal_rotation/CMakeLists.txt index 4d24c1d593c..bce18be7df6 100644 --- a/Surface_mesh_deformation/benchmark/Surface_mesh_deformation/optimal_rotation/CMakeLists.txt +++ b/Surface_mesh_deformation/benchmark/Surface_mesh_deformation/optimal_rotation/CMakeLists.txt @@ -10,13 +10,13 @@ if ( CGAL_FOUND ) include(${CGAL_USE_FILE}) find_package(Eigen3 3.1.0) #(requires 3.1.0 or greater) - if (EIGEN3_FOUND) + include(CGAL_Eigen_support) + if (TARGET CGAL::Eigen_support) create_single_source_cgal_program( "benchmark_for_concept_models.cpp" ) - CGAL_target_use_Eigen(benchmark_for_concept_models) + target_link_libraries(benchmark_for_concept_models PUBLIC CGAL::Eigen_support) else() message(STATUS "This program requires the Eigen library, version 3.1 or later and will not be compiled.") endif() else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/Triangulation_3/demo/Triangulation_3/CMakeLists.txt b/Triangulation_3/demo/Triangulation_3/CMakeLists.txt index 4b659999e15..0f3412b545f 100644 --- a/Triangulation_3/demo/Triangulation_3/CMakeLists.txt +++ b/Triangulation_3/demo/Triangulation_3/CMakeLists.txt @@ -44,7 +44,7 @@ else( CGAL_ACTIVATE_CONCURRENT_TRIANGULATION_3 ) ON) if( LINK_WITH_TBB ) find_package( TBB ) - find_package( TBB REQUIRED ) + include(CGAL_TBB_support) endif( LINK_WITH_TBB ) endif() From 637695e892dc069c448727ac01e4aaaba336ff89 Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Mon, 20 Apr 2020 09:10:23 +0200 Subject: [PATCH 06/46] Fix doc with imported targets --- .../Developer_manual/create_and_use_a_cmakelist.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt b/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt index afc413a7dd7..0fffe791b9b 100644 --- a/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt +++ b/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt @@ -18,7 +18,7 @@ find_package(CGAL REQUIRED COMPONENTS Core) target_link_libraries(my_executable CGAL::CGAL CGAL::CGAL_Core) \endcode -There are also some cmake macros to link with \cgal dependencies that can be found in +There are also imported targets to link with \cgal dependencies that can be found in the section \subpage thirdparty. \note The \cgal targets define the following compiler flags: From 7253f16801a2ec2cc7c4a9b04f991c9eaf64b8f4 Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Tue, 21 Apr 2020 15:03:48 +0200 Subject: [PATCH 07/46] Update new package OBB's cmake scripts with Eigen imported target --- .../benchmarks/Optimal_bounding_box/CMakeLists.txt | 5 +++-- .../examples/Optimal_bounding_box/CMakeLists.txt | 5 +++-- .../test/Optimal_bounding_box/CMakeLists.txt | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Optimal_bounding_box/benchmarks/Optimal_bounding_box/CMakeLists.txt b/Optimal_bounding_box/benchmarks/Optimal_bounding_box/CMakeLists.txt index 84cb0ab7dfc..86632a0be7c 100644 --- a/Optimal_bounding_box/benchmarks/Optimal_bounding_box/CMakeLists.txt +++ b/Optimal_bounding_box/benchmarks/Optimal_bounding_box/CMakeLists.txt @@ -16,10 +16,11 @@ endif() include( ${CGAL_USE_FILE} ) find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) -if (NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") return() endif() create_single_source_cgal_program("bench_obb.cpp") -CGAL_target_use_Eigen(bench_obb) +target_link_libraries(bench_obb PUBLIC CGAL::Eigen_support) diff --git a/Optimal_bounding_box/examples/Optimal_bounding_box/CMakeLists.txt b/Optimal_bounding_box/examples/Optimal_bounding_box/CMakeLists.txt index 9a67221542e..9b657c24e1b 100644 --- a/Optimal_bounding_box/examples/Optimal_bounding_box/CMakeLists.txt +++ b/Optimal_bounding_box/examples/Optimal_bounding_box/CMakeLists.txt @@ -14,7 +14,8 @@ endif() include( ${CGAL_USE_FILE} ) find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) -if (NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") return() endif() @@ -27,5 +28,5 @@ foreach(target obb_example obb_with_point_maps_example rotated_aabb_tree_example) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endforeach() diff --git a/Optimal_bounding_box/test/Optimal_bounding_box/CMakeLists.txt b/Optimal_bounding_box/test/Optimal_bounding_box/CMakeLists.txt index c0ce4c74b4a..1ba260a6b92 100644 --- a/Optimal_bounding_box/test/Optimal_bounding_box/CMakeLists.txt +++ b/Optimal_bounding_box/test/Optimal_bounding_box/CMakeLists.txt @@ -14,7 +14,8 @@ endif() include( ${CGAL_USE_FILE} ) find_package(Eigen3 3.1.0 REQUIRED) #(3.1.0 or greater) -if (NOT EIGEN3_FOUND) +include(CGAL_Eigen_support) +if (NOT TARGET CGAL::Eigen_support) message(STATUS "This project requires the Eigen library, and will not be compiled.") return() endif() @@ -27,5 +28,5 @@ foreach(target test_OBB_traits test_nelder_mead test_optimization_algorithms) - CGAL_target_use_Eigen(${target}) + target_link_libraries(${target} PUBLIC CGAL::Eigen_support) endforeach() From afade6d87a80a27c4da672b15b5e37bd050f611c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Sat, 9 May 2020 11:18:38 +0200 Subject: [PATCH 08/46] Fix a number of issues in CHANGES.md-CGAL 5.1 and add links --- Installation/CHANGES.md | 314 +++++++++++++++++++++------------------- 1 file changed, 169 insertions(+), 145 deletions(-) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index dbc8910ac48..23c9f37115c 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -1,180 +1,204 @@ Release History =============== -[Release 5.1] (https://github.com/CGAL/cgal/releases/tag/releases%2FCGAL-5.1) - -### 3D Fast Intersection and Distance Computation -- The introduction of the usage of the search tree by default for all distance queries - in the 5.0 release was actually not lazy contrary to what was announced. The behavior of the - search tree is now the following: it will be used except if an explicit call to `do_not_accelerate_distance_queries()` - is made. The construction of the search tree (once insertion of primitives is done) will be triggered by the first - distance query or by an explicit call to `accelerate_distance_queries()`. -- **Breaking change**: `accelerate_distance_queries()` and `do_not_accelerate_distance_queries()` are not longer `const` functions. - -### Optimal Bounding Box (new package) -- This package implements an optimization algorithm that aims to construct a close approximation - of the *optimal bounding box* of a mesh or a point set, which is defined as the smallest - (in terms of volume) bounding box that contains a given mesh or point set. - -### 2D and 3D Linear Geometry Kernel - - Add `CompareSignedDistanceToLine_2` in the 2D/3D Kernel concept to compare - the signed distance of two points to a line, or the line passing through two given points. - Corresponding functors in the model (`Compare_signed_distance_to_line_2`) are also added. - -### 2D Triangulations - - Add function `split_subconstraint_graph_into_constraints()` to - `Constrained_triangulation_plus_2` to initialize the constraints - from a soup of disconnected segments that should first be split - into polylines. - -### 3D Convex Hulls - - The long-deprecated function `CGAL::convex_hull_3_to_polyhedron_3()` has been removed. - The function `CGAL::convex_hull_3_to_face_graph()` should be used instead. - -### dD Spatial Searching - - - The kd-tree can now be built in parallel: `CGAL::Kd_tree::build()` - is given an optional template parameter `ConcurrencyTag` (default - value remains `CGAL::Sequential_tag` for backward compatibility). - -Release 5.0 +[Release 5.1](https://github.com/CGAL/cgal/releases/tag/releases%2FCGAL-5.1) ----------- -Release date: June 2020 +Release date: July 2020 -### Surface Mesh Topology (new package) +### [Surface Mesh Topology](https://doc.cgal.org/5.1/Manual/packages.html#PkgSurfaceMeshTopologySummary) (new package) - - This package allows to compute some topological invariants of - surfaces: - - test if two (closed) curves on a combinatorial surface are homotopic. The user can choose between free homotopy and homotopy with fixed endpoints. - - test is a curve is contractible. - - compute shortest non-contractible cycles on a surface, with or without weights on edges. +- This package enables the computation of some topological invariants of surfaces, such as: + - test if two (closed) curves on a combinatorial surface are homotopic. Users can choose + between free homotopy and homotopy with fixed endpoints; + - test is a curve is contractible; + - compute shortest non-contractible cycles on a surface, with or without weights on edges. -### 3D Fast Intersection and Distance Computation -- **Breaking change**: the internal search tree is now lazily constructed. To disable it, one must call - the new function `do_not_accelerate_distance_queries()` before the first distance query. +### [Optimal Bounding Box](https://doc.cgal.org/5.1/Manual/packages.html#PkgOptimalBoundingBox) (new package) -### Intersecting Sequences of dD Iso-oriented Boxes - - Added parallel versions of the functions `CGAL::box_intersection_d()` and `CGAL::box_self_intersection_d()`. +- This package implements an optimization algorithm that aims to construct a close approximation + of the *optimal bounding box* of a mesh or a point set, which is defined as the smallest + (in terms of volume) bounding box that contains a given mesh or point set. -### CGAL and the Boost Graph Library (BGL) - - Introduced the function `set_triangulation_ids(Triangulation& tr)` which must be used to initialize vertex, - edge, and face indices of a triangulation meant to be used with BGL algorithms. - - Added function `alpha_expansion_graphcut()` which regularizes a - multi-label partition over a user-defined graph. - - Added function `regularize_face_selection_borders()` which uses - this alpha expansion graphcut to regularize the borders of a - selected faces on a triangle mesh. +### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.1/Manual/packages.html#PkgKernel23) -### Polygon Mesh Processing +- Added the functor [`CompareSignedDistanceToLine_2`](https://doc.cgal.org/5.1/Kernel_23/classKernel_1_1CompareSignedDistanceToLine__2.html) + to the 2D/3D [`Kernel`](https://doc.cgal.org/5.1/Kernel_23/classKernel.html) concept to compare + the signed distance of two points to a line, or the line passing through two given points. + Corresponding functors in the model ([`Compare_signed_distance_to_line_2`](https://doc.cgal.org/5.1/Kernel_23/classKernel.html#a066d07dd592ac36ba7ee90988abd349f)) are also added. -- Introduced a new function, `CGAL::Polygon_mesh_processing::remove_connected_components_of_negligible_size()`, +### [dD Geometry Kernel](https://doc.cgal.org/5.1/Manual/packages.html#PkgKernelD) + +- The kernels [`Epick_d`](https://doc.cgal.org/5.1/Kernel_d/structCGAL_1_1Epick__d.html) + and [`Epeck_d`](https://doc.cgal.org/5.1/Kernel_d/structCGAL_1_1Epeck__d.html) gain two new functors: + [`Power_side_of_bounded_power_sphere_d`](https://doc.cgal.org/5.1/Kernel_d/classCGAL_1_1Epeck__d_1_1Power__side__of__bounded__power__sphere__d.html) + and [`Compute_squared_radius_smallest_orthogonal_sphere_d`](https://doc.cgal.org/5.1/Kernel_d/classCGAL_1_1Epeck__d_1_1Compute__squared__radius__smallest__orthogonal__sphere__d.html). + Those are essential for the computation of weighted alpha-complexes. + +### [CGAL and the Boost Graph Library (BGL)](https://doc.cgal.org/5.1/Manual/packages.html#PkgBGL) + +- Added the function [`alpha_expansion_graphcut()`](https://doc.cgal.org/5.1/BGL/group__PkgBGLPartition.html#ga79c3f58b577af51d1140450729d38f22), + which regularizes a multi-label partition over a user-defined graph. +- Added the function [`regularize_face_selection_borders()`](https://doc.cgal.org/5.1/BGL/group__PkgBGLSelectionFct.html#gac71322b0cc7d7d59447531d5e5e345b6), + which uses this alpha expansion graphcut to regularize the borders of a selected faces on a triangle mesh. +- Added the function [`set_triangulation_ids()`](https://doc.cgal.org/5.1/BGL/group__BGLGraphExternalIndices.html#ga1a22cf8bdde32fcdf1a4a78966eed630), + which must be used to initialize vertex, edge, and face indices of a triangulation meant to be used with BGL algorithms. + +### [3D Fast Intersection and Distance Computation](https://doc.cgal.org/5.1/Manual/packages.html#PkgAABBTree) + +- The behavior of the internal search tree used to accelerate distance queries has changed: + usage of the internal search tree will now be enabled by default, and its construction + will be triggered by the first distance query. Automatic construction and usage can be disabled + by calling [`do_not_accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#abde62f52ccdf411847151aa5000ba4a4) + before the first distance query, and the tree can be built at any moment by calling + [`accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#a5d3877d3f2afbd09341eb4b8c230080b). +- **Breaking change**: [`accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#a5d3877d3f2afbd09341eb4b8c230080b) + and [`do_not_accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#abde62f52ccdf411847151aa5000ba4a4) + are no longer `const` functions. + +### [dD Spatial Searching](https://doc.cgal.org/5.1/Manual/packages.html#PkgSpatialSearchingD) + +- The kd-tree can now be built in parallel: [`CGAL::Kd_tree::build()`](https://doc.cgal.org/5.1/Spatial_searching/classCGAL_1_1Kd__tree.html#a8559dbe4d7136fbc8ebab5ee290cbe06) + is given an optional template parameter `ConcurrencyTag` (default + value remains [`CGAL::Sequential_tag`](https://doc.cgal.org/5.1/STL_Extension/structCGAL_1_1Sequential__tag.html) + for backward compatibility). +- Improved the performance of the kd-tree in some cases: + - Not storing the points coordinates inside the tree usually + generates a lot of cache misses, leading to non-optimal + performance. This is the case for example + when indices are stored inside the tree, or to a lesser extent when the points + coordinates are stored in a dynamically allocated array (e.g., [`Epick_d`](https://doc.cgal.org/5.1/Kernel_d/structCGAL_1_1Epick__d.html) + with dynamic dimension) — we says "to a lesser extent" because the points + are re-created by the kd-tree in a cache-friendly order after its construction, + so the coordinates are more likely to be stored in a near-optimal order + on the heap. + In these cases, the new `EnablePointsCache` template parameter of the + [`CGAL::Kd_tree`](https://doc.cgal.org/5.1/Spatial_searching/classCGAL_1_1Kd__tree.html) + class can be set to `CGAL::Tag_true`. The points coordinates + will then be cached in an optimal way. This will increase memory + consumption but provides better search performance. See the updated + [`GeneralDistance`](https://doc.cgal.org/5.1/Spatial_searching/classGeneralDistance.html) + and [`FuzzyQueryItem`](https://doc.cgal.org/5.1/Spatial_searching/classFuzzyQueryItem.html) + concepts for additional requirements when using such a cache. + - In most cases (e.g., Euclidean distance), the distance computation + algorithm knows before its end that the distance will be greater + than or equal to some given value. This is used in the (orthogonal) + k-NN search to interrupt some distance computations before its end, + saving precious milliseconds, in particular in medium-to-high dimension. + +### [Intersecting Sequences of dD Iso-oriented Boxes](https://doc.cgal.org/5.1/Manual/packages.html#PkgBoxIntersectionD) + +- Added parallel versions of the functions + [`CGAL::box_intersection_d()`](https://doc.cgal.org/5.1/Box_intersection_d/group__PkgBoxIntersectionD__box__intersection__d.html) + and [`CGAL::box_self_intersection_d()`](https://doc.cgal.org/5.1/Box_intersection_d/group__PkgBoxIntersectionD__box__self__intersection__d.html). + +### [Spatial Sorting](https://doc.cgal.org/5.1/Manual/packages.html#PkgSpatialSorting) + +- Added parallel versions of the functions + [`CGAL::hilbert_sort()`](https://doc.cgal.org/5.1/Spatial_sorting/group__PkgSpatialSortingFunctions.html#ga9da67204747ac19dff65f9c9ff2fca9e) + and [`CGAL::spatial_sort()`](https://doc.cgal.org/5.1/Spatial_sorting/group__PkgSpatialSortingFunctions.html#ga7c597c11a3b3859234ff68526cead84d) + in 2D and 3D when the median policy is used. + The parallel versions use up to four threads in 2D, and up to eight threads in 3D. + +### [3D Convex Hulls](https://doc.cgal.org/5.1/Manual/packages.html#PkgConvexHull3) + +- A new overload for [`CGAL::convex_hull_3()`](https://doc.cgal.org/5.1/Convex_hull_3/group__PkgConvexHull3Functions.html#gaa02a3013808fc9a2e5e2f42b9fde8e30) + that takes a model of `VertexListGraph` has been added. +- The long-deprecated function `CGAL::convex_hull_3_to_polyhedron_3()` has been removed. + The function [`CGAL::convex_hull_3_to_face_graph()`](https://doc.cgal.org/5.1/Convex_hull_3/group__PkgConvexHull3Functions.html#ga2750f7f197588ed643679835c748c671) + should be used instead. + +### [Polygon Mesh Processing](https://doc.cgal.org/5.1/Manual/packages.html#PkgPolygonMeshProcessing) + +- Added the function [`CGAL::Polygon_mesh_processing::volume_connected_component()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__orientation__grp.html#ga133e58280959c152770525f27bb42b91), + which can be used to get information about the nesting of the connected components of a given triangle mesh and about + the volumes defined. +- Added the function [`CGAL::Polygon_mesh_processing::remove_connected_components_of_negligible_size()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__repairing__grp.html#gac544fcaba1d59d330a3a1536caff392a), which can be used to remove connected components whose area or volume is under a certain threshold. Area and volume thresholds are either specified by the user or deduced from the bounding box of the mesh. -- Added the function `CGAL::Polygon_mesh_processing::volume_connected_component()` that can be used to - get information about the nesting of the connected components of a given triangle mesh and about - the volumes defined. -- Added a new named parameter for `keep_large_connected_components()` and `remove_connected_components_of_negligible_size` - that can be used to perform a dry run of the operation, meaning that the function will return the number of connected +- Added a new named parameter for [`CGAL::Polygon_mesh_processing::keep_large_connected_components()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__keep__connected__components__grp.html#ga48e7b3e6922ee78cf8ce801e3e325d9a) + and [`CGAL::Polygon_mesh_processing::remove_connected_components_of_negligible_size`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__repairing__grp.html#gac544fcaba1d59d330a3a1536caff392a), + which can be used to perform a dry run of the operation, meaning that the function will return the number of connected components that would be removed with the specified threshold, but without actually removing them. -- The function `CGAL::Polygon_mesh_processing::stitch_borders()` now returns the number - of halfedge pairs that were stitched. -- Introduced the new functions `CGAL::Polygon_mesh_processing::merge_reversible_connected_components()`, - `CGAL::Polygon_mesh_processing::duplicate_incompatible_edges_in_polygon_soup()`, - and `CGAL::Polygon_mesh_processing::orient_triangle_soup_with_reference_triangle_mesh()` that can be helpful - when repairing a polygon soup. -- New function to split meshes along a mesh or a plane: - `CGAL::Polygon_mesh_processing::split()` -- New function to split a single mesh containing several connected components into several meshes containing one connected component: - `CGAL::Polygon_mesh_processing::split_connected_components()` - - Added parallel versions of the functions `CGAL::Polygon_mesh_processing::does_self_intersect()` - and `CGAL::Polygon_mesh_processing::self_intersections()`. - - The function `CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh` now allows passing a point map (for the point range) - and a vertex point map (for the polygon mesh) via named parameters. - - Added the function `CGAL::Polygon_mesh_processing::polygon_mesh_to_polygon_soup()`. - - Added a new function `CGAL::Polygon_mesh_processing::sample_triangle_soup()` that generates points on a triangle soup surface. +- Added the function [`CGAL::Polygon_mesh_processing::split()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__corefinement__grp.html#gaa491feee9e41f725332bea0ea1215578), + which can be used to split meshes along a mesh or a plane. +- Added the function [`CGAL::Polygon_mesh_processing::split_connected_components()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__keep__connected__components__grp.html#ga9ddd1e4b915a4232b1ce5611985302aa) + to split a single mesh containing several connected components into several meshes containing one connected component. +- Added the functions [`CGAL::Polygon_mesh_processing::merge_reversible_connected_components()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__orientation__grp.html#gae25c1198a89c53d5df2f29dd57fda5ca), + [`CGAL::Polygon_mesh_processing::duplicate_non_manifold_edges_in_polygon_soup()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__orientation__grp.html#ga2aa4f7b500dc51d1fc4747705a050946), + and [`CGAL::Polygon_mesh_processing::orient_triangle_soup_with_reference_triangle_mesh()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__orientation__grp.html#ga31779672b3afd660664fc9a6c4fdf74d), + which can be helpful when repairing a polygon soup. +- Added the function [`CGAL::Polygon_mesh_processing::sample_triangle_soup()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__distance__grp.html#gac7af41d13bf1a7c30852be266ac81db5), + which generates points on a triangle soup surface. +- Added parallel versions of the functions [`CGAL::Polygon_mesh_processing::does_self_intersect()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__intersection__grp.html#gad9fe5d8b433545b69154f43935a11a3b) + and [`CGAL::Polygon_mesh_processing::self_intersections()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__intersection__grp.html#gaf19c80ec12cbff7ebe9e69453f1d40b8). +- The function [`CGAL::Polygon_mesh_processing::stitch_borders()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__repairing__grp.html#ga8ae4352e67d2b099994ac8990c13bd41) + now returns the number of halfedge pairs that were stitched. +- Added the function [`CGAL::Polygon_mesh_processing::polygon_mesh_to_polygon_soup()`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__repairing__grp.html#ga76648a509409ff3c3ad3f71eff8ce9d9). +- The function [`CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh`](https://doc.cgal.org/5.1/Polygon_mesh_processing/group__PMP__repairing__grp.html#ga0dec58e8a0112791f72ebbe77bac074b) + now allows passing a point map (for the point range) and a vertex point map (for the polygon mesh) via named parameters. -### Point Set Processing - - Added wrapper functions for registration: - - `CGAL::OpenGR::compute_registration_transformation()` computes the registration transformation - for two point sets using Super4PCS algorithm implemented in the third party library OpenGR. - - `CGAL::OpenGR::register_point_sets()` computes the registration transformation for two point - sets using Super4PCS algorithm implemented in the third party library OpenGR, and registers - the points sets by transforming the data point set using the computed transformation. - - `CGAL::pointmatcher::compute_registration_transformation()` computes the registration - transformation for two point sets using ICP algorithm implemented in the third party library - libpointmatcher. - - `CGAL::pointmatcher::register_point_sets()` computes the registration transformation for two point - sets using ICP algorithm implemented in the third party library libpointmatcher, and registers - the points sets by transforming the data point set using the computed transformation. +### [Point Set Processing](https://doc.cgal.org/5.1/Manual/packages.html#PkgPointSetProcessing3) +- Added wrapper functions for registration: + - [`CGAL::OpenGR::compute_registration_transformation()`](https://doc.cgal.org/5.1/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#gab81663c718960780ddb176aad845e8cd), + which computes the registration transformation for two point sets using the Super4PCS algorithm + implemented in the third party library [OpenGR](https://storm-irit.github.io/OpenGR/index.html). + - [`CGAL::OpenGR::register_point_sets()`](https://doc.cgal.org/5.1/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#ga6194087f512e4e23dd945a9364d0931d), + which computes the registration transformation for two point sets using the Super4PCS algorithm + implemented in the third party library [OpenGR](https://storm-irit.github.io/OpenGR/index.html), + and registers the points sets by transforming the data point set using the computed transformation. + - [`CGAL::pointmatcher::compute_registration_transformation()`](https://doc.cgal.org/5.1/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#gaf75af5c1634fa83fa05a33e95570b127) + computes the registration transformation for two point sets using ICP algorithm implemented + in the third party library [libpointmatcher](https://github.com/ethz-asl/libpointmatcher). + - [`CGAL::pointmatcher::register_point_sets()`](https://doc.cgal.org/5.1/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#gaa222278e20a3ce41930d37326cd54ef9), + which computes the registration transformation for two point sets using ICP algorithm implemented + in the third party library [libpointmatcher](https://github.com/ethz-asl/libpointmatcher), and registers + the points sets by transforming the data point set using the computed transformation. + +### [2D Triangulations](https://doc.cgal.org/5.1/Manual/packages.html#PkgTriangulation2) -### 2D Triangulations - To fix an inconsistency between code and documentation and to clarify which types of intersections - are truly allowed in constrained Delaunay triangulations, the tag `CGAL::No_intersection_tag` - has been deprecated in favor of two new tags `CGAL::No_constraint_intersection_tag` - and `CGAL::No_constraint_intersection_requiring_constructions_tag`. + are truly allowed in constrained Delaunay triangulations, the tag [`CGAL::No_intersection_tag`](https://doc.cgal.org/5.1/Triangulation_2/structCGAL_1_1No__intersection__tag.html) + has been deprecated in favor of two new tags: [`CGAL::No_constraint_intersection_tag`](https://doc.cgal.org/5.1/Triangulation_2/structCGAL_1_1No__constraint__intersection__tag.html) + and [`CGAL::No_constraint_intersection_requiring_constructions_tag`](https://doc.cgal.org/5.1/Triangulation_2/structCGAL_1_1No__constraint__intersection__requiring__constructions__tag.html). The latter is equivalent to the now-deprecated `CGAL::No_intersection_tag`, and allows constraints to intersect as long as no new point has to be created to represent that intersection (for example, the intersection of two constraint segments in a 'T'-like junction is an existing point - and does not require any new construction). The former tag, `CGAL::No_constraint_intersection_tag`, + and as such does not require any new construction). The former tag, `CGAL::No_constraint_intersection_tag`, does not allow any intersection, except for the configuration of two constraints having a single common endpoints, for convience. +- Added the function [`CGAL::split_subconstraint_graph_into_constraints()`](https://doc.cgal.org/5.1/Triangulation_2/classCGAL_1_1Constrained__triangulation__plus__2.html#adea77f5db5cd4dfae302e4502f1caa85) + to [`Constrained_triangulation_plus_2`](https://doc.cgal.org/5.1/Triangulation_2/classCGAL_1_1Constrained__triangulation__plus__2.html) to initialize the constraints + from a soup of disconnected segments that should first be split into polylines. -### 3D Triangulations -- The free function `CGAL::file_input()` and the member function `CGAL::Triangulation_3::file_input()` - have been added. The first allows to load a `Triangulation_3` from an input stream, using functors to create vertices and cells. +### [3D Triangulations](https://doc.cgal.org/5.1/Manual/packages.html#PkgTriangulation3) + +- The free function `CGAL::file_input()` and the member function [`CGAL::Triangulation_3::file_input()`](https://doc.cgal.org/5.1/Triangulation_3/group__PkgIOTriangulation3.html#gadd94d0613e2dd9cdd2e88d2c74d5b1c8) + have been added. The first allows to load a [`CGAL::Triangulation_3`](https://doc.cgal.org/5.1/Triangulation_3/classCGAL_1_1Triangulation__3.html) + from an input stream, using functors to create vertices and cells. The second is simply the member function version of the first one. -### 3D Triangulation Data Structure -- The free function `CGAL::file_input()` and the member function `CGAL::TDS_3::file_input()` - have been added. The first allows to load a `TDS_3` from an input stream, using functors to create vertices and cells. - The second is simply the member function version of the first one. +### [3D Triangulation Data Structure](https://doc.cgal.org/5.1/Manual/packages.html#PkgTDS3) -### dD Spatial Searching +- The free function `CGAL::file_input()` and the member function [`CGAL::TDS_3::file_input()`](https://doc.cgal.org/5.1/TDS_3/group__PkgIOTDS3.html#ga381446a02a9240cc83e79c48b37cd119) + have been added. The first allows to load a [`CGAL::Triangulation_data_structure_3`](https://doc.cgal.org/5.1/TDS_3/classCGAL_1_1Triangulation__data__structure__3.html) + from an input stream, using functors to create vertices and cells. + The second is simply the member function version of the first one. -- Improved the performance of the kd-tree in some cases: - - Not storing the points coordinates inside the tree usually - generates a lot of cache misses, leading to non-optimal - performance. This is the case for example - when indices are stored inside the tree, or to a lesser extent when the points - coordinates are stored in a dynamically allocated array (e.g., `Epick_d` - with dynamic dimension) — we says "to a lesser extent" because the points - are re-created by the kd-tree in a cache-friendly order after its construction, - so the coordinates are more likely to be stored in a near-optimal order - on the heap. - In these cases, the new `EnablePointsCache` template parameter of the - `CGAL::Kd_tree` class can be set to `CGAL::Tag_true`. The points coordinates - will then be cached in an optimal way. This will increase memory - consumption but provides better search performance. See the updated - `GeneralDistance` and `FuzzyQueryItem` - concepts for additional requirements when using such a cache. - - In most cases (e.g., Euclidean distance), the distance computation - algorithm knows before its end that the distance will be greater - than or equal to some given value. This is used in the (orthogonal) - k-NN search to interrupt some distance computations before its end, - saving precious milliseconds, in particular in medium-to-high dimension. +### [Surface Mesh Simplification](https://doc.cgal.org/5.1/Manual/packages.html#PkgSurfaceMeshSimplification) -### Spatial Sorting - - Added parallel versions of `hilbert_sort()` and `spatial_sort()` in 2D and 3D when the median policy is used. - The parallel versions use up to four threads in 2D, and up to eight threads in 3D. +- Added a [new simplification method](https://doc.cgal.org/5.1/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1GarlandHeckbert__policies.html) + based on the quadric error defined by Garland and Heckbert. +- The concept `EdgeProfile` has been removed. This concept was not actually in use as the CGAL-provided model [`CGAL::Edge_profile`](https://doc.cgal.org/5.1/Surface_mesh_simplification/classCGAL_1_1Surface__mesh__simplification_1_1Edge__profile.html) + was imposed to the user. Other concepts have been clarified to reflect the fact that the API uses this particular class. -### dD Geometry Kernel -- Epick\_d and Epeck\_d gain 2 new functors: `Power_side_of_bounded_power_sphere_d` and - `Compute_squared_radius_smallest_orthogonal_sphere_d`. Those are - essential for the computation of weighted alpha-complexes. +### [STL Extensions for CGAL](https://doc.cgal.org/5.1/Manual/packages.html#PkgSTLExtension) -### Surface Mesh Simplification -- Added a new simplification method based on the quadric error defined by Garland and Heckbert. -- The concept "EdgeProfile" has been removed. This concept was not actually in use as the CGAL-provided model `CGAL::Edge_profile` - was imposed to the user. Other concepts have been clarified to reflect the fact that the API uses this particular class. - -### STL Extensions for CGAL - - Added a new concurrency tag: `CGAL::Parallel_if_available_tag`. This tag is a convenience typedef to `CGAL::Parallel_tag` - if the third party library TBB has been found and linked with, and to `CGAL::Sequential_tag` otherwise. - -### Convex_hull_3 -- A new overload for `convex_hull_3()` that takes a model of `VertexListGraph` has been added. +- Added a new concurrency tag: [`CGAL::Parallel_if_available_tag`](https://doc.cgal.org/5.1/STL_Extension/structCGAL_1_1Parallel__if__available__tag.html). + This tag is a convenience typedef to [`CGAL::Parallel_tag`](https://doc.cgal.org/5.1/STL_Extension/structCGAL_1_1Parallel__tag.html) + if the third party library TBB has been found and linked with, and to + [`CGAL::Sequential_tag`](https://doc.cgal.org/5.1/STL_Extension/structCGAL_1_1Sequential__tag.html) otherwise. [Release 5.0](https://github.com/CGAL/cgal/releases/tag/releases%2FCGAL-5.0) From 171ef5a0e760dada72045bfba909a487d844fda1 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 11 May 2020 10:10:49 +0200 Subject: [PATCH 09/46] Fix CHANGES.MD for file_input --- Installation/CHANGES.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 23c9f37115c..35d24f35b0d 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -174,17 +174,15 @@ Release date: July 2020 ### [3D Triangulations](https://doc.cgal.org/5.1/Manual/packages.html#PkgTriangulation3) -- The free function `CGAL::file_input()` and the member function [`CGAL::Triangulation_3::file_input()`](https://doc.cgal.org/5.1/Triangulation_3/group__PkgIOTriangulation3.html#gadd94d0613e2dd9cdd2e88d2c74d5b1c8) - have been added. The first allows to load a [`CGAL::Triangulation_3`](https://doc.cgal.org/5.1/Triangulation_3/classCGAL_1_1Triangulation__3.html) +- The member function [`CGAL::Triangulation_3::file_input()`](https://doc.cgal.org/5.1/Triangulation_3/group__PkgIOTriangulation3.html#gadd94d0613e2dd9cdd2e88d2c74d5b1c8) + have been added. It allows to load a [`CGAL::Triangulation_3`](https://doc.cgal.org/5.1/Triangulation_3/classCGAL_1_1Triangulation__3.html) from an input stream, using functors to create vertices and cells. - The second is simply the member function version of the first one. ### [3D Triangulation Data Structure](https://doc.cgal.org/5.1/Manual/packages.html#PkgTDS3) -- The free function `CGAL::file_input()` and the member function [`CGAL::TDS_3::file_input()`](https://doc.cgal.org/5.1/TDS_3/group__PkgIOTDS3.html#ga381446a02a9240cc83e79c48b37cd119) - have been added. The first allows to load a [`CGAL::Triangulation_data_structure_3`](https://doc.cgal.org/5.1/TDS_3/classCGAL_1_1Triangulation__data__structure__3.html) +- The member function [`CGAL::TDS_3::file_input()`](https://doc.cgal.org/5.1/TDS_3/group__PkgIOTDS3.html#ga381446a02a9240cc83e79c48b37cd119) + have been added. It allows to load a [`CGAL::Triangulation_data_structure_3`](https://doc.cgal.org/5.1/TDS_3/classCGAL_1_1Triangulation__data__structure__3.html) from an input stream, using functors to create vertices and cells. - The second is simply the member function version of the first one. ### [Surface Mesh Simplification](https://doc.cgal.org/5.1/Manual/packages.html#PkgSurfaceMeshSimplification) From 5a95259849117c78efdd8f01cb77bf06004222ab Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Mon, 18 May 2020 13:40:31 +0200 Subject: [PATCH 10/46] Fix for cmake > 3.11 --- .../modules/CGAL_Boost_iostreams_support.cmake | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake b/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake index ae665d404fe..6a9680b5f0f 100644 --- a/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake +++ b/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake @@ -31,7 +31,14 @@ if(Boost_IOSTREAMS_FOUND AND NOT TARGET CGAL::Boost_iostreams_support) endif() add_library(CGAL::Boost_iostreams_support INTERFACE IMPORTED) - set_target_properties(CGAL::Boost_iostreams_support PROPERTIES - INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_BOOST_IOSTREAMS" - INTERFACE_LINK_LIBRARIES "${Boost_LIB};${ZLIB_LIBS}") + + if(CMAKE_VERSION VERSION_LESS 3.11) + set_target_properties(CGAL::Boost_iostreams_support PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_BOOST_IOSTREAMS" + INTERFACE_LINK_LIBRARIES "${Boost_LIB};${ZLIB_LIBS}") + else() + set_target_properties(CGAL::Boost_iostreams_support PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_BOOST_IOSTREAMS") + target_link_libraries(CGAL::Boost_iostreams_support INTERFACE "${Boost_LIB};${ZLIB_LIBS}") + endif() endif() From b2fe891802cd1f635b4ea20a5fc5f534bfb3fa8a Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Thu, 28 May 2020 08:59:18 +0200 Subject: [PATCH 11/46] Fix cmake --- Installation/lib/cmake/CGAL/CGALConfig.cmake | 10 ---------- .../examples/Point_set_processing_3/CMakeLists.txt | 1 - 2 files changed, 11 deletions(-) diff --git a/Installation/lib/cmake/CGAL/CGALConfig.cmake b/Installation/lib/cmake/CGAL/CGALConfig.cmake index de6a495a1bc..11ff7810d31 100644 --- a/Installation/lib/cmake/CGAL/CGALConfig.cmake +++ b/Installation/lib/cmake/CGAL/CGALConfig.cmake @@ -159,17 +159,7 @@ endforeach() cgal_setup_module_path() set(CGAL_USE_FILE ${CGAL_MODULES_DIR}/UseCGAL.cmake) -include(${CGAL_MODULES_DIR}/CGAL_target_use_Boost_IOStreams.cmake) -include(${CGAL_MODULES_DIR}/CGAL_target_use_Boost_Serialization.cmake) -include(${CGAL_MODULES_DIR}/CGAL_target_use_Eigen.cmake) -include(${CGAL_MODULES_DIR}/CGAL_target_use_GLPK.cmake) -include(${CGAL_MODULES_DIR}/CGAL_target_use_LASLIB.cmake) -include(${CGAL_MODULES_DIR}/CGAL_target_use_OpenCV.cmake) -include(${CGAL_MODULES_DIR}/CGAL_target_use_OpenGR.cmake) -include(${CGAL_MODULES_DIR}/CGAL_target_use_SCIP.cmake) include(${CGAL_MODULES_DIR}/CGAL_target_use_TBB.cmake) -include(${CGAL_MODULES_DIR}/CGAL_target_use_TensorFlow.cmake) -include(${CGAL_MODULES_DIR}/CGAL_target_use_pointmatcher.cmake) include("${CGAL_MODULES_DIR}/CGAL_parse_version_h.cmake") cgal_parse_version_h( "${CGAL_INSTALLATION_PACKAGE_DIR}/include/CGAL/version.h" diff --git a/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt b/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt index f362e4d9e35..83253368016 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt +++ b/Point_set_processing_3/examples/Point_set_processing_3/CMakeLists.txt @@ -78,7 +78,6 @@ if ( CGAL_FOUND ) foreach(target jet_smoothing_example normal_estimation - edges_example clustering_example edges_example callback_example From 7915057945a48b900286ec1c642526b7cdea1f6b Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 29 May 2020 16:35:21 +0200 Subject: [PATCH 12/46] add missing includes --- Classification/test/Classification/CMakeLists.txt | 1 + Spatial_searching/examples/Spatial_searching/CMakeLists.txt | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Classification/test/Classification/CMakeLists.txt b/Classification/test/Classification/CMakeLists.txt index a93e0277355..e9ad1a332dc 100644 --- a/Classification/test/Classification/CMakeLists.txt +++ b/Classification/test/Classification/CMakeLists.txt @@ -44,6 +44,7 @@ if (NOT TARGET CGAL::Eigen_support) endif() find_package(TBB QUIET) +include(CGAL_TBB_support) if (NOT Classification_dependencies_met) return() diff --git a/Spatial_searching/examples/Spatial_searching/CMakeLists.txt b/Spatial_searching/examples/Spatial_searching/CMakeLists.txt index 731eab89761..6ea87500e55 100644 --- a/Spatial_searching/examples/Spatial_searching/CMakeLists.txt +++ b/Spatial_searching/examples/Spatial_searching/CMakeLists.txt @@ -79,9 +79,10 @@ else() endif() find_package( TBB QUIET ) -if(TBB_FOUND) +include(CGAL_TBB_support) +if(TARGET CGAL::TBB_support) create_single_source_cgal_program( "parallel_kdtree.cpp" ) - cgal_target_use_TBB(parallel_kdtree) + target_link_libraries(parallel_kdtree PUBLIC CGAL::TBB_support) else() message(STATUS "parallel_kdtree.cpp requires TBB and will not be compiled") endif() From 4af1e73f69d50ad5847b0af92341d2d8037ff953 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 2 Jun 2020 10:11:28 +0200 Subject: [PATCH 13/46] Work around for moc bug --- Installation/include/CGAL/config.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Installation/include/CGAL/config.h b/Installation/include/CGAL/config.h index d70989b2ffb..98b2a2f5c6c 100644 --- a/Installation/include/CGAL/config.h +++ b/Installation/include/CGAL/config.h @@ -101,6 +101,10 @@ // fails as well # define BOOST_TT_HAS_POST_DECREMENT_HPP_INCLUDED # define BOOST_TT_HAS_POST_INCREMENT_HPP_INCLUDED +//work around for moc bug : https://bugreports.qt.io/browse/QTBUG-80990 +#if defined(CGAL_LINKED_WITH_TBB) +#undef CGAL_LINKED_WITH_TBB +#endif #endif // Macro used by Boost Parameter. Mesh_3 needs at least 12, before the From a443ad51ccf3a06a6b0f7d2c3d75c7d6012e4de7 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Tue, 2 Jun 2020 10:47:00 +0200 Subject: [PATCH 14/46] Hack to add a warning for the documentation of master --- Documentation/doc/resources/1.8.13/menu_version.js | 9 +++++++++ Documentation/doc/resources/1.8.14/menu_version.js | 9 +++++++++ Documentation/doc/resources/1.8.4/menu_version.js | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/Documentation/doc/resources/1.8.13/menu_version.js b/Documentation/doc/resources/1.8.13/menu_version.js index 36b298ee045..64781b67e1d 100644 --- a/Documentation/doc/resources/1.8.13/menu_version.js +++ b/Documentation/doc/resources/1.8.13/menu_version.js @@ -23,6 +23,15 @@ ]; function build_select(current_version) { + if( current_version == 'master') { + let top_elt = document.getElementById("top"); + + let first_element = top_elt.childNodes[0]; + let new_div = document.createElement("p"); + new_div.innerHTML = '⚠️ This documentation corresponds to the master branch of CGAL, that is not yet released.'; + new_div.style.cssText = "background-color: #ff9800; margin: 1ex auto 1ex 1em; padding: 1ex; border-radius: 1ex; width: max-content;" + let OK = top_elt.insertBefore(new_div, first_element); + } var buf = ['']; $.each(all_versions, function(id) { var version = all_versions[id]; diff --git a/Documentation/doc/resources/1.8.4/menu_version.js b/Documentation/doc/resources/1.8.4/menu_version.js index 36b298ee045..64781b67e1d 100644 --- a/Documentation/doc/resources/1.8.4/menu_version.js +++ b/Documentation/doc/resources/1.8.4/menu_version.js @@ -23,6 +23,15 @@ ]; function build_select(current_version) { + if( current_version == 'master') { + let top_elt = document.getElementById("top"); + + let first_element = top_elt.childNodes[0]; + let new_div = document.createElement("p"); + new_div.innerHTML = '⚠️ This documentation corresponds to the master branch of CGAL, that is not yet released.'; + new_div.style.cssText = "background-color: #ff9800; margin: 1ex auto 1ex 1em; padding: 1ex; border-radius: 1ex; width: max-content;" + let OK = top_elt.insertBefore(new_div, first_element); + } var buf = ['']; diff --git a/Documentation/doc/resources/1.8.14/menu_version.js b/Documentation/doc/resources/1.8.14/menu_version.js index 4ccccdef247..0626471f903 100644 --- a/Documentation/doc/resources/1.8.14/menu_version.js +++ b/Documentation/doc/resources/1.8.14/menu_version.js @@ -28,8 +28,8 @@ let first_element = top_elt.childNodes[0]; let new_div = document.createElement("p"); - new_div.innerHTML = '⚠️ This documentation corresponds to the master branch of CGAL, that is not yet released.'; - new_div.style.cssText = "background-color: #ff9800; margin: 1ex auto 1ex 1em; padding: 1ex; border-radius: 1ex; width: max-content;" + new_div.innerHTML = '⚠️ This documentation corresponds to the master development branch of CGAL. It might diverge from the official releases.'; + new_div.style.cssText = "background-color: #ff9800; margin: 1ex auto 1ex 1em; padding: 1ex; border-radius: 1ex; display: inline-block;" let OK = top_elt.insertBefore(new_div, first_element); } var buf = ['']; From 3356d066cc851120c72cb195709bf1f4887d1727 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 2 Jun 2020 15:31:55 +0200 Subject: [PATCH 17/46] fix boost zlib targets --- Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake | 4 ++-- .../cmake/modules/CGAL_Boost_serialization_support.cmake | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake b/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake index 6a9680b5f0f..04c8cc5529b 100644 --- a/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake +++ b/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake @@ -35,10 +35,10 @@ if(Boost_IOSTREAMS_FOUND AND NOT TARGET CGAL::Boost_iostreams_support) if(CMAKE_VERSION VERSION_LESS 3.11) set_target_properties(CGAL::Boost_iostreams_support PROPERTIES INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_BOOST_IOSTREAMS" - INTERFACE_LINK_LIBRARIES "${Boost_LIB};${ZLIB_LIBS}") + INTERFACE_LINK_LIBRARIES ${Boost_LIB} ${ZLIB_LIBS}) else() set_target_properties(CGAL::Boost_iostreams_support PROPERTIES INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_BOOST_IOSTREAMS") - target_link_libraries(CGAL::Boost_iostreams_support INTERFACE "${Boost_LIB};${ZLIB_LIBS}") + target_link_libraries(CGAL::Boost_iostreams_support INTERFACE ${Boost_LIB} ${ZLIB_LIBS}) endif() endif() diff --git a/Installation/cmake/modules/CGAL_Boost_serialization_support.cmake b/Installation/cmake/modules/CGAL_Boost_serialization_support.cmake index 236fbb4bf0c..84a5ae6657b 100644 --- a/Installation/cmake/modules/CGAL_Boost_serialization_support.cmake +++ b/Installation/cmake/modules/CGAL_Boost_serialization_support.cmake @@ -8,5 +8,5 @@ if(Boost_SERIALIZATION_FOUND AND NOT TARGET CGAL::Boost_serialization_support) add_library(CGAL::Boost_serialization_support INTERFACE IMPORTED) set_target_properties(CGAL::Boost_serialization_support PROPERTIES INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_BOOST_SERIALIZATION" - INTERFACE_LINK_LIBRARIES "${Boost_LIB}") + INTERFACE_LINK_LIBRARIES ${Boost_LIB}) endif() From 83ed34b6f2b121abf345380590e2c2cc43359964 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 2 Jun 2020 16:04:53 +0200 Subject: [PATCH 18/46] reduce limit for triggering offset --- Polyhedron/demo/Polyhedron/MainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polyhedron/demo/Polyhedron/MainWindow.cpp b/Polyhedron/demo/Polyhedron/MainWindow.cpp index ee2274122fe..3951ba10c1c 100644 --- a/Polyhedron/demo/Polyhedron/MainWindow.cpp +++ b/Polyhedron/demo/Polyhedron/MainWindow.cpp @@ -1027,7 +1027,7 @@ void MainWindow::computeViewerBBox(CGAL::qglviewer::Vec& vmin, CGAL::qglviewer:: double l_dist = (std::max)((std::abs)(bbox_center.x - viewer->offset().x), (std::max)((std::abs)(bbox_center.y - viewer->offset().y), (std::abs)(bbox_center.z - viewer->offset().z))); - if((std::log2)(l_dist/bbox_diag) > 13.0 ) + if((std::log2)(l_dist/bbox_diag) > 11.0 ) for(int i=0; i<3; ++i) { offset[i] = -bbox_center[i]; From dac2ad159e4924a281225f05e8ef215072ec5fcf Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 2 Jun 2020 16:08:30 +0200 Subject: [PATCH 19/46] Fix path in partition --- .../Plugins/Operations_on_polyhedra/PartitionDialog.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polyhedron/demo/Polyhedron/Plugins/Operations_on_polyhedra/PartitionDialog.ui b/Polyhedron/demo/Polyhedron/Plugins/Operations_on_polyhedra/PartitionDialog.ui index 1c939c87a9c..91f3b989f8a 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Operations_on_polyhedra/PartitionDialog.ui +++ b/Polyhedron/demo/Polyhedron/Plugins/Operations_on_polyhedra/PartitionDialog.ui @@ -67,7 +67,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tip: To split your mesh according to the result of this operation, you can click on </p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Operations-&gt;Operations on Polyhedra-&gt;Split Selected Polyhedra</span></p></body></html> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Operations-&gt;Polygon Mesh Processing-&gt;Split Selected Polyhedra</span></p></body></html> From 8adf6511ffbc6e4c85d3399bb74648636dd0c39a Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 3 Jun 2020 09:31:46 +0200 Subject: [PATCH 20/46] Fix Polygon soup description --- Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp b/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp index dfe4f2898f5..e4d61b95ef9 100644 --- a/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp @@ -512,7 +512,7 @@ Scene_polygon_soup_item::toolTip() const return QString(); QString str = QObject::tr("

%1 (mode: %5, color: %6)
" - "Polygons soup

" + "Polygon soup

" "

Number of vertices: %2
" "Number of polygons: %3

") .arg(this->name()) From ee4f996043e752ef00c64a369929a1c5a93e0680 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 3 Jun 2020 11:24:18 +0200 Subject: [PATCH 21/46] Add a clone to the c3t3 and fix an error in the cutting plane orientation --- Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp | 12 ++++++++++-- Polyhedron/demo/Polyhedron/Scene_c3t3_item.h | 5 ++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp index 01c192db153..1595716a2c9 100644 --- a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp @@ -157,7 +157,7 @@ public : const EPICK::Plane_3& plane = qobject_cast(this->parent())->plane(); float shrink_factor = qobject_cast(this->parent())->getShrinkFactor(); QVector4D cp = cgal_plane_to_vector4d(plane); - getTriangleContainer(0)->setPlane(cp); + getTriangleContainer(0)->setPlane(-cp); getTriangleContainer(0)->setShrinkFactor(shrink_factor); // positions_poly is also used for the faces in the cut plane // and changes when the cut plane is moved @@ -569,8 +569,10 @@ Scene_c3t3_item::Scene_c3t3_item(const C3t3& c3t3, bool is_surface) : Scene_group_item("unnamed") , d(new Scene_c3t3_item_priv(c3t3, this)) { - d->reset_cut_plane(); common_constructor(is_surface); + d->reset_cut_plane(); + c3t3_changed(); + changed(); } Scene_c3t3_item::~Scene_c3t3_item() @@ -2097,5 +2099,11 @@ void Scene_c3t3_item::newViewer(Viewer_interface *viewer) d->computeIntersections(viewer); } } + +Scene_c3t3_item* Scene_c3t3_item::clone() const +{ + return new Scene_c3t3_item(d->c3t3, d->is_surface); +} + #include "Scene_c3t3_item.moc" diff --git a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h index 1c2e4316451..90b02e87c7b 100644 --- a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h +++ b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h @@ -101,9 +101,8 @@ public: { return Scene_item::bbox(); } - Scene_c3t3_item* clone() const Q_DECL_OVERRIDE{ - return 0; - } + + Scene_c3t3_item* clone() const Q_DECL_OVERRIDE; bool load_binary(std::istream& is); From 9551708e88667b7d27121a2ec7ea3388c41c8090 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 3 Jun 2020 15:02:58 +0200 Subject: [PATCH 22/46] Fix crash in skeletonization --- Three/include/CGAL/Three/Scene_group_item.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Three/include/CGAL/Three/Scene_group_item.h b/Three/include/CGAL/Three/Scene_group_item.h index 3f46883a8c7..626e69240ab 100644 --- a/Three/include/CGAL/Three/Scene_group_item.h +++ b/Three/include/CGAL/Three/Scene_group_item.h @@ -245,8 +245,12 @@ public Q_SLOTS: { for(int i = 0; i < children.size(); ++i) { - if(children[i] >= removed_id) + if(children[i] > removed_id) --children[i]; + else if(children[i] == removed_id)//child has been removed from the scene, it doesn't exist anymore. + { + children.removeAll(removed_id); + } } } private: From 7d5c8e255833a2bc04fce7fda70384623c7aa4e1 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 3 Jun 2020 15:56:13 +0200 Subject: [PATCH 23/46] Restore missing dependency for register_point_set_plugin --- Polyhedron/demo/Polyhedron/Plugins/Point_set/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Polyhedron/demo/Polyhedron/Plugins/Point_set/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Point_set/CMakeLists.txt index c9850cf0684..a1ec1dec229 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Point_set/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Point_set/CMakeLists.txt @@ -48,6 +48,7 @@ if(TARGET CGAL::Eigen_support) if (TARGET CGAL::OpenGR_support OR CGAL::pointmatcher_support) qt5_wrap_ui(register_point_setsUI_FILES Register_point_sets_plugin.ui) polyhedron_demo_plugin(register_point_sets_plugin Register_point_sets_plugin ${register_point_setsUI_FILES} KEYWORDS PointSetProcessing) + target_link_libraries(register_point_sets_plugin PUBLIC scene_points_with_normal_item) target_link_libraries(register_point_sets_plugin PUBLIC CGAL::Eigen_support) if (TARGET CGAL::OpenGR_support) target_link_libraries(register_point_sets_plugin PUBLIC CGAL::OpenGR_support) From 4a9618f62c1423489b5b56946dccf21d140548f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 3 Jun 2020 17:11:38 +0200 Subject: [PATCH 24/46] Add missing links --- Installation/CHANGES.md | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index b7abcf127fb..15b3c0f478f 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -28,13 +28,14 @@ Release date: July 2020 Corresponding functors in the model ([`Compare_signed_distance_to_line_2`](https://doc.cgal.org/5.1/Kernel_23/classKernel.html#a066d07dd592ac36ba7ee90988abd349f)) are also added. ### [dD Geometry Kernel](https://doc.cgal.org/5.1/Manual/packages.html#PkgKernelD) + - The kernels [`Epick_d`](https://doc.cgal.org/5.1/Kernel_d/structCGAL_1_1Epick__d.html) and [`Epeck_d`](https://doc.cgal.org/5.1/Kernel_d/structCGAL_1_1Epeck__d.html) gain two new functors: [`Power_side_of_bounded_power_sphere_d`](https://doc.cgal.org/5.1/Kernel_d/classCGAL_1_1Epeck__d_1_1Power__side__of__bounded__power__sphere__d.html) and [`Compute_squared_radius_smallest_orthogonal_sphere_d`](https://doc.cgal.org/5.1/Kernel_d/classCGAL_1_1Epeck__d_1_1Compute__squared__radius__smallest__orthogonal__sphere__d.html). Those are essential for the computation of weighted alpha-complexes. -### Surface Mesh +### [Surface Mesh](https://doc.cgal.org/5.1/Manual/packages.html#PkgSurfaceMesh) - **Breaking change**: The function `CGAL::Surface_mesh::clear()` now removes all non-default properties instead of just emptying them. @@ -59,21 +60,24 @@ Release date: July 2020 and [`do_not_accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#abde62f52ccdf411847151aa5000ba4a4) are no longer `const` functions. -### 2D Arrangement on Surface - - Changed intersection return type from legacy `CGAL::Object` to modern - `boost::variant` in all traits concepts and models. +### [2D Arrangements](https://doc.cgal.org/5.1/Manual/packages.html#PkgArrangementOnSurface2) + + - Changed intersection return type from legacy [`CGAL::Object`](https://doc.cgal.org/5.1/STL_Extension/classCGAL_1_1Object.html) + to modern `boost::variant` in all traits concepts and models. As there exists an implicit conversion from `boost::variant` to `CGAL::Object`, the new code is backward compatible. However, it is recommended that all calls to the intersection functions are fixed to use the new return type. -### 2D Regularized Boolean Operations - - Changed intersection return type from legacy `CGAL::Object` to modern - `boost::variant` in the concept `ArrDirectionalTraits::Intersect_2` and - its models. +### [2D Regularized Boolean Set-Operations](https://doc.cgal.org/5.1/Manual/packages.html#PkgBooleanSetOperations2) -### 2D Minkowski Sums - - Changed intersection return type from legacy `CGAL::Object` to modern - `boost::variant` in the (internally used) model `Arr_labeled_traits_2`. + - Changed intersection return type from legacy [`CGAL::Object`](https://doc.cgal.org/5.1/STL_Extension/classCGAL_1_1Object.html) + to modern `boost::variant` in the concept [`ArrDirectionalTraits::Intersect_2`](https://doc.cgal.org/5.1/Boolean_set_operations_2/namespaceArrDirectionalTraits.html) + and its models. + +### [2D Minkowski Sums](https://doc.cgal.org/5.1/Manual/packages.html#PkgMinkowskiSum2) + + - Changed intersection return type from legacy [`CGAL::Object`](https://doc.cgal.org/5.1/STL_Extension/classCGAL_1_1Object.html) + to modern `boost::variant` in the (internally used) model `Arr_labeled_traits_2`. ### [dD Spatial Searching](https://doc.cgal.org/5.1/Manual/packages.html#PkgSpatialSearchingD) @@ -159,13 +163,12 @@ Release date: July 2020 ### [Point Set Processing](https://doc.cgal.org/5.1/Manual/packages.html#PkgPointSetProcessing3) -- **Breaking change:** `CGAL::remove_outliers()` has been - parallelized and thus has a new template parameter - `ConcurrencyTag`. To update your code simply add as first template - parameter `CGAL::Sequential_tag` or `CGAL::Parallel_tag` when - calling this function. -- Add a function `CGAL::cluster_point_set()` that segments a point - cloud into connected components based on a distance threshold. +- **Breaking change:** [`CGAL::remove_outliers()`](https://doc.cgal.org/5.1/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#ga1ab1dcee59caadde50572c5a504cc41a) + has been parallelized and thus has a new template parameter `ConcurrencyTag`. + To update your code simply add as first template parameter `CGAL::Sequential_tag` or `CGAL::Parallel_tag` + when calling this function. +- Add a function [`CGAL::cluster_point_set()`](https://doc.cgal.org/5.1/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#gafee41d60b5a257ae034e9157d0af8e46) + that segments a point cloud into connected components based on a distance threshold. - Added wrapper functions for registration: - [`CGAL::OpenGR::compute_registration_transformation()`](https://doc.cgal.org/5.1/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#gab81663c718960780ddb176aad845e8cd), which computes the registration transformation for two point sets using the Super4PCS algorithm From 05c36b37ec768f1e1a7aa6684422c9a3bddd1b0d Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 3 Jun 2020 17:13:39 +0200 Subject: [PATCH 25/46] clean-up --- .../include/CGAL/Polygon_mesh_processing/distance.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/distance.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/distance.h index de1b924c658..d85c07a8566 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/distance.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/distance.h @@ -29,7 +29,7 @@ #include #ifdef CGAL_LINKED_WITH_TBB -#include "tbb/parallel_reduce.h" +#include #include #include #endif // CGAL_LINKED_WITH_TBB @@ -82,7 +82,7 @@ struct Distance_computation{ const PointRange& sample_points; Point_3 initial_hint; double distance; - //constro + //constructor Distance_computation( const AABB_tree& tree, const Point_3& p, @@ -92,7 +92,7 @@ struct Distance_computation{ , initial_hint(p) , distance(-1) {} - //split constro + //split constructor Distance_computation(Distance_computation& s, tbb::split ) : tree(s.tree) , sample_points(s.sample_points) From 02f80631111fe81955b16208b6bd8ef3804891ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 3 Jun 2020 17:27:44 +0200 Subject: [PATCH 26/46] Add Tetrahedral Remeshing to CHANGES.md --- Installation/CHANGES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 15b3c0f478f..f7bf118fd99 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -20,6 +20,11 @@ Release date: July 2020 of the *optimal bounding box* of a mesh or a point set, which is defined as the smallest (in terms of volume) bounding box that contains a given mesh or point set. +### [Tetrahedral Remeshing](https://doc.cgal.org/5.1/Manual/packages.html#PkgTetrahedralRemeshing) (new package) +- This package implements a tetrahedral isotropic remeshing algorithm, + that improves the quality of tetrahedra in terms of dihedral angles, + while targetting a given edge length. + ### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.1/Manual/packages.html#PkgKernel23) - Added the functor [`CompareSignedDistanceToLine_2`](https://doc.cgal.org/5.1/Kernel_23/classKernel_1_1CompareSignedDistanceToLine__2.html) From 613eda4e9d839481fa4ac883b72d161a0d546ef1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 3 Jun 2020 17:28:02 +0200 Subject: [PATCH 27/46] Resize Tetrahedral Remeshing package icon to the proper (120x120) size --- .../fig/bimba_back_small.png | Bin 26205 -> 11525 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/fig/bimba_back_small.png b/Tetrahedral_remeshing/doc/Tetrahedral_remeshing/fig/bimba_back_small.png index 5cfbd7e3fd8da8705837dfc17cd6dd6e4f04e095..f0f2c0912f3b3ae6311fda36c8d097aab1b209fa 100644 GIT binary patch literal 11525 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 literal 26205 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 M07*qoM6N<$f^sX_O8@`> From 09fa7feef287fbeac4c90e983a597ed00fd828ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 3 Jun 2020 17:39:29 +0200 Subject: [PATCH 28/46] Misc minor fixes --- Installation/CHANGES.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index f7bf118fd99..fb6c4e12413 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -21,6 +21,7 @@ Release date: July 2020 (in terms of volume) bounding box that contains a given mesh or point set. ### [Tetrahedral Remeshing](https://doc.cgal.org/5.1/Manual/packages.html#PkgTetrahedralRemeshing) (new package) + - This package implements a tetrahedral isotropic remeshing algorithm, that improves the quality of tetrahedra in terms of dihedral angles, while targetting a given edge length. @@ -42,15 +43,16 @@ Release date: July 2020 ### [Surface Mesh](https://doc.cgal.org/5.1/Manual/packages.html#PkgSurfaceMesh) -- **Breaking change**: The function `CGAL::Surface_mesh::clear()` now removes all non-default properties instead of just emptying them. +- **Breaking change**: The function [`CGAL::Surface_mesh::clear()`](https://doc.cgal.org/5.1/Surface_mesh/classCGAL_1_1Surface__mesh.html#a247d4ad3e6b106ae22e5306203812642) + now removes all non-default properties instead of just emptying them. ### [CGAL and the Boost Graph Library (BGL)](https://doc.cgal.org/5.1/Manual/packages.html#PkgBGL) -- Added the function [`alpha_expansion_graphcut()`](https://doc.cgal.org/5.1/BGL/group__PkgBGLPartition.html#ga79c3f58b577af51d1140450729d38f22), +- Added the function [`CGAL::alpha_expansion_graphcut()`](https://doc.cgal.org/5.1/BGL/group__PkgBGLPartition.html#ga79c3f58b577af51d1140450729d38f22), which regularizes a multi-label partition over a user-defined graph. -- Added the function [`regularize_face_selection_borders()`](https://doc.cgal.org/5.1/BGL/group__PkgBGLSelectionFct.html#gac71322b0cc7d7d59447531d5e5e345b6), +- Added the function [`CGAL::regularize_face_selection_borders()`](https://doc.cgal.org/5.1/BGL/group__PkgBGLSelectionFct.html#gac71322b0cc7d7d59447531d5e5e345b6), which uses this alpha expansion graphcut to regularize the borders of a selected faces on a triangle mesh. -- Added the function [`set_triangulation_ids()`](https://doc.cgal.org/5.1/BGL/group__BGLGraphExternalIndices.html#ga1a22cf8bdde32fcdf1a4a78966eed630), +- Added the function [`CGAL::set_triangulation_ids()`](https://doc.cgal.org/5.1/BGL/group__BGLGraphExternalIndices.html#ga1a22cf8bdde32fcdf1a4a78966eed630), which must be used to initialize vertex, edge, and face indices of a triangulation meant to be used with BGL algorithms. ### [3D Fast Intersection and Distance Computation](https://doc.cgal.org/5.1/Manual/packages.html#PkgAABBTree) @@ -58,11 +60,11 @@ Release date: July 2020 - The behavior of the internal search tree used to accelerate distance queries has changed: usage of the internal search tree will now be enabled by default, and its construction will be triggered by the first distance query. Automatic construction and usage can be disabled - by calling [`do_not_accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#abde62f52ccdf411847151aa5000ba4a4) + by calling [`CGAL::AABB_tree::do_not_accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#abde62f52ccdf411847151aa5000ba4a4) before the first distance query, and the tree can be built at any moment by calling - [`accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#a5d3877d3f2afbd09341eb4b8c230080b). -- **Breaking change**: [`accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#a5d3877d3f2afbd09341eb4b8c230080b) - and [`do_not_accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#abde62f52ccdf411847151aa5000ba4a4) + [`CGAL::AABB_tree::accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#a5d3877d3f2afbd09341eb4b8c230080b). +- **Breaking change**: [`CGAL::AABB_tree::accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#a5d3877d3f2afbd09341eb4b8c230080b) + and [`CGAL::AABB_tree::do_not_accelerate_distance_queries()`](https://doc.cgal.org/5.1/AABB_tree/classCGAL_1_1AABB__tree.html#abde62f52ccdf411847151aa5000ba4a4) are no longer `const` functions. ### [2D Arrangements](https://doc.cgal.org/5.1/Manual/packages.html#PkgArrangementOnSurface2) @@ -131,7 +133,7 @@ Release date: July 2020 ### [3D Convex Hulls](https://doc.cgal.org/5.1/Manual/packages.html#PkgConvexHull3) - A new overload for [`CGAL::convex_hull_3()`](https://doc.cgal.org/5.1/Convex_hull_3/group__PkgConvexHull3Functions.html#gaa02a3013808fc9a2e5e2f42b9fde8e30) - that takes a model of `VertexListGraph` has been added. + that takes a model of [`VertexListGraph`](https://doc.cgal.org/5.1/BGL/classVertexListGraph.html) has been added. - The long-deprecated function `CGAL::convex_hull_3_to_polyhedron_3()` has been removed. The function [`CGAL::convex_hull_3_to_face_graph()`](https://doc.cgal.org/5.1/Convex_hull_3/group__PkgConvexHull3Functions.html#ga2750f7f197588ed643679835c748c671) should be used instead. @@ -204,7 +206,7 @@ Release date: July 2020 common endpoints, for convience. - Added the function [`CGAL::split_subconstraint_graph_into_constraints()`](https://doc.cgal.org/5.1/Triangulation_2/classCGAL_1_1Constrained__triangulation__plus__2.html#adea77f5db5cd4dfae302e4502f1caa85) to [`Constrained_triangulation_plus_2`](https://doc.cgal.org/5.1/Triangulation_2/classCGAL_1_1Constrained__triangulation__plus__2.html) to initialize the constraints - from a soup of disconnected segments that should first be split into polylines. + from a soup of disconnected segments that should first be split into polylines. ### [3D Triangulations](https://doc.cgal.org/5.1/Manual/packages.html#PkgTriangulation3) From d81184ca9f5a7b03b6ed9b89b1a5f9f197992419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 3 Jun 2020 17:47:40 +0200 Subject: [PATCH 29/46] Add links to entries on cgal.org --- Installation/CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index fb6c4e12413..90008182baa 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -13,12 +13,14 @@ Release date: July 2020 between free homotopy and homotopy with fixed endpoints; - test is a curve is contractible; - compute shortest non-contractible cycles on a surface, with or without weights on edges. + See also the associated [blog entry](https://www.cgal.org/2020/05/08/Surface_mesh_topology/). ### [Optimal Bounding Box](https://doc.cgal.org/5.1/Manual/packages.html#PkgOptimalBoundingBox) (new package) - This package implements an optimization algorithm that aims to construct a close approximation of the *optimal bounding box* of a mesh or a point set, which is defined as the smallest (in terms of volume) bounding box that contains a given mesh or point set. + See also the associated [blog entry](https://www.cgal.org/2020/04/20/Optimal_bounding_box/). ### [Tetrahedral Remeshing](https://doc.cgal.org/5.1/Manual/packages.html#PkgTetrahedralRemeshing) (new package) From 6607b48dda67811f41bdca40a6eb7ac4ec8dd00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 3 Jun 2020 17:47:55 +0200 Subject: [PATCH 30/46] Add an entry in CHANGES.md about the tutorials --- Installation/CHANGES.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 90008182baa..b41df7b6153 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -28,6 +28,15 @@ Release date: July 2020 that improves the quality of tetrahedra in terms of dihedral angles, while targetting a given edge length. +### [Tutorials](https://doc.cgal.org/5.1/Manual/tutorials.html) + +- Two new, detailed tutorials have been added: + - [Surface Reconstruction from Point Clouds](https://doc.cgal.org/5.1/Manual/tuto_reconstruction.html), + which goes over a typical full processing pipeline in a CGAL environment. + - [Geographic Information Systems (GIS)](https://doc.cgal.org/5.1/Manual/tuto_gis.html), + which demonstrates usage of CGAL data structures and algorithms in the context of a typical GIS application. + In both tutorials, complete code is provided. + ### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.1/Manual/packages.html#PkgKernel23) - Added the functor [`CompareSignedDistanceToLine_2`](https://doc.cgal.org/5.1/Kernel_23/classKernel_1_1CompareSignedDistanceToLine__2.html) From e49babecfb7c97bacccf24438dfa7e0b83226b1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 3 Jun 2020 17:50:08 +0200 Subject: [PATCH 31/46] Formatting... --- Installation/CHANGES.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index b41df7b6153..0352def2515 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -13,6 +13,7 @@ Release date: July 2020 between free homotopy and homotopy with fixed endpoints; - test is a curve is contractible; - compute shortest non-contractible cycles on a surface, with or without weights on edges. + See also the associated [blog entry](https://www.cgal.org/2020/05/08/Surface_mesh_topology/). ### [Optimal Bounding Box](https://doc.cgal.org/5.1/Manual/packages.html#PkgOptimalBoundingBox) (new package) @@ -20,6 +21,7 @@ Release date: July 2020 - This package implements an optimization algorithm that aims to construct a close approximation of the *optimal bounding box* of a mesh or a point set, which is defined as the smallest (in terms of volume) bounding box that contains a given mesh or point set. + See also the associated [blog entry](https://www.cgal.org/2020/04/20/Optimal_bounding_box/). ### [Tetrahedral Remeshing](https://doc.cgal.org/5.1/Manual/packages.html#PkgTetrahedralRemeshing) (new package) @@ -35,6 +37,7 @@ Release date: July 2020 which goes over a typical full processing pipeline in a CGAL environment. - [Geographic Information Systems (GIS)](https://doc.cgal.org/5.1/Manual/tuto_gis.html), which demonstrates usage of CGAL data structures and algorithms in the context of a typical GIS application. + In both tutorials, complete code is provided. ### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.1/Manual/packages.html#PkgKernel23) From 63e77ea2cd2151cf3e74746264c90fbc02f4707b Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 3 Jun 2020 18:18:04 +0200 Subject: [PATCH 32/46] updated crontab (automated commit) --- Maintenance/infrastructure/cgal.geometryfactory.com/crontab | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index d98d42b770d..9cb5c94bfc7 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -23,9 +23,9 @@ LC_CTYPE=en_US.UTF-8 # The script also updates the manual tools. # "master" alone -0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/master.git --do-it || echo ERROR +0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/master.git --do-it --beta 1 --public || echo ERROR # "integration" -0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --do-it --public || echo ERROR +0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --do-it --beta 1 --public || echo ERROR # from branch 5.0 0 21 * * Sat cd $HOME/CGAL/create_internal_release-5.0-branch && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/CGAL-5.0-branch.git --public --do-it || echo ERROR # from branch 4.14 From daf86cc7194336b2b8acf0e0024673d62c4488fc Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 3 Jun 2020 17:01:02 +0200 Subject: [PATCH 33/46] Prepare for 5.1-beta1 --- .../doc/resources/1.8.13/menu_version.js | 9 +- .../doc/resources/1.8.14/menu_version.js | 248 +++++++++++------- .../doc/resources/1.8.4/menu_version.js | 248 +++++++++++------- Installation/include/CGAL/version.h | 2 +- .../lib/cmake/CGAL/CGALConfigVersion.cmake | 2 +- 5 files changed, 327 insertions(+), 182 deletions(-) diff --git a/Documentation/doc/resources/1.8.13/menu_version.js b/Documentation/doc/resources/1.8.13/menu_version.js index 36b298ee045..1eb05caa463 100644 --- a/Documentation/doc/resources/1.8.13/menu_version.js +++ b/Documentation/doc/resources/1.8.13/menu_version.js @@ -3,10 +3,11 @@ var url_re = /(cgal\.geometryfactory\.com\/CGAL\/doc\/|doc\.cgal\.org\/)(master|latest|(\d\.\d+|\d\.\d+\.\d+))\//; var url_local = /.*\/doc_output\//; - var current_version_local = '5.1-dev' + var current_version_local = '5.1-beta1' var all_versions = [ 'master', 'latest', + '5.1-beta1', '5.0.2', '4.14.3', '4.13.2', @@ -44,7 +45,7 @@ } function patch_url(url, new_version) { - if(url.includes("doc.cgal.org")||url.includes("cgal.geometryfactory.com")){ + if(url.includes("doc.cgal.org")||url.includes("cgal.geometryfactory.com")){ return url.replace(url_re, 'doc.cgal.org/' + new_version + '/'); } else{ @@ -65,7 +66,7 @@ var motherNode=$("#back-nav ul")[0]; var node = document.createElement("LI"); var spanNode = document.createElement("SPAN"); - var titleNode =document.createTextNode("CGAL Version: "); + var titleNode =document.createTextNode("CGAL Version: "); var textNode = document.createTextNode("x.y"); spanNode.setAttribute("class", "version_menu"); spanNode.appendChild(textNode); @@ -90,4 +91,4 @@ } } }); -})(); +})(); diff --git a/Documentation/doc/resources/1.8.14/menu_version.js b/Documentation/doc/resources/1.8.14/menu_version.js index 36b298ee045..e90af8192e6 100644 --- a/Documentation/doc/resources/1.8.14/menu_version.js +++ b/Documentation/doc/resources/1.8.14/menu_version.js @@ -1,93 +1,165 @@ -(function() { - 'use strict'; +Head: master Merge branch 'releases/CGAL-5.0-branch' +Merge: cgal/master Merge branch 'releases/CGAL-5.0-branch' +Push: cgal/master Merge branch 'releases/CGAL-5.0-branch' +Tag: master_before_no_tws_nor_tabs (1749) - var url_re = /(cgal\.geometryfactory\.com\/CGAL\/doc\/|doc\.cgal\.org\/)(master|latest|(\d\.\d+|\d\.\d+\.\d+))\//; - var url_local = /.*\/doc_output\//; - var current_version_local = '5.1-dev' - var all_versions = [ - 'master', - 'latest', - '5.0.2', - '4.14.3', - '4.13.2', - '4.12.2', - '4.11.3', - '4.10.2', - '4.9.1', - '4.8.2', - '4.7', - '4.6.3', - '4.5.2', - '4.4', - '4.3' - ]; +Untracked files (1) +Documentation/doc/resources/1.8.14/1.8.13 - function build_select(current_version) { - var buf = [''); - return buf.join(''); - } +Unstaged changes (1) +modified Documentation/doc/resources/1.8.13/menu_version.js +@@ -3,10 +3,11 @@ - function patch_url(url, new_version) { - if(url.includes("doc.cgal.org")||url.includes("cgal.geometryfactory.com")){ - return url.replace(url_re, 'doc.cgal.org/' + new_version + '/'); - } - else{ - return url.replace(url_local, 'https://doc.cgal.org/' + new_version + '/'); - } - } + var url_re = /(cgal\.geometryfactory\.com\/CGAL\/doc\/|doc\.cgal\.org\/)(master|latest|(\d\.\d+|\d\.\d+\.\d+))\//; + var url_local = /.*\/doc_output\//; +- var current_version_local = '5.1-dev' ++ var current_version_local = '5.1-beta1' + var all_versions = [ + 'master', + 'latest', ++ '5.1-beta1', + '5.0.2', + '4.14.3', + '4.13.2', +@@ -44,7 +45,7 @@ + } - function on_switch() { - var selected = $(this).children('option:selected').attr('value'); - var url = window.location.href, - new_url = patch_url(url, selected); - if (new_url != url) { - window.location.href = new_url; - } - } - - $(document).ready(function() { - var motherNode=$("#back-nav ul")[0]; - var node = document.createElement("LI"); - var spanNode = document.createElement("SPAN"); - var titleNode =document.createTextNode("CGAL Version: "); - var textNode = document.createTextNode("x.y"); - spanNode.setAttribute("class", "version_menu"); - spanNode.appendChild(textNode); - node.appendChild(titleNode); - node.appendChild(spanNode); - motherNode.insertBefore(node, motherNode.firstChild); - $("#back-nav").css("padding-top", "0").css("padding-bottom", "0"); - var match = url_re.exec(window.location.href); - if (match) { - var version = match[2]; - var select = build_select(version); - spanNode.innerHTML=select; - $('.version_menu select').bind('change', on_switch); - } - else { - match = url_local.exec(window.location.href); - if (match) { - var version = current_version_local; - var select = build_select(version); - spanNode.innerHTML=select; - $('.version_menu select').bind('change', on_switch); - } + function patch_url(url, new_version) { +- if(url.includes("doc.cgal.org")||url.includes("cgal.geometryfactory.com")){ ++ if(url.includes("doc.cgal.org")||url.includes("cgal.geometryfactory.com")){ + return url.replace(url_re, 'doc.cgal.org/' + new_version + '/'); } - }); -})(); + else{ +@@ -65,7 +66,7 @@ + var motherNode=$("#back-nav ul")[0]; + var node = document.createElement("LI"); + var spanNode = document.createElement("SPAN"); +- var titleNode =document.createTextNode("CGAL Version: "); ++ var titleNode =document.createTextNode("CGAL Version: "); + var textNode = document.createTextNode("x.y"); + spanNode.setAttribute("class", "version_menu"); + spanNode.appendChild(textNode); +@@ -90,4 +91,4 @@ + } + } + }); +-})(); ++})(); + +Stashes (104) +stash@{0} WIP on Mesh_3-fix_optimisers_parallel-jtournois-WIP: 46820eda8bf debugging perturber... +stash@{1} WIP on CGAL-5.0-branch: dc12dea7766 Merge branch 'releases/CGAL-4.14-branch' into releases/CGAL-5.0-branch +stash@{2} On Installation-add_CGALConfigVersion-GF: RELOCATABLE? +stash@{3} On Tetrahedral_remeshing-new-jtournois: DEBUG code +stash@{4} WIP on nurbs-viewer-mesher: 495bc2b6022 Fix the link +stash@{5} On master: point_cloud_to_inr +stash@{6} Patch ExxonMobile +stash@{7} WIP on master: b6d5129364a Merge branch 'releases/CGAL-5.0-branch' +stash@{8} Scene_surface_mesh_item::setAllPatchIds +stash@{9} On master: Replaced by "Update warning macro usages #4474" +stash@{10} On master: Cleanup CDT_plus_2 +stash@{11} On master: Fix issue "Warning in Triangulation_2" #4371 +stash@{12} On master: f0c82986576 updated crontab (automated commit) +stash@{13} Surface_mesh: use override instead of virtual +stash@{14} On T3_accelerate_insert_in_hole: TDS::reserve +stash@{15} On T3_accelerate_insert_in_hole: Essai d'utilisation des time stamps +stash@{16} On heads/Triangulation_segment_traverser_3-tvanlank__rewrote_history-GF: 7e0f93f4c9e Add a case (assertion) +stash@{17} On master: cleanup Polyline_constraint_hierarchy_2.h +stash@{18} On Sweep_2-bug_57-GF: 02bfdcf828a Better way to measure the recursion depth +stash@{19} On master: 3d1450b71fb Merge branch 'releases/CGAL-4.14-branch' +stash@{20} WIP on master: 3d1450b71fb Merge branch 'releases/CGAL-4.14-branch' +stash@{21} On Polyhedron-demo__add_qtscript_support_to_Mesh_3_plugin-GF: e068363fbfa Add an API to replace QMessageBox static functions +stash@{22} On CGAL-clang_tidy__nullptr_on_Mesh_2-GF: Mesh_3 plugin +stash@{23} On integration: CORE MemoryPool DEBUG +stash@{24} Try to fix check headers warnings about incorrect flags +stash@{25} WIP on releases/CGAL-4.13-branch: a34c09084c6 Merge pull request #3855 from sgiraudot/Intersections_3-Fix_almost_collinear_segments_bug-GF +stash@{26} WIP on releases/CGAL-4.14-branch: 490589b48f6 Merge branch 'releases/CGAL-4.13-branch' into releases/CGAL-4.14-branch +stash@{27} On integration: 32f063f25f0 Merge pull request #3886 from lrineau/CGAL-Adapt_to_Boost_1.70-GF +stash@{28} On integration: GMPXX by default +stash@{29} On integration: Simplify Mesh_3, and MPZF +stash@{30} On Number_types-intervals3-glisse: Include all header twice +stash@{31} On Mesh_3-tricubic-GF: HACKS +stash@{32} On Mesh_3-fix_polyhedral_complex_domain-GF: 9964b18243c Fix Polyhedral_complex_mesh_domain_3 when detect_features() is not called +stash@{33} On Mesh_3-fix_Index-GF: Mesh_3 with union instead of boost::variant +stash@{34} On Mesh_3-fix_Index-GF: Testsuite/test/parse-ctest-dashboard-xml.py with zlib +stash@{35} On master: Tests with -funsafe-math-optimizations +stash@{36} On Triangulation_2-Debug_CDT2-lrineau: Debug CDT_2 +stash@{37} On releases/CGAL-4.12-branch: Scene_polygon_soup_item: remove duplicated triangles +stash@{38} On integration: Mesh_3: Ident nested #ifdef +stash@{39} On Travis-Check_including_all_headers-GF: Try to improve "check_headers" +stash@{40} On Polyhedron-demo_offset_plugin_Mesh_3_triangle_soup-GF: attempt of a traversal traits +stash@{41} On Polyhedron-demo_offset_plugin_Mesh_3_triangle_soup-GF: Variable offset distance +stash@{42} On master: Problems with SEP image +stash@{43} WIP on master: 441170768df Prepare CGAL-4.12-beta1 +stash@{44} On integration: CSS!! +stash@{45} WIP on Installation-improve_CGAL_DEV_MODE-lrineau: 4811fae85c2 Do not document the CGAL pure header-only mode +stash@{46} Mesh_3: debug trick with CGAL_assertion_msg and a lambda +stash@{47} On integration: CTest +stash@{48} On (no branch): a8704de Merge branch 'releases/CGAL-4.10-branch' +stash@{49} On Mesh_3-fix_NaN-lrineau: DEBUG Sliver_perturber +stash@{50} On Mesh_2-restore_Qt3_demo-lrineau: Doxygen warnings +stash@{51} On integration: Debug Mesh_2 +stash@{52} On Mesh_3-API_with_incidences-GF: e17da6445d1 Write the documentation +stash@{53} On Mesh_3-test_polyhedral_complex_with_surface_mesh-GF: TESTS +stash@{54} ? +stash@{55} On Mesh_3-fix_bug_1944-GF: 4325f22 Merge pull request #2145 from gdamiand/patch-1 +stash@{56} On integration: a5ea993 Merge remote-tracking branch 'cgal/master' into integration +stash@{57} On Polyhedron_demo-Use_sm_in_Deformation-GF: Selection plugin, pb ODR? +stash@{58} On Polyhedron-clipping_snapping_new_snapping-GF-wip: 23e0762 fixup! Add a safety check +stash@{59} On Polyhedron-clipping_snapping_new_snapping-GF-wip: cbfc043 Revert "wip" +stash@{60} On Polyhedron-clipping_snapping_new_snapping-GF-wip: 720086f Add snap_corners_to_curves_when_possible +stash@{61} On (no branch): Debug Mesh_3 +stash@{62} WIP on Polyhedron-clipping_snapping_new_snapping-GF-wip: 50d11a6 Move get_curve_id to Clipping_snapping_tool_details +stash@{63} On Polyhedron-clipping_snapping_new_snapping-GF-wip: WIP on fix corner-to-curve +stash@{64} WIP on Polyhedron-clipping_snapping_new_snapping-GF-wip: 26e2d29 Add missing `#include` +stash@{65} On integration: c540a7e Merge pull request #1808 from MaelRL/Spatial_searching-Fix_fuzzy_query_item_border +stash@{66} WIP on integration: c540a7e Merge pull request #1808 from MaelRL/Spatial_searching-Fix_fuzzy_query_item_border +stash@{67} WIP on integration: c540a7e Merge pull request #1808 from MaelRL/Spatial_searching-Fix_fuzzy_query_item_border +stash@{68} WIP on integration: c540a7e Merge pull request #1808 from MaelRL/Spatial_searching-Fix_fuzzy_query_item_border +stash@{69} WIP on integration: c540a7e Merge pull request #1808 from MaelRL/Spatial_searching-Fix_fuzzy_query_item_border +stash@{70} More assertion in multi-thread Handle.h +stash@{71} CMake: if(NOT CMAKE_CROSSCOMPILING) +stash@{72} Bug Mesh_3 TROU! +stash@{73} WIP on Polyhedron-clipping_snapping_new_snapping-GF-wip: 4f429fa Merge remote-tracking branch 'cgal/master' into Polyhedron-clipping_snapping_new_snapping-GF-wip +stash@{74} On master: convert an image from unsigned short to float +stash@{75} On master: Mesh_3 Robust_weighted_circumcenter_filtered_traits_3 use certainly +stash@{76} On CGAL-remove_support_for_LEDA_5_and_before-GF: 0c69001 Remove all usage of CGAL_LEDA_VERSION +stash@{77} WIP on Mesh_3-new_facet_criterion_with_normals-lrineau: c4b81cf Fix a warning in Sizing_field_with_aabb_tree +stash@{78} On CGAL-license_check-GF: 366976b fix header +stash@{79} Polyhedron demo with keywords for plugins +stash@{80} Mesh_3: save, load a C3t3 and refine it +stash@{81} On master: 2153e65 Fix a typo in doc: remove extra "`" +stash@{82} On Mesh_3-hybrid_mesh_domain-GF: Shifted_sphere_implicit_function +stash@{83} On CGAL_headers_only_step1-gdamiand_cjamin: Fix an error in headers-only +stash@{84} Bug Intel 2017 +stash@{85} WIP on Mesh_3-improve_polylines_to_protect-GF: ee0fb3b Fix the header guard macro, and copyright years +stash@{86} On master: Restore CGAL_Qt3 +stash@{87} On Mesh_2-fix_issue_781-GF: Mesh_2: Display queues sizes +stash@{88} On Mesh_3-improve_images-GF: "Fix" C3t3_io_plugin to deal with INT_MIN +stash@{89} WIP on Polyhedron-clipping_snapping_new_snapping-GF-wip: 7787959 Re-test `modified_features` after a corner-snapping +stash@{90} On Mesh_3-experimental-GF: Experiments on Mesh-3 +stash@{91} On master: Fix orient polygon soup with PMP, temp +stash@{92} On CGAL-Qt5_support-GF: Replace gluErrorString +stash@{93} On master: Mesh_3, for pipeNotWorking +stash@{94} On master: Mesh_3 for Medicim/Nobelbiocare +stash@{95} WIP on Mesh_3-experimental-GF: a1b342e Allow to open a binary CDT_3 +stash@{96} WIP on master: 0df4095 Merge pull request #30 from afabri/Documentation-addHome-GF +stash@{97} WIP on CGAL-Qt5_support-GF: 0d2f838 Allow to find QGLViewer-qt5_ +stash@{98} On master: LICENSE (Dijsktra), Memory_size.h (near) +stash@{99} On Triangulation_2-Fix_CDT_plus-GF: wip +stash@{100} On master: Pretty printers, et Sliver_perturber.h +stash@{101} On master: bench mesh_3 +stash@{102} On Intersection_3-fix-do_intersect_Iso_cuboid_3_Segment_3-lrineau: Fix intersection(Iso_cuboid_3, Segment_3) +stash@{103} On master: Try to fix warnings for CMap + +Recent commits +97123fc3c72 cgal/master Merge branch 'releases/CGAL-5.0-branch' +871c97273af Merge pull request #4496 from lrineau/CGAL-move_semantic_for_triangulations-GF +a828cb0d066 Merge pull request #4620 from janetournois/Tetrahedral_remeshing-new-jtournois +8db45039044 Merge pull request #4710 from danston/CGAL-clangmp_bug_fix-danston +c15030bf39b Merge pull request #4740 from afabri/T2-low_dimensional-GF +814689552b1 Merge pull request #4752 from lrineau/CGAL-fix_cpp20-mglisse_GF +863b1decf69 Merge pull request #4754 from maxGimeno/PMP-Fix_parallel_haussdorf_dist-maxGimeno +4354b2c87f0 releases/CGAL-5.0-branch cgal/releases/CGAL-5.0-branch Merge pull request #4710 from danston/CGAL-clangmp_bug_fix-danston +dc2ae1614c2 Merge remote-tracking branch 'cgal/releases/CGAL-4.14-branch' into releases/CGAL-5.0-branch +520fbf7c4b7 refs/pull/4754/head Add missing include diff --git a/Documentation/doc/resources/1.8.4/menu_version.js b/Documentation/doc/resources/1.8.4/menu_version.js index 36b298ee045..e90af8192e6 100644 --- a/Documentation/doc/resources/1.8.4/menu_version.js +++ b/Documentation/doc/resources/1.8.4/menu_version.js @@ -1,93 +1,165 @@ -(function() { - 'use strict'; +Head: master Merge branch 'releases/CGAL-5.0-branch' +Merge: cgal/master Merge branch 'releases/CGAL-5.0-branch' +Push: cgal/master Merge branch 'releases/CGAL-5.0-branch' +Tag: master_before_no_tws_nor_tabs (1749) - var url_re = /(cgal\.geometryfactory\.com\/CGAL\/doc\/|doc\.cgal\.org\/)(master|latest|(\d\.\d+|\d\.\d+\.\d+))\//; - var url_local = /.*\/doc_output\//; - var current_version_local = '5.1-dev' - var all_versions = [ - 'master', - 'latest', - '5.0.2', - '4.14.3', - '4.13.2', - '4.12.2', - '4.11.3', - '4.10.2', - '4.9.1', - '4.8.2', - '4.7', - '4.6.3', - '4.5.2', - '4.4', - '4.3' - ]; +Untracked files (1) +Documentation/doc/resources/1.8.14/1.8.13 - function build_select(current_version) { - var buf = [''); - return buf.join(''); - } +Unstaged changes (1) +modified Documentation/doc/resources/1.8.13/menu_version.js +@@ -3,10 +3,11 @@ - function patch_url(url, new_version) { - if(url.includes("doc.cgal.org")||url.includes("cgal.geometryfactory.com")){ - return url.replace(url_re, 'doc.cgal.org/' + new_version + '/'); - } - else{ - return url.replace(url_local, 'https://doc.cgal.org/' + new_version + '/'); - } - } + var url_re = /(cgal\.geometryfactory\.com\/CGAL\/doc\/|doc\.cgal\.org\/)(master|latest|(\d\.\d+|\d\.\d+\.\d+))\//; + var url_local = /.*\/doc_output\//; +- var current_version_local = '5.1-dev' ++ var current_version_local = '5.1-beta1' + var all_versions = [ + 'master', + 'latest', ++ '5.1-beta1', + '5.0.2', + '4.14.3', + '4.13.2', +@@ -44,7 +45,7 @@ + } - function on_switch() { - var selected = $(this).children('option:selected').attr('value'); - var url = window.location.href, - new_url = patch_url(url, selected); - if (new_url != url) { - window.location.href = new_url; - } - } - - $(document).ready(function() { - var motherNode=$("#back-nav ul")[0]; - var node = document.createElement("LI"); - var spanNode = document.createElement("SPAN"); - var titleNode =document.createTextNode("CGAL Version: "); - var textNode = document.createTextNode("x.y"); - spanNode.setAttribute("class", "version_menu"); - spanNode.appendChild(textNode); - node.appendChild(titleNode); - node.appendChild(spanNode); - motherNode.insertBefore(node, motherNode.firstChild); - $("#back-nav").css("padding-top", "0").css("padding-bottom", "0"); - var match = url_re.exec(window.location.href); - if (match) { - var version = match[2]; - var select = build_select(version); - spanNode.innerHTML=select; - $('.version_menu select').bind('change', on_switch); - } - else { - match = url_local.exec(window.location.href); - if (match) { - var version = current_version_local; - var select = build_select(version); - spanNode.innerHTML=select; - $('.version_menu select').bind('change', on_switch); - } + function patch_url(url, new_version) { +- if(url.includes("doc.cgal.org")||url.includes("cgal.geometryfactory.com")){ ++ if(url.includes("doc.cgal.org")||url.includes("cgal.geometryfactory.com")){ + return url.replace(url_re, 'doc.cgal.org/' + new_version + '/'); } - }); -})(); + else{ +@@ -65,7 +66,7 @@ + var motherNode=$("#back-nav ul")[0]; + var node = document.createElement("LI"); + var spanNode = document.createElement("SPAN"); +- var titleNode =document.createTextNode("CGAL Version: "); ++ var titleNode =document.createTextNode("CGAL Version: "); + var textNode = document.createTextNode("x.y"); + spanNode.setAttribute("class", "version_menu"); + spanNode.appendChild(textNode); +@@ -90,4 +91,4 @@ + } + } + }); +-})(); ++})(); + +Stashes (104) +stash@{0} WIP on Mesh_3-fix_optimisers_parallel-jtournois-WIP: 46820eda8bf debugging perturber... +stash@{1} WIP on CGAL-5.0-branch: dc12dea7766 Merge branch 'releases/CGAL-4.14-branch' into releases/CGAL-5.0-branch +stash@{2} On Installation-add_CGALConfigVersion-GF: RELOCATABLE? +stash@{3} On Tetrahedral_remeshing-new-jtournois: DEBUG code +stash@{4} WIP on nurbs-viewer-mesher: 495bc2b6022 Fix the link +stash@{5} On master: point_cloud_to_inr +stash@{6} Patch ExxonMobile +stash@{7} WIP on master: b6d5129364a Merge branch 'releases/CGAL-5.0-branch' +stash@{8} Scene_surface_mesh_item::setAllPatchIds +stash@{9} On master: Replaced by "Update warning macro usages #4474" +stash@{10} On master: Cleanup CDT_plus_2 +stash@{11} On master: Fix issue "Warning in Triangulation_2" #4371 +stash@{12} On master: f0c82986576 updated crontab (automated commit) +stash@{13} Surface_mesh: use override instead of virtual +stash@{14} On T3_accelerate_insert_in_hole: TDS::reserve +stash@{15} On T3_accelerate_insert_in_hole: Essai d'utilisation des time stamps +stash@{16} On heads/Triangulation_segment_traverser_3-tvanlank__rewrote_history-GF: 7e0f93f4c9e Add a case (assertion) +stash@{17} On master: cleanup Polyline_constraint_hierarchy_2.h +stash@{18} On Sweep_2-bug_57-GF: 02bfdcf828a Better way to measure the recursion depth +stash@{19} On master: 3d1450b71fb Merge branch 'releases/CGAL-4.14-branch' +stash@{20} WIP on master: 3d1450b71fb Merge branch 'releases/CGAL-4.14-branch' +stash@{21} On Polyhedron-demo__add_qtscript_support_to_Mesh_3_plugin-GF: e068363fbfa Add an API to replace QMessageBox static functions +stash@{22} On CGAL-clang_tidy__nullptr_on_Mesh_2-GF: Mesh_3 plugin +stash@{23} On integration: CORE MemoryPool DEBUG +stash@{24} Try to fix check headers warnings about incorrect flags +stash@{25} WIP on releases/CGAL-4.13-branch: a34c09084c6 Merge pull request #3855 from sgiraudot/Intersections_3-Fix_almost_collinear_segments_bug-GF +stash@{26} WIP on releases/CGAL-4.14-branch: 490589b48f6 Merge branch 'releases/CGAL-4.13-branch' into releases/CGAL-4.14-branch +stash@{27} On integration: 32f063f25f0 Merge pull request #3886 from lrineau/CGAL-Adapt_to_Boost_1.70-GF +stash@{28} On integration: GMPXX by default +stash@{29} On integration: Simplify Mesh_3, and MPZF +stash@{30} On Number_types-intervals3-glisse: Include all header twice +stash@{31} On Mesh_3-tricubic-GF: HACKS +stash@{32} On Mesh_3-fix_polyhedral_complex_domain-GF: 9964b18243c Fix Polyhedral_complex_mesh_domain_3 when detect_features() is not called +stash@{33} On Mesh_3-fix_Index-GF: Mesh_3 with union instead of boost::variant +stash@{34} On Mesh_3-fix_Index-GF: Testsuite/test/parse-ctest-dashboard-xml.py with zlib +stash@{35} On master: Tests with -funsafe-math-optimizations +stash@{36} On Triangulation_2-Debug_CDT2-lrineau: Debug CDT_2 +stash@{37} On releases/CGAL-4.12-branch: Scene_polygon_soup_item: remove duplicated triangles +stash@{38} On integration: Mesh_3: Ident nested #ifdef +stash@{39} On Travis-Check_including_all_headers-GF: Try to improve "check_headers" +stash@{40} On Polyhedron-demo_offset_plugin_Mesh_3_triangle_soup-GF: attempt of a traversal traits +stash@{41} On Polyhedron-demo_offset_plugin_Mesh_3_triangle_soup-GF: Variable offset distance +stash@{42} On master: Problems with SEP image +stash@{43} WIP on master: 441170768df Prepare CGAL-4.12-beta1 +stash@{44} On integration: CSS!! +stash@{45} WIP on Installation-improve_CGAL_DEV_MODE-lrineau: 4811fae85c2 Do not document the CGAL pure header-only mode +stash@{46} Mesh_3: debug trick with CGAL_assertion_msg and a lambda +stash@{47} On integration: CTest +stash@{48} On (no branch): a8704de Merge branch 'releases/CGAL-4.10-branch' +stash@{49} On Mesh_3-fix_NaN-lrineau: DEBUG Sliver_perturber +stash@{50} On Mesh_2-restore_Qt3_demo-lrineau: Doxygen warnings +stash@{51} On integration: Debug Mesh_2 +stash@{52} On Mesh_3-API_with_incidences-GF: e17da6445d1 Write the documentation +stash@{53} On Mesh_3-test_polyhedral_complex_with_surface_mesh-GF: TESTS +stash@{54} ? +stash@{55} On Mesh_3-fix_bug_1944-GF: 4325f22 Merge pull request #2145 from gdamiand/patch-1 +stash@{56} On integration: a5ea993 Merge remote-tracking branch 'cgal/master' into integration +stash@{57} On Polyhedron_demo-Use_sm_in_Deformation-GF: Selection plugin, pb ODR? +stash@{58} On Polyhedron-clipping_snapping_new_snapping-GF-wip: 23e0762 fixup! Add a safety check +stash@{59} On Polyhedron-clipping_snapping_new_snapping-GF-wip: cbfc043 Revert "wip" +stash@{60} On Polyhedron-clipping_snapping_new_snapping-GF-wip: 720086f Add snap_corners_to_curves_when_possible +stash@{61} On (no branch): Debug Mesh_3 +stash@{62} WIP on Polyhedron-clipping_snapping_new_snapping-GF-wip: 50d11a6 Move get_curve_id to Clipping_snapping_tool_details +stash@{63} On Polyhedron-clipping_snapping_new_snapping-GF-wip: WIP on fix corner-to-curve +stash@{64} WIP on Polyhedron-clipping_snapping_new_snapping-GF-wip: 26e2d29 Add missing `#include` +stash@{65} On integration: c540a7e Merge pull request #1808 from MaelRL/Spatial_searching-Fix_fuzzy_query_item_border +stash@{66} WIP on integration: c540a7e Merge pull request #1808 from MaelRL/Spatial_searching-Fix_fuzzy_query_item_border +stash@{67} WIP on integration: c540a7e Merge pull request #1808 from MaelRL/Spatial_searching-Fix_fuzzy_query_item_border +stash@{68} WIP on integration: c540a7e Merge pull request #1808 from MaelRL/Spatial_searching-Fix_fuzzy_query_item_border +stash@{69} WIP on integration: c540a7e Merge pull request #1808 from MaelRL/Spatial_searching-Fix_fuzzy_query_item_border +stash@{70} More assertion in multi-thread Handle.h +stash@{71} CMake: if(NOT CMAKE_CROSSCOMPILING) +stash@{72} Bug Mesh_3 TROU! +stash@{73} WIP on Polyhedron-clipping_snapping_new_snapping-GF-wip: 4f429fa Merge remote-tracking branch 'cgal/master' into Polyhedron-clipping_snapping_new_snapping-GF-wip +stash@{74} On master: convert an image from unsigned short to float +stash@{75} On master: Mesh_3 Robust_weighted_circumcenter_filtered_traits_3 use certainly +stash@{76} On CGAL-remove_support_for_LEDA_5_and_before-GF: 0c69001 Remove all usage of CGAL_LEDA_VERSION +stash@{77} WIP on Mesh_3-new_facet_criterion_with_normals-lrineau: c4b81cf Fix a warning in Sizing_field_with_aabb_tree +stash@{78} On CGAL-license_check-GF: 366976b fix header +stash@{79} Polyhedron demo with keywords for plugins +stash@{80} Mesh_3: save, load a C3t3 and refine it +stash@{81} On master: 2153e65 Fix a typo in doc: remove extra "`" +stash@{82} On Mesh_3-hybrid_mesh_domain-GF: Shifted_sphere_implicit_function +stash@{83} On CGAL_headers_only_step1-gdamiand_cjamin: Fix an error in headers-only +stash@{84} Bug Intel 2017 +stash@{85} WIP on Mesh_3-improve_polylines_to_protect-GF: ee0fb3b Fix the header guard macro, and copyright years +stash@{86} On master: Restore CGAL_Qt3 +stash@{87} On Mesh_2-fix_issue_781-GF: Mesh_2: Display queues sizes +stash@{88} On Mesh_3-improve_images-GF: "Fix" C3t3_io_plugin to deal with INT_MIN +stash@{89} WIP on Polyhedron-clipping_snapping_new_snapping-GF-wip: 7787959 Re-test `modified_features` after a corner-snapping +stash@{90} On Mesh_3-experimental-GF: Experiments on Mesh-3 +stash@{91} On master: Fix orient polygon soup with PMP, temp +stash@{92} On CGAL-Qt5_support-GF: Replace gluErrorString +stash@{93} On master: Mesh_3, for pipeNotWorking +stash@{94} On master: Mesh_3 for Medicim/Nobelbiocare +stash@{95} WIP on Mesh_3-experimental-GF: a1b342e Allow to open a binary CDT_3 +stash@{96} WIP on master: 0df4095 Merge pull request #30 from afabri/Documentation-addHome-GF +stash@{97} WIP on CGAL-Qt5_support-GF: 0d2f838 Allow to find QGLViewer-qt5_ +stash@{98} On master: LICENSE (Dijsktra), Memory_size.h (near) +stash@{99} On Triangulation_2-Fix_CDT_plus-GF: wip +stash@{100} On master: Pretty printers, et Sliver_perturber.h +stash@{101} On master: bench mesh_3 +stash@{102} On Intersection_3-fix-do_intersect_Iso_cuboid_3_Segment_3-lrineau: Fix intersection(Iso_cuboid_3, Segment_3) +stash@{103} On master: Try to fix warnings for CMap + +Recent commits +97123fc3c72 cgal/master Merge branch 'releases/CGAL-5.0-branch' +871c97273af Merge pull request #4496 from lrineau/CGAL-move_semantic_for_triangulations-GF +a828cb0d066 Merge pull request #4620 from janetournois/Tetrahedral_remeshing-new-jtournois +8db45039044 Merge pull request #4710 from danston/CGAL-clangmp_bug_fix-danston +c15030bf39b Merge pull request #4740 from afabri/T2-low_dimensional-GF +814689552b1 Merge pull request #4752 from lrineau/CGAL-fix_cpp20-mglisse_GF +863b1decf69 Merge pull request #4754 from maxGimeno/PMP-Fix_parallel_haussdorf_dist-maxGimeno +4354b2c87f0 releases/CGAL-5.0-branch cgal/releases/CGAL-5.0-branch Merge pull request #4710 from danston/CGAL-clangmp_bug_fix-danston +dc2ae1614c2 Merge remote-tracking branch 'cgal/releases/CGAL-4.14-branch' into releases/CGAL-5.0-branch +520fbf7c4b7 refs/pull/4754/head Add missing include diff --git a/Installation/include/CGAL/version.h b/Installation/include/CGAL/version.h index 85ff9e71cad..97b71ba536d 100644 --- a/Installation/include/CGAL/version.h +++ b/Installation/include/CGAL/version.h @@ -17,7 +17,7 @@ #define CGAL_VERSION_H #ifndef SWIG -#define CGAL_VERSION 5.1 +#define CGAL_VERSION 5.1-beta1 #define CGAL_GIT_HASH abcdef #endif #define CGAL_VERSION_NR 1050100000 diff --git a/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake b/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake index bfc6a1fa17d..9c109123e0c 100644 --- a/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake +++ b/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake @@ -1,7 +1,7 @@ set(CGAL_MAJOR_VERSION 5) set(CGAL_MINOR_VERSION 1) set(CGAL_BUGFIX_VERSION 0) -set(CGAL_VERSION_PUBLIC_RELEASE_VERSION "5.1-dev") +set(CGAL_VERSION_PUBLIC_RELEASE_VERSION "5.1-beta1") set(CGAL_VERSION_PUBLIC_RELEASE_NAME "CGAL-${CGAL_VERSION_PUBLIC_RELEASE_VERSION}") if (CGAL_BUGFIX_VERSION AND CGAL_BUGFIX_VERSION GREATER 0) From 45343e39a001d2dbbf3155ccfb4fd45f40a55705 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 4 Jun 2020 09:55:23 +0200 Subject: [PATCH 34/46] Protect std::max --- .../include/CGAL/Polygon_mesh_processing/distance.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/distance.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/distance.h index d85c07a8566..08f6d8c997d 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/distance.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/distance.h @@ -117,7 +117,7 @@ struct Distance_computation{ distance = hdist; } - void join( Distance_computation& rhs ) {distance = std::max(rhs.distance, distance); } + void join( Distance_computation& rhs ) {distance = (std::max)(rhs.distance, distance); } }; #endif From ec2f3f2fa96ecb5c1447052ac706ff72b8fecd91 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 4 Jun 2020 10:15:34 +0200 Subject: [PATCH 35/46] Fix brew doc about cgal-qt5 which doesn't exist --- Documentation/doc/Documentation/Usage.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Documentation/doc/Documentation/Usage.txt b/Documentation/doc/Documentation/Usage.txt index 38d2b257697..247348cab68 100644 --- a/Documentation/doc/Documentation/Usage.txt +++ b/Documentation/doc/Documentation/Usage.txt @@ -60,12 +60,6 @@ On most operating systems, package managers offer \cgal and its essential third On macOS, we recommend using of Homebrew in the following way: brew install cgal - brew install cgal-qt5 #(only for GUI) - -You should check that cgal and cgal-qt5 are correctly "linked", especially when upgrading from an old version. If not, run the following command: - - brew link cgal - brew link cgal-qt5 #(if you installed it) On Linux distributions such as `Debian`/`Ubuntu`/`Mint`, use `apt-get` in the following way: From 96cbb19f0be92c71a5bf0bcd149a2daabee8a823 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 4 Jun 2020 10:15:34 +0200 Subject: [PATCH 36/46] Fix brew doc about cgal-qt5 which doesn't exist --- Documentation/doc/Documentation/Usage.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Documentation/doc/Documentation/Usage.txt b/Documentation/doc/Documentation/Usage.txt index 38d2b257697..247348cab68 100644 --- a/Documentation/doc/Documentation/Usage.txt +++ b/Documentation/doc/Documentation/Usage.txt @@ -60,12 +60,6 @@ On most operating systems, package managers offer \cgal and its essential third On macOS, we recommend using of Homebrew in the following way: brew install cgal - brew install cgal-qt5 #(only for GUI) - -You should check that cgal and cgal-qt5 are correctly "linked", especially when upgrading from an old version. If not, run the following command: - - brew link cgal - brew link cgal-qt5 #(if you installed it) On Linux distributions such as `Debian`/`Ubuntu`/`Mint`, use `apt-get` in the following way: From a86712d1aae9a1a6d2004db3fc8fcdac6ef6b782 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Sun, 7 Jun 2020 15:25:18 +0200 Subject: [PATCH 37/46] Don't segfault on empty Nef_nary_x --- Nef_3/include/CGAL/Nef_nary_intersection_3.h | 3 ++- Nef_3/include/CGAL/Nef_nary_union_3.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Nef_3/include/CGAL/Nef_nary_intersection_3.h b/Nef_3/include/CGAL/Nef_nary_intersection_3.h index 70fc5791fae..5178705dc2f 100644 --- a/Nef_3/include/CGAL/Nef_nary_intersection_3.h +++ b/Nef_3/include/CGAL/Nef_nary_intersection_3.h @@ -52,7 +52,8 @@ class Nef_nary_intersection_3 { } Polyhedron get_intersection() { - + if (queue.empty()) + return empty; while(queue.size() > 1) intersect(); inserted = 0; diff --git a/Nef_3/include/CGAL/Nef_nary_union_3.h b/Nef_3/include/CGAL/Nef_nary_union_3.h index ecbbae2db59..c8663bb911b 100644 --- a/Nef_3/include/CGAL/Nef_nary_union_3.h +++ b/Nef_3/include/CGAL/Nef_nary_union_3.h @@ -52,7 +52,8 @@ class Nef_nary_union_3 { } Polyhedron get_union() { - + if (queue.empty()) + return empty; while(queue.size() > 1) unite(); inserted = 0; From 1d4d3efcc9b0f91db8e5c962b0dc59614212b502 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 8 Jun 2020 10:38:58 +0200 Subject: [PATCH 38/46] Remove useless timer call --- AABB_tree/demo/AABB_tree/Scene.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/AABB_tree/demo/AABB_tree/Scene.cpp b/AABB_tree/demo/AABB_tree/Scene.cpp index b28368d39a6..deba0b8b130 100644 --- a/AABB_tree/demo/AABB_tree/Scene.cpp +++ b/AABB_tree/demo/AABB_tree/Scene.cpp @@ -45,7 +45,6 @@ Scene::Scene() m_blue_ramp.build_blue(); m_max_distance_function = (FT)0.0; texture = new Texture(m_grid_size,m_grid_size); - startTimer(0); ready_to_cut = false; are_buffers_initialized = false; gl_init = false; From 2395583fd76f2c513691b8dfdfd1bfbd15e749ba Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 8 Jun 2020 11:00:38 +0200 Subject: [PATCH 39/46] setup a singleshot for the planes --- AABB_tree/demo/AABB_tree/Scene.cpp | 20 +++++++++----------- AABB_tree/demo/AABB_tree/Scene.h | 4 ++-- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/AABB_tree/demo/AABB_tree/Scene.cpp b/AABB_tree/demo/AABB_tree/Scene.cpp index deba0b8b130..69ba683a21b 100644 --- a/AABB_tree/demo/AABB_tree/Scene.cpp +++ b/AABB_tree/demo/AABB_tree/Scene.cpp @@ -45,7 +45,7 @@ Scene::Scene() m_blue_ramp.build_blue(); m_max_distance_function = (FT)0.0; texture = new Texture(m_grid_size,m_grid_size); - ready_to_cut = false; + ready_to_cut = true; are_buffers_initialized = false; gl_init = false; @@ -518,6 +518,7 @@ void Scene::changed() compute_elements(_UNSIGNED); else compute_elements(_SIGNED); + ready_to_cut=false; are_buffers_initialized = false; } @@ -1225,12 +1226,16 @@ void Scene::cut_segment_plane() m_cut_plane = CUT_SEGMENTS; changed(); } +void Scene::updateCutPlane() +{ + ready_to_cut = true; + QTimer::singleShot(0,this,SLOT(cutting_plane())); +} void Scene::cutting_plane(bool override) { if(ready_to_cut || override) { - ready_to_cut = false; switch( m_cut_plane ) { case UNSIGNED_FACETS: @@ -1303,13 +1308,13 @@ void Scene::refine_loop() void Scene::activate_cutting_plane() { - connect(m_frame, SIGNAL(modified()), this, SLOT(cutting_plane())); + connect(m_frame, SIGNAL(modified()), this, SLOT(updateCutPlane())); m_view_plane = true; } void Scene::deactivate_cutting_plane() { - disconnect(m_frame, SIGNAL(modified()), this, SLOT(cutting_plane())); + disconnect(m_frame, SIGNAL(modified()), this, SLOT(updateCutPlane())); m_view_plane = false; } void Scene::initGL() @@ -1325,10 +1330,3 @@ void Scene::initGL() compile_shaders(); gl_init = true; } - -void Scene::timerEvent(QTimerEvent *) -{ - if(manipulatedFrame()->isSpinning()) - set_fast_distance(true); - ready_to_cut = true; -} diff --git a/AABB_tree/demo/AABB_tree/Scene.h b/AABB_tree/demo/AABB_tree/Scene.h index 4e9fabd735b..95ea74cdc33 100644 --- a/AABB_tree/demo/AABB_tree/Scene.h +++ b/AABB_tree/demo/AABB_tree/Scene.h @@ -173,6 +173,8 @@ private: void attrib_buffers(CGAL::QGLViewer*); void compile_shaders(); void compute_texture(int, int, Color_ramp, Color_ramp); +private slots: + void updateCutPlane(); public: // file menu @@ -251,8 +253,6 @@ public: void activate_cutting_plane(); void deactivate_cutting_plane(); - //timer sends a top when all the events are finished - void timerEvent(QTimerEvent *); public slots: From 8e21da2b91dfb35ed76c604446aa8bc790bd9d90 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 8 Jun 2020 16:31:46 +0200 Subject: [PATCH 40/46] Fix typo. --- .../demo/Polyhedron/Plugins/IO/Implicit_function_io_plugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/Implicit_function_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/Implicit_function_io_plugin.cpp index 1a02765e9f8..58f19006f7c 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/Implicit_function_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/Implicit_function_io_plugin.cpp @@ -96,7 +96,7 @@ init(QMainWindow* mainWindow, CGAL::Three::Scene_interface* scene_interface, Mes QMenu* menu = menuFile->findChild("menuGenerateObject"); if(!menu){ QAction* actionLoad = mw->findChild("actionLoadPlugin"); - menu = new QMenu(tr("Generate &Objet"), menuFile); + menu = new QMenu(tr("Generate &Object"), menuFile); menu->setObjectName("menuGenerateObject"); menuFile->insertMenu(actionLoad, menu); } From 4b23afeb49937cff39315704ebde278e68fe6aa3 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Tue, 9 Jun 2020 18:18:03 +0200 Subject: [PATCH 41/46] updated crontab (automated commit) --- Maintenance/infrastructure/cgal.geometryfactory.com/crontab | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index 9cb5c94bfc7..8de3a49b3ae 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -23,13 +23,13 @@ LC_CTYPE=en_US.UTF-8 # The script also updates the manual tools. # "master" alone -0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/master.git --do-it --beta 1 --public || echo ERROR +0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/master.git --do-it --beta 2 --public || echo ERROR # "integration" -0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --do-it --beta 1 --public || echo ERROR +0 21 * * Mon,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --do-it --beta 2 --public || echo ERROR # from branch 5.0 0 21 * * Sat cd $HOME/CGAL/create_internal_release-5.0-branch && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/CGAL-5.0-branch.git --public --do-it || echo ERROR # from branch 4.14 -#0 21 * * Sat cd $HOME/CGAL/create_internal_release-4.14-branch && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.14-branch.git --public --do-it || echo ERROR +0 21 * * Tue cd $HOME/CGAL/create_internal_release-4.14-branch && /usr/bin/time scl enable rh-git29 -- $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.14-branch.git --public --do-it || echo ERROR ## Older stuff # from branch 4.13 From ec6c0d67589ba44b24227691be1dc5e794344306 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Tue, 9 Jun 2020 22:15:45 +0200 Subject: [PATCH 42/46] Prepare for 5.1-beta2 --- Installation/include/CGAL/version.h | 4 ++-- Installation/lib/cmake/CGAL/CGALConfigVersion.cmake | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Installation/include/CGAL/version.h b/Installation/include/CGAL/version.h index 97b71ba536d..26a92686edd 100644 --- a/Installation/include/CGAL/version.h +++ b/Installation/include/CGAL/version.h @@ -17,12 +17,12 @@ #define CGAL_VERSION_H #ifndef SWIG -#define CGAL_VERSION 5.1-beta1 +#define CGAL_VERSION 5.1-beta2 #define CGAL_GIT_HASH abcdef #endif #define CGAL_VERSION_NR 1050100000 #define CGAL_SVN_REVISION 99999 -#define CGAL_RELEASE_DATE 20191108 +#define CGAL_RELEASE_DATE 20200609 #include diff --git a/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake b/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake index 9c109123e0c..e0ff35433ce 100644 --- a/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake +++ b/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake @@ -1,7 +1,7 @@ set(CGAL_MAJOR_VERSION 5) set(CGAL_MINOR_VERSION 1) set(CGAL_BUGFIX_VERSION 0) -set(CGAL_VERSION_PUBLIC_RELEASE_VERSION "5.1-beta1") +set(CGAL_VERSION_PUBLIC_RELEASE_VERSION "5.1-beta2") set(CGAL_VERSION_PUBLIC_RELEASE_NAME "CGAL-${CGAL_VERSION_PUBLIC_RELEASE_VERSION}") if (CGAL_BUGFIX_VERSION AND CGAL_BUGFIX_VERSION GREATER 0) From 0f63849a434ac3921fba56ba1bd709d4a6887d7c Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 10 Jun 2020 10:08:48 +0200 Subject: [PATCH 43/46] First draft for the announcement mail --- Installation/CHANGES.md | 42 +-- .../announcement/mailing-beta.eml | 353 ++++++++++++++---- 2 files changed, 293 insertions(+), 102 deletions(-) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 0352def2515..14bfe13c5af 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -28,7 +28,7 @@ Release date: July 2020 - This package implements a tetrahedral isotropic remeshing algorithm, that improves the quality of tetrahedra in terms of dihedral angles, - while targetting a given edge length. + while targeting a given edge length. ### [Tutorials](https://doc.cgal.org/5.1/Manual/tutorials.html) @@ -273,13 +273,13 @@ Release date: November 2019 ### [Polygonal Surface Reconstruction](https://doc.cgal.org/5.0/Manual/packages.html#PkgPolygonalSurfaceReconstruction) (new package) - - This package provides a method for piecewise planar object reconstruction from point clouds. - The method takes as input an unordered point set sampled from a piecewise planar object - and outputs a compact and watertight surface mesh interpolating the input point set. - The method assumes that all necessary major planes are provided (or can be extracted from - the input point set using the shape detection method described in Point Set Shape Detection, - or any other alternative methods).The method can handle arbitrary piecewise planar objects - and is capable of recovering sharp features and is robust to noise and outliers. See also + - This package provides a method for piecewise planar object reconstruction from point clouds. + The method takes as input an unordered point set sampled from a piecewise planar object + and outputs a compact and watertight surface mesh interpolating the input point set. + The method assumes that all necessary major planes are provided (or can be extracted from + the input point set using the shape detection method described in Point Set Shape Detection, + or any other alternative methods).The method can handle arbitrary piecewise planar objects + and is capable of recovering sharp features and is robust to noise and outliers. See also the associated [blog entry](https://www.cgal.org/2019/08/05/Polygonal_surface_reconstruction/). ### [Shape Detection](https://doc.cgal.org/5.0/Manual/packages.html#PkgShapeDetection) (major changes) @@ -294,11 +294,11 @@ Release date: November 2019 ### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.0/Manual/packages.html#PkgKernel23) - Added a new concept, [`ComputeApproximateAngle_3`](https://doc.cgal.org/5.0/Kernel_23/classKernel_1_1ComputeApproximateAngle__3.html), to the 3D Kernel concepts to compute the approximate angle between two 3D vectors. Corresponding functors - in the model ([`Compute_approximate_angle_3`](https://doc.cgal.org/5.0/Kernel_23/classKernel.html#a183c9ac358a4ccddc04e680f8ed16c0b)) + in the model ([`Compute_approximate_angle_3`](https://doc.cgal.org/5.0/Kernel_23/classKernel.html#a183c9ac358a4ccddc04e680f8ed16c0b)) and free function ([`approximate_angle`](https://doc.cgal.org/5.0/Kernel_23/group__approximate__angle__grp.html)) have also been added. - - The following objects are now hashable and thus trivially usable - with [`std::unordered_set`](https://en.cppreference.com/w/cpp/container/unordered_set) + - The following objects are now hashable and thus trivially usable + with [`std::unordered_set`](https://en.cppreference.com/w/cpp/container/unordered_set) and [`std::unordered_map`](https://en.cppreference.com/w/cpp/header/unordered_map): `CGAL::Aff_transformation_2`, `CGAL::Aff_transformation_3`, `CGAL::Bbox_2`, `CGAL::Bbox_3`, `CGAL::Circle_2`, @@ -308,11 +308,11 @@ Release date: November 2019 `CGAL::Weighted_point_2` and `CGAL::Weighted_point_3`. ### [Polygon Mesh Processing](https://doc.cgal.org/latest/Manual/packages.html#PkgPolygonMeshProcessing) - - Introduced a [wide range of new functions](https://doc.cgal.org/5.0/Polygon_mesh_processing/index.html#title36) + - Introduced a [wide range of new functions](https://doc.cgal.org/5.0/Polygon_mesh_processing/index.html#title36) related to location of queries on a triangle mesh, such as [`CGAL::Polygon_mesh_processing::locate(Point, Mesh)`](https://doc.cgal.org/5.0/Polygon_mesh_processing/group__PMP__locate__grp.html#gada09bd8740ba69ead9deca597d53cf15). The location of a point on a triangle mesh is expressed as the pair of a face and the barycentric - coordinates of the point in this face, enabling robust manipulation of locations + coordinates of the point in this face, enabling robust manipulation of locations (for example, intersections of two 3D segments living within the same face). - Added the mesh smoothing function [`smooth_mesh()`](https://doc.cgal.org/5.0/Polygon_mesh_processing/group__PMP__meshing__grp.html#gaa0551d546f6ab2cd9402bea12d8332a3), which can be used to improve the quality of triangle elements based on various geometric characteristics. @@ -335,14 +335,14 @@ Release date: November 2019 or vertices appearing in multiple umbrellas) of a mesh. ### [3D Point Set](https://doc.cgal.org/5.0/Manual/packages.html#PkgPointSet3) - - The [PLY IO functions](https://doc.cgal.org/5.0/Point_set_3/group__PkgPointSet3IO.html) now take an additional optional parameter to + - The [PLY IO functions](https://doc.cgal.org/5.0/Point_set_3/group__PkgPointSet3IO.html) now take an additional optional parameter to read/write comments from/in the PLY header. ### [Point Set Processing](https://doc.cgal.org/latest/Manual/packages.html#PkgPointSetProcessing3) - **Breaking change**: the API using iterators and overloads for optional parameters (deprecated since CGAL 4.12) has been removed. The current (and now only) API uses ranges and Named Parameters. - Added the possibility to use the named parameter - [`neighbor_radius`](https://doc.cgal.org/5.0/Point_set_processing_3/group__psp__namedparameters.html#PSP_neighbor_radius) + [`neighbor_radius`](https://doc.cgal.org/5.0/Point_set_processing_3/group__psp__namedparameters.html#PSP_neighbor_radius) to use spherical neighbor queries instead of K-nearest neighbors queries for the following functions: [`CGAL::bilateral_smooth_point_set()`](https://doc.cgal.org/5.0/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#ga4f82723e2f0bb33f3677e29e0208a256), [`CGAL::jet_estimate_normals()`](https://doc.cgal.org/5.0/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#ga0cd0f87de690d4edf82740e856efa491), @@ -385,7 +385,7 @@ Release date: November 2019 ### [3D Triangulations](https://doc.cgal.org/5.0/Manual/packages.html#PkgTriangulation3) - **Breaking change**: The [constructor](https://doc.cgal.org/5.0/Triangulation_3/classCGAL_1_1Triangulation__3.html#a63f67cf6aaadcee14318cf56a36d247a) and the [`insert()`](https://doc.cgal.org/5.0/Triangulation_3/classCGAL_1_1Triangulation__3.html#ad3353128386bbb51f79d0263e7f67337) - function of [`CGAL::Triangulation_3`](https://doc.cgal.org/5.0/Triangulation_3/classCGAL_1_1Triangulation__3.html) + function of [`CGAL::Triangulation_3`](https://doc.cgal.org/5.0/Triangulation_3/classCGAL_1_1Triangulation__3.html) which take a range of points as argument are now guaranteed to insert the points following the order of `InputIterator`. Note that this change only affects the base class `Triangulation_3` @@ -397,14 +397,14 @@ Release date: November 2019 ### [Surface Mesh](https://doc.cgal.org/5.0/Manual/packages.html#PkgSurfaceMesh) - Introduced new functions to read and write using the PLY format, - [`CGAL::read_ply()`](https://doc.cgal.org/5.0/Surface_mesh/group__PkgSurface__mesh.html#ga42f6ad486ddab74e13d3dc53f511c343) - and [`CGAL::write_ply()`](https://doc.cgal.org/5.0/Surface_mesh/group__PkgSurface__mesh.html#ga77bbb79d449c981895eedb6c3c23bd14), + [`CGAL::read_ply()`](https://doc.cgal.org/5.0/Surface_mesh/group__PkgSurface__mesh.html#ga42f6ad486ddab74e13d3dc53f511c343) + and [`CGAL::write_ply()`](https://doc.cgal.org/5.0/Surface_mesh/group__PkgSurface__mesh.html#ga77bbb79d449c981895eedb6c3c23bd14), enabling users to save and load additional property maps of the surface mesh. ### [CGAL and Solvers](https://doc.cgal.org/5.0/Manual/packages.html#PkgSolverInterface) - Added [concepts](https://doc.cgal.org/5.0/Solver_interface/group__PkgSolverInterfaceConcepts.html) - and [models](https://doc.cgal.org/5.0/Solver_interface/group__PkgSolverInterfaceRef.html) - for solving Mixed Integer Programming (MIP) problems with or without constraints. + and [models](https://doc.cgal.org/5.0/Solver_interface/group__PkgSolverInterfaceRef.html) + for solving Mixed Integer Programming (MIP) problems with or without constraints. ### [3D Boolean Operations on Nef Polyhedra](https://doc.cgal.org/5.0/Manual/packages.html#PkgNef3) - Added a function to convert a Nef_polyhedron_3 to a polygon soup: [`CGAL::convert_nef_polyhedron_to_polygon_soup()`](https://doc.cgal.org/5.0/Nef_3/group__PkgNef3IOFunctions.html#ga28a9eb4da0cd6153f0c16f7f9eaf6665) @@ -433,7 +433,7 @@ Release 4.14 Release date: March 2019 ### 2D Periodic Hyperbolic Triangulations (new package) - + - This package allows the computation of Delaunay triangulations of the Bolza surface. The Bolza surface is the most symmetric hyperbolic surface of genus 2. Its fundamental domain is the diff --git a/Maintenance/public_release/announcement/mailing-beta.eml b/Maintenance/public_release/announcement/mailing-beta.eml index 11251b7563a..999c8503444 100644 --- a/Maintenance/public_release/announcement/mailing-beta.eml +++ b/Maintenance/public_release/announcement/mailing-beta.eml @@ -1,111 +1,302 @@ -Subject: CGAL 5.0 Beta 2 Released, Computational Geometry Algorithms Library +Subject: CGAL 5.1 Beta 1 Released, Computational Geometry Algorithms Library Content-Type: text/plain; charset="utf-8" -Body: +Body: -The CGAL Open Source Project is pleased to announce the release 5.0 Beta 2 +The CGAL Open Source Project is pleased to announce the release 5.1 Beta 1 of CGAL, the Computational Geometry Algorithms Library. -CGAL version 5.0 Beta 2 is a public testing release. It should provide a +CGAL version 5.1 Beta 1 is a public testing release. It should provide a solid ground to report bugs that need to be tackled before the release -of the final version of CGAL 5.0 in November. - -The important changes since CGAL 5.0 Beta 1 are the fix of CMake -issues, with header-only installations, and the update of the section -“Getting Started with CGAL” of the documentation. +of the final version of CGAL 5.1 in July. Besides fixes and general enhancement to existing packages, the following -has changed since CGAL 4.14: - -General changes - -- CGAL 5.0 is the first release of CGAL that requires a C++ compiler - with the support of C++14 or later. The new list of supported - compilers is: - - Visual C++ 14.0 (from Visual Studio 2015 Update 3) or later, - - Gnu g++ 6.3 or later (on Linux or MacOS), - - LLVM Clang version 8.0 or later (on Linux or MacOS), and - - Apple Clang compiler versions 7.0.2 and 10.0.1 (on MacOS). -- Since CGAL 4.9, CGAL can be used as a header-only library, with - dependencies. Since CGAL 5.0, that is now the default, unless - specified differently in the (optional) CMake configuration. -- The section “Getting Started with CGAL” of the documentation has - been updated and reorganized. -- The minimal version of Boost is now 1.57.0. - -Polygonal Surface Reconstruction (new package) - -- This package provides a method for piecewise planar object - reconstruction from point clouds. The method takes as input an - unordered point set sampled from a piecewise planar object and - outputs a compact and watertight surface mesh interpolating the - input point set. The method assumes that all necessary major planes - are provided (or can be extracted from the input point set using the - shape detection method described in Point Set Shape Detection, or - any other alternative methods).The method can handle arbitrary - piecewise planar objects and is capable of recovering sharp features - and is robust to noise and outliers. See also the associated blog - entry: - - https://www.cgal.org/2019/08/05/Polygonal_surface_reconstruction/ +has changed since CGAL 5.0: -Shape Detection (major changes) +Surface Mesh Topology (new package) -- BREAKING CHANGE: The concept ShapeDetectionTraits has been renamed - to EfficientRANSACTraits. -- BREAKING CHANGE: The Shape_detection_3 namespace has been renamed to - Shape_detection. -- Added a new, generic implementation of region growing. This enables - for example applying region growing to inputs such as 2D and 3D - point sets, or models of the FaceGraph concept. Learn more about - this new algorithm with this blog entry: - - https://www.cgal.org/2019/07/30/Shape_detection/ +- This package enables the computation of some topological invariants + of surfaces, such as: + - test if two (closed) curves on a combinatorial surface are + homotopic. Users can choose between free homotopy and homotopy + with fixed endpoints; + - test is a curve is contractible; + - compute shortest non-contractible cycles on a surface, with or + without weights on edges. + See also the associated blog entry: + https://www.cgal.org/2020/05/08/Surface_mesh_topology/ + +Optimal Bounding Box (new package) + +- This package implements an optimization algorithm that aims to + construct a close approximation of the _optimal bounding box_ of a + mesh or a point set, which is defined as the smallest (in terms of + volume) bounding box that contains a given mesh or point set. + + See also the associated blog entry: + https://www.cgal.org/2020/04/20/Optimal_bounding_box/ + +Tetrahedral Remeshing (new package) + +- This package implements a tetrahedral isotropic remeshing algorithm, + that improves the quality of tetrahedra in terms of dihedral angles, + while targeting a given edge length. + +Tutorials + +- Two new, detailed tutorials have been added: + - Surface Reconstruction from Point Clouds, which goes over a + typical full processing pipeline in a CGAL environment. + - Geographic Information Systems (GIS), which demonstrates usage + of CGAL data structures and algorithms in the context of a + typical GIS application. + + In both tutorials, complete code is provided. + + See https://doc.cgal.org/5.1/Manual/tutorials.html + +2D and 3D Linear Geometry Kernel + +- Added the functor CompareSignedDistanceToLine_2 to the 2D/3D Kernel + concept to compare the signed distance of two points to a line, or + the line passing through two given points. Corresponding functors in + the model (Compare_signed_distance_to_line_2) are also added. dD Geometry Kernel -- A new exact kernel, Epeck_d, is now available. +- The kernels Epick_d and Epeck_d gain two new functors: + Power_side_of_bounded_power_sphere_d and + Compute_squared_radius_smallest_orthogonal_sphere_d. Those are + essential for the computation of weighted alpha-complexes. +Surface Mesh -2D and 3D Triangulations +- BREAKING CHANGE: The function CGAL::Surface_mesh::clear() now + removes all non-default properties instead of just emptying them. -- BREAKING CHANGE: Several deprecated functions and classes have been - removed. See the full list of breaking changes in the release notes. +CGAL and the Boost Graph Library (BGL) -- BREAKING CHANGE: The constructor and the insert() function of - CGAL::Triangulation_2 or CGAL::Triangulation_3 which take a range of - points as argument are now guaranteed to insert the points following - the order of InputIterator. Note that this change only affects the - base class CGAL::Triangulation_[23] and not any derived class, such - as CGAL::Delaunay_triangulation_[23]. +- Added the function CGAL::alpha_expansion_graphcut(), which + regularizes a multi-label partition over a user-defined graph. +- Added the function CGAL::regularize_face_selection_borders(), which + uses this alpha expansion graphcut to regularize the borders of a + selected faces on a triangle mesh. +- Added the function CGAL::set_triangulation_ids(), which must be used + to initialize vertex, edge, and face indices of a triangulation + meant to be used with BGL algorithms. + +3D Fast Intersection and Distance Computation + +- The behavior of the internal search tree used to accelerate distance + queries has changed: usage of the internal search tree will now be + enabled by default, and its construction will be triggered by the + first distance query. Automatic construction and usage can be + disabled by calling + CGAL::AABB_tree::do_not_accelerate_distance_queries() before the + first distance query, and the tree can be built at any moment by + calling CGAL::AABB_tree::accelerate_distance_queries(). +- BREAKING CHANGE: CGAL::AABB_tree::accelerate_distance_queries() and + CGAL::AABB_tree::do_not_accelerate_distance_queries() are no longer + const functions. + +2D Arrangements + +- Changed intersection return type from legacy CGAL::Object to modern + boost::variant in all traits concepts and models. As there exists an + implicit conversion from boost::variant to CGAL::Object, the new + code is backward compatible. However, it is recommended that all + calls to the intersection functions are fixed to use the new return + type. + +2D Regularized Boolean Set-Operations + +- Changed intersection return type from legacy CGAL::Object to modern + boost::variant in the concept ArrDirectionalTraits::Intersect_2 and + its models. + +2D Minkowski Sums + +- Changed intersection return type from legacy CGAL::Object to modern + boost::variant in the (internally used) model Arr_labeled_traits_2. + +dD Spatial Searching + +- The kd-tree can now be built in parallel: CGAL::Kd_tree::build() is + given an optional template parameter ConcurrencyTag (default value + remains CGAL::Sequential_tag for backward compatibility). +- Improved the performance of the kd-tree in some cases: + - Not storing the points coordinates inside the tree usually + generates a lot of cache misses, leading to non-optimal + performance. This is the case for example when indices are + stored inside the tree, or to a lesser extent when the points + coordinates are stored in a dynamically allocated array (e.g., + Epick_d with dynamic dimension) — we says “to a lesser extent” + because the points are re-created by the kd-tree in a + cache-friendly order after its construction, so the coordinates + are more likely to be stored in a near-optimal order on the + heap. In these cases, the new EnablePointsCache template + parameter of the CGAL::Kd_tree class can be set to + CGAL::Tag_true. The points coordinates will then be cached in an + optimal way. This will increase memory consumption but provides + better search performance. See the updated GeneralDistance and + FuzzyQueryItem concepts for additional requirements when using + such a cache. + - In most cases (e.g., Euclidean distance), the distance + computation algorithm knows before its end that the distance + will be greater than or equal to some given value. This is used + in the (orthogonal) k-NN search to interrupt some distance + computations before its end, saving precious milliseconds, in + particular in medium-to-high dimension. + +Intersecting Sequences of dD Iso-oriented Boxes + +- Added parallel versions of the functions CGAL::box_intersection_d() + and CGAL::box_self_intersection_d(). + +Spatial Sorting + +- Added parallel versions of the functions CGAL::hilbert_sort() and + CGAL::spatial_sort() in 2D and 3D when the median policy is used. + The parallel versions use up to four threads in 2D, and up to eight + threads in 3D. + +3D Convex Hulls + +- A new overload for CGAL::convex_hull_3() that takes a model of + VertexListGraph has been added. +- The long-deprecated function CGAL::convex_hull_3_to_polyhedron_3() + has been removed. The function CGAL::convex_hull_3_to_face_graph() + should be used instead. Polygon Mesh Processing -- Introduced a wide range of new functions related to location of - queries on a triangle mesh, such as - CGAL::Polygon_mesh_processing::locate(Point, Mesh). The location of - a point on a triangle mesh is expressed as the pair of a face and - the barycentric coordinates of the point in this face, enabling - robust manipulation of locations (for example, intersections of two - 3D segments living within the same face). -- Added the mesh smoothing function smooth_mesh(), which can be used - to improve the quality of triangle elements based on various - geometric characteristics. -- Added the shape smoothing function smooth_shape(), which can be used - to smooth the surface of a triangle mesh, using the mean curvature - flow to perform noise removal. - +- Added the function + CGAL::Polygon_mesh_processing::volume_connected_component(), which + can be used to get information about the nesting of the connected + components of a given triangle mesh and about the volumes defined. +- Added the function + CGAL::Polygon_mesh_processing::remove_connected_components_of_negligible_size(), + which can be used to remove connected components whose area or + volume is under a certain threshold. Area and volume thresholds are + either specified by the user or deduced from the bounding box of the + mesh. +- Added a new named parameter for + CGAL::Polygon_mesh_processing::keep_large_connected_components() and + CGAL::Polygon_mesh_processing::remove_connected_components_of_negligible_size, + which can be used to perform a dry run of the operation, meaning + that the function will return the number of connected components + that would be removed with the specified threshold, but without + actually removing them. +- Added the function CGAL::Polygon_mesh_processing::split(), which can + be used to split meshes along a mesh or a plane. +- Added the function + CGAL::Polygon_mesh_processing::split_connected_components() to split + a single mesh containing several connected components into several + meshes containing one connected component. +- Added the functions + CGAL::Polygon_mesh_processing::merge_reversible_connected_components(), + CGAL::Polygon_mesh_processing::duplicate_non_manifold_edges_in_polygon_soup(), + and + CGAL::Polygon_mesh_processing::orient_triangle_soup_with_reference_triangle_mesh(), + which can be helpful when repairing a polygon soup. +- Added the function + CGAL::Polygon_mesh_processing::sample_triangle_soup(), which + generates points on a triangle soup surface. +- Added parallel versions of the functions + CGAL::Polygon_mesh_processing::does_self_intersect() and + CGAL::Polygon_mesh_processing::self_intersections(). +- The function CGAL::Polygon_mesh_processing::stitch_borders() now + returns the number of halfedge pairs that were stitched. +- Added the function + CGAL::Polygon_mesh_processing::polygon_mesh_to_polygon_soup(). +- The function + CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh now + allows passing a point map (for the point range) and a vertex point + map (for the polygon mesh) via named parameters. Point Set Processing -- BREAKING CHANGE: the API using iterators and overloads for optional - parameters (deprecated since CGAL 4.12) has been removed. The - current (and now only) API uses ranges and Named Parameters. +- BREAKING CHANGE: CGAL::remove_outliers() has been parallelized and + thus has a new template parameter ConcurrencyTag. To update your + code simply add as first template parameter CGAL::Sequential_tag or + CGAL::Parallel_tag when calling this function. +- Add a function CGAL::cluster_point_set() that segments a point cloud + into connected components based on a distance threshold. +- Added wrapper functions for registration: + - CGAL::OpenGR::compute_registration_transformation(), which + computes the registration transformation for two point sets + using the Super4PCS algorithm implemented in the third party + library OpenGR. + - CGAL::OpenGR::register_point_sets(), which computes the + registration transformation for two point sets using the + Super4PCS algorithm implemented in the third party library + OpenGR, and registers the points sets by transforming the data + point set using the computed transformation. + - CGAL::pointmatcher::compute_registration_transformation() + computes the registration transformation for two point sets + using ICP algorithm implemented in the third party library + libpointmatcher. + - CGAL::pointmatcher::register_point_sets(), which computes the + registration transformation for two point sets using ICP + algorithm implemented in the third party library + libpointmatcher, and registers the points sets by transforming + the data point set using the computed transformation. -See https://www.cgal.org/2019/10/31/cgal50-beta2/ for a complete list of +2D Triangulations + +- To fix an inconsistency between code and documentation and to + clarify which types of intersections are truly allowed in + constrained Delaunay triangulations, the tag + CGAL::No_intersection_tag has been deprecated in favor of two new + tags: CGAL::No_constraint_intersection_tag and + CGAL::No_constraint_intersection_requiring_constructions_tag. The + latter is equivalent to the now-deprecated + CGAL::No_intersection_tag, and allows constraints to intersect as + long as no new point has to be created to represent that + intersection (for example, the intersection of two constraint + segments in a ‘T’-like junction is an existing point and as such + does not require any new construction). The former tag, + CGAL::No_constraint_intersection_tag, does not allow any + intersection, except for the configuration of two constraints having + a single common endpoints, for convience. +- Added the function + CGAL::split_subconstraint_graph_into_constraints() to + Constrained_triangulation_plus_2 to initialize the constraints from + a soup of disconnected segments that should first be split into + polylines. + +3D Triangulations + +- The member function CGAL::Triangulation_3::file_input() have been + added. It allows to load a CGAL::Triangulation_3 from an input + stream, using functors to create vertices and cells. + +3D Triangulation Data Structure + +- The member function CGAL::TDS_3::file_input() have been added. It + allows to load a CGAL::Triangulation_data_structure_3 from an input + stream, using functors to create vertices and cells. + +Surface Mesh Simplification + +- Added a new simplification method based on the quadric error defined + by Garland and Heckbert. +- The concept EdgeProfile has been removed. This concept was not + actually in use as the CGAL-provided model CGAL::Edge_profile was + imposed to the user. Other concepts have been clarified to reflect + the fact that the API uses this particular class. + +STL Extensions for CGAL + +- Added a new concurrency tag: CGAL::Parallel_if_available_tag. This + tag is a convenience typedef to CGAL::Parallel_tag if the third + party library TBB has been found and linked with, and to + CGAL::Sequential_tag otherwise. + +See https://www.cgal.org/2020/06/09/cgal51-beta1/ for a complete list of changes. From d127be9d84e4ec1e2c50206b2b5cbe377bcd1eb5 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 10 Jun 2020 11:59:54 +0200 Subject: [PATCH 44/46] Second draft of the announcement mail, after a collaborative edition --- Installation/CHANGES.md | 14 +- .../announcement/mailing-beta.eml | 262 +++--------------- 2 files changed, 49 insertions(+), 227 deletions(-) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 14bfe13c5af..b6cc3849288 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -6,6 +6,12 @@ Release History Release date: July 2020 +### [Tetrahedral Remeshing](https://doc.cgal.org/5.1/Manual/packages.html#PkgTetrahedralRemeshing) (new package) + +- This package implements a tetrahedral isotropic remeshing algorithm, + that improves the quality of tetrahedra in terms of dihedral angles, + while targeting a given edge length. + ### [Surface Mesh Topology](https://doc.cgal.org/5.1/Manual/packages.html#PkgSurfaceMeshTopologySummary) (new package) - This package enables the computation of some topological invariants of surfaces, such as: @@ -24,12 +30,6 @@ Release date: July 2020 See also the associated [blog entry](https://www.cgal.org/2020/04/20/Optimal_bounding_box/). -### [Tetrahedral Remeshing](https://doc.cgal.org/5.1/Manual/packages.html#PkgTetrahedralRemeshing) (new package) - -- This package implements a tetrahedral isotropic remeshing algorithm, - that improves the quality of tetrahedra in terms of dihedral angles, - while targeting a given edge length. - ### [Tutorials](https://doc.cgal.org/5.1/Manual/tutorials.html) - Two new, detailed tutorials have been added: @@ -38,7 +38,7 @@ Release date: July 2020 - [Geographic Information Systems (GIS)](https://doc.cgal.org/5.1/Manual/tuto_gis.html), which demonstrates usage of CGAL data structures and algorithms in the context of a typical GIS application. - In both tutorials, complete code is provided. + Both tutorials provide complete code. ### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.1/Manual/packages.html#PkgKernel23) diff --git a/Maintenance/public_release/announcement/mailing-beta.eml b/Maintenance/public_release/announcement/mailing-beta.eml index 999c8503444..2603055f765 100644 --- a/Maintenance/public_release/announcement/mailing-beta.eml +++ b/Maintenance/public_release/announcement/mailing-beta.eml @@ -15,6 +15,12 @@ Besides fixes and general enhancement to existing packages, the following has changed since CGAL 5.0: +Tetrahedral Remeshing (new package) + +- This package implements a tetrahedral isotropic remeshing algorithm, + that improves the quality of tetrahedra in terms of dihedral angles, + while targeting a given edge length. + Surface Mesh Topology (new package) - This package enables the computation of some topological invariants @@ -39,12 +45,6 @@ Optimal Bounding Box (new package) See also the associated blog entry: https://www.cgal.org/2020/04/20/Optimal_bounding_box/ -Tetrahedral Remeshing (new package) - -- This package implements a tetrahedral isotropic remeshing algorithm, - that improves the quality of tetrahedra in terms of dihedral angles, - while targeting a given edge length. - Tutorials - Two new, detailed tutorials have been added: @@ -54,39 +54,46 @@ Tutorials of CGAL data structures and algorithms in the context of a typical GIS application. - In both tutorials, complete code is provided. + Both tutorials provide complete code. See https://doc.cgal.org/5.1/Manual/tutorials.html -2D and 3D Linear Geometry Kernel +Point Set Processing -- Added the functor CompareSignedDistanceToLine_2 to the 2D/3D Kernel - concept to compare the signed distance of two points to a line, or - the line passing through two given points. Corresponding functors in - the model (Compare_signed_distance_to_line_2) are also added. +- Added wrapper functions for registration, using the Super4PCS + algorithm implemented in the third party libraries OpenGRand + libpointmatcher. -dD Geometry Kernel -- The kernels Epick_d and Epeck_d gain two new functors: - Power_side_of_bounded_power_sphere_d and - Compute_squared_radius_smallest_orthogonal_sphere_d. Those are - essential for the computation of weighted alpha-complexes. +Surface Mesh Simplification -Surface Mesh +- Added a new simplification method based on the quadric error defined + by Garland and Heckbert. -- BREAKING CHANGE: The function CGAL::Surface_mesh::clear() now - removes all non-default properties instead of just emptying them. +dD Spatial Searching -CGAL and the Boost Graph Library (BGL) +- The kd-tree can now be built in parallel: CGAL::Kd_tree::build() is + given an optional template parameter ConcurrencyTag (default value + remains CGAL::Sequential_tag for backward compatibility). -- Added the function CGAL::alpha_expansion_graphcut(), which - regularizes a multi-label partition over a user-defined graph. -- Added the function CGAL::regularize_face_selection_borders(), which - uses this alpha expansion graphcut to regularize the borders of a - selected faces on a triangle mesh. -- Added the function CGAL::set_triangulation_ids(), which must be used - to initialize vertex, edge, and face indices of a triangulation - meant to be used with BGL algorithms. +Intersecting Sequences of dD Iso-oriented Boxes + +- Added parallel versions of the functions CGAL::box_intersection_d() + and CGAL::box_self_intersection_d(). + +Polygon Mesh Processing + +- Added the function CGAL::Polygon_mesh_processing::split(), which can + be used to split meshes along a mesh or a plane. +- Added the function + CGAL::Polygon_mesh_processing::split_connected_components() to split + a single mesh containing several connected components into several + meshes containing one connected component. +- Added parallel versions of the functions + CGAL::Polygon_mesh_processing::does_self_intersect() and + CGAL::Polygon_mesh_processing::self_intersections(). +- Added several mesh repair functions (see the complete changelog for + more information). 3D Fast Intersection and Distance Computation @@ -102,199 +109,14 @@ CGAL and the Boost Graph Library (BGL) CGAL::AABB_tree::do_not_accelerate_distance_queries() are no longer const functions. -2D Arrangements -- Changed intersection return type from legacy CGAL::Object to modern - boost::variant in all traits concepts and models. As there exists an - implicit conversion from boost::variant to CGAL::Object, the new - code is backward compatible. However, it is recommended that all - calls to the intersection functions are fixed to use the new return - type. +CGAL and the Boost Graph Library (BGL) -2D Regularized Boolean Set-Operations - -- Changed intersection return type from legacy CGAL::Object to modern - boost::variant in the concept ArrDirectionalTraits::Intersect_2 and - its models. - -2D Minkowski Sums - -- Changed intersection return type from legacy CGAL::Object to modern - boost::variant in the (internally used) model Arr_labeled_traits_2. - -dD Spatial Searching - -- The kd-tree can now be built in parallel: CGAL::Kd_tree::build() is - given an optional template parameter ConcurrencyTag (default value - remains CGAL::Sequential_tag for backward compatibility). -- Improved the performance of the kd-tree in some cases: - - Not storing the points coordinates inside the tree usually - generates a lot of cache misses, leading to non-optimal - performance. This is the case for example when indices are - stored inside the tree, or to a lesser extent when the points - coordinates are stored in a dynamically allocated array (e.g., - Epick_d with dynamic dimension) — we says “to a lesser extent” - because the points are re-created by the kd-tree in a - cache-friendly order after its construction, so the coordinates - are more likely to be stored in a near-optimal order on the - heap. In these cases, the new EnablePointsCache template - parameter of the CGAL::Kd_tree class can be set to - CGAL::Tag_true. The points coordinates will then be cached in an - optimal way. This will increase memory consumption but provides - better search performance. See the updated GeneralDistance and - FuzzyQueryItem concepts for additional requirements when using - such a cache. - - In most cases (e.g., Euclidean distance), the distance - computation algorithm knows before its end that the distance - will be greater than or equal to some given value. This is used - in the (orthogonal) k-NN search to interrupt some distance - computations before its end, saving precious milliseconds, in - particular in medium-to-high dimension. - -Intersecting Sequences of dD Iso-oriented Boxes - -- Added parallel versions of the functions CGAL::box_intersection_d() - and CGAL::box_self_intersection_d(). - -Spatial Sorting - -- Added parallel versions of the functions CGAL::hilbert_sort() and - CGAL::spatial_sort() in 2D and 3D when the median policy is used. - The parallel versions use up to four threads in 2D, and up to eight - threads in 3D. - -3D Convex Hulls - -- A new overload for CGAL::convex_hull_3() that takes a model of - VertexListGraph has been added. -- The long-deprecated function CGAL::convex_hull_3_to_polyhedron_3() - has been removed. The function CGAL::convex_hull_3_to_face_graph() - should be used instead. - -Polygon Mesh Processing - -- Added the function - CGAL::Polygon_mesh_processing::volume_connected_component(), which - can be used to get information about the nesting of the connected - components of a given triangle mesh and about the volumes defined. -- Added the function - CGAL::Polygon_mesh_processing::remove_connected_components_of_negligible_size(), - which can be used to remove connected components whose area or - volume is under a certain threshold. Area and volume thresholds are - either specified by the user or deduced from the bounding box of the - mesh. -- Added a new named parameter for - CGAL::Polygon_mesh_processing::keep_large_connected_components() and - CGAL::Polygon_mesh_processing::remove_connected_components_of_negligible_size, - which can be used to perform a dry run of the operation, meaning - that the function will return the number of connected components - that would be removed with the specified threshold, but without - actually removing them. -- Added the function CGAL::Polygon_mesh_processing::split(), which can - be used to split meshes along a mesh or a plane. -- Added the function - CGAL::Polygon_mesh_processing::split_connected_components() to split - a single mesh containing several connected components into several - meshes containing one connected component. -- Added the functions - CGAL::Polygon_mesh_processing::merge_reversible_connected_components(), - CGAL::Polygon_mesh_processing::duplicate_non_manifold_edges_in_polygon_soup(), - and - CGAL::Polygon_mesh_processing::orient_triangle_soup_with_reference_triangle_mesh(), - which can be helpful when repairing a polygon soup. -- Added the function - CGAL::Polygon_mesh_processing::sample_triangle_soup(), which - generates points on a triangle soup surface. -- Added parallel versions of the functions - CGAL::Polygon_mesh_processing::does_self_intersect() and - CGAL::Polygon_mesh_processing::self_intersections(). -- The function CGAL::Polygon_mesh_processing::stitch_borders() now - returns the number of halfedge pairs that were stitched. -- Added the function - CGAL::Polygon_mesh_processing::polygon_mesh_to_polygon_soup(). -- The function - CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh now - allows passing a point map (for the point range) and a vertex point - map (for the polygon mesh) via named parameters. - -Point Set Processing - -- BREAKING CHANGE: CGAL::remove_outliers() has been parallelized and - thus has a new template parameter ConcurrencyTag. To update your - code simply add as first template parameter CGAL::Sequential_tag or - CGAL::Parallel_tag when calling this function. -- Add a function CGAL::cluster_point_set() that segments a point cloud - into connected components based on a distance threshold. -- Added wrapper functions for registration: - - CGAL::OpenGR::compute_registration_transformation(), which - computes the registration transformation for two point sets - using the Super4PCS algorithm implemented in the third party - library OpenGR. - - CGAL::OpenGR::register_point_sets(), which computes the - registration transformation for two point sets using the - Super4PCS algorithm implemented in the third party library - OpenGR, and registers the points sets by transforming the data - point set using the computed transformation. - - CGAL::pointmatcher::compute_registration_transformation() - computes the registration transformation for two point sets - using ICP algorithm implemented in the third party library - libpointmatcher. - - CGAL::pointmatcher::register_point_sets(), which computes the - registration transformation for two point sets using ICP - algorithm implemented in the third party library - libpointmatcher, and registers the points sets by transforming - the data point set using the computed transformation. - -2D Triangulations - -- To fix an inconsistency between code and documentation and to - clarify which types of intersections are truly allowed in - constrained Delaunay triangulations, the tag - CGAL::No_intersection_tag has been deprecated in favor of two new - tags: CGAL::No_constraint_intersection_tag and - CGAL::No_constraint_intersection_requiring_constructions_tag. The - latter is equivalent to the now-deprecated - CGAL::No_intersection_tag, and allows constraints to intersect as - long as no new point has to be created to represent that - intersection (for example, the intersection of two constraint - segments in a ‘T’-like junction is an existing point and as such - does not require any new construction). The former tag, - CGAL::No_constraint_intersection_tag, does not allow any - intersection, except for the configuration of two constraints having - a single common endpoints, for convience. -- Added the function - CGAL::split_subconstraint_graph_into_constraints() to - Constrained_triangulation_plus_2 to initialize the constraints from - a soup of disconnected segments that should first be split into - polylines. - -3D Triangulations - -- The member function CGAL::Triangulation_3::file_input() have been - added. It allows to load a CGAL::Triangulation_3 from an input - stream, using functors to create vertices and cells. - -3D Triangulation Data Structure - -- The member function CGAL::TDS_3::file_input() have been added. It - allows to load a CGAL::Triangulation_data_structure_3 from an input - stream, using functors to create vertices and cells. - -Surface Mesh Simplification - -- Added a new simplification method based on the quadric error defined - by Garland and Heckbert. -- The concept EdgeProfile has been removed. This concept was not - actually in use as the CGAL-provided model CGAL::Edge_profile was - imposed to the user. Other concepts have been clarified to reflect - the fact that the API uses this particular class. - -STL Extensions for CGAL - -- Added a new concurrency tag: CGAL::Parallel_if_available_tag. This - tag is a convenience typedef to CGAL::Parallel_tag if the third - party library TBB has been found and linked with, and to - CGAL::Sequential_tag otherwise. +- Added the function CGAL::alpha_expansion_graphcut(), which + regularizes a multi-label partition over a user-defined graph. +- Added the function CGAL::regularize_face_selection_borders(), which + uses this alpha expansion graphcut to regularize the borders of a + selected faces on a triangle mesh. See https://www.cgal.org/2020/06/09/cgal51-beta1/ for a complete list of changes. From ef88baf8f295cd4c56e4ec637c9b82fd0b723728 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 10 Jun 2020 17:10:36 +0200 Subject: [PATCH 45/46] Fix the announcement for PSP --- Maintenance/public_release/announcement/mailing-beta.eml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maintenance/public_release/announcement/mailing-beta.eml b/Maintenance/public_release/announcement/mailing-beta.eml index 2603055f765..9234c02b647 100644 --- a/Maintenance/public_release/announcement/mailing-beta.eml +++ b/Maintenance/public_release/announcement/mailing-beta.eml @@ -60,8 +60,8 @@ Tutorials Point Set Processing -- Added wrapper functions for registration, using the Super4PCS - algorithm implemented in the third party libraries OpenGRand +- Added wrapper functions for registration, using the Super4PCS and + ICP algorithms implemented in the third party libraries OpenGR and libpointmatcher. From 6747341f666a3cb061ff053aa10a8709982e81f8 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 10 Jun 2020 18:06:52 +0200 Subject: [PATCH 46/46] Fix travis, broken since #4620 (commit 0a43f88f5d60) --- .travis.yml | 53 +++++++++++++++++++++++++---------------------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/.travis.yml b/.travis.yml index 26946424096..2c2fe62d3f4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,34 +4,6 @@ sudo: required git: depth: 3 env: - matrix: - PACKAGES_MATRIX - -compiler: clang -install: - - echo "$PWD" - - if [ -n "$TRAVIS_PULL_REQUEST_BRANCH" ] && [ "$PACKAGE" != CHECK ]; then DO_IGNORE=FALSE; for ARG in $(echo "$PACKAGE");do if [ "$ARG" = "Maintenance" ]; then continue; fi; . $PWD/.travis/test_package.sh "$PWD" "$ARG"; echo "DO_IGNORE is $DO_IGNORE"; if [ "$DO_IGNORE" = "FALSE" ]; then break; fi; done; if [ "$DO_IGNORE" = "TRUE" ]; then travis_terminate 0; fi;fi - - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash .travis/install.sh - - export CXX=clang++ CC=clang; -before_script: - - wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe - - sudo mv doxygen_exe /usr/bin/doxygen - - sudo chmod +x /usr/bin/doxygen - - mkdir -p build - - cd build - - /usr/bin/time -f 'Spend time of %C -- %E (real)' cmake -DCMAKE_CXX_FLAGS="-std=c++1y" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON .. - - /usr/bin/time -f 'Spend time of %C -- %E (real)' make - - /usr/bin/time -f 'Spend time of %C -- %E (real)' sudo make install &>/dev/null - - cd .. -script: - - cd ./.travis - - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash ./build_package.sh $PACKAGE -notifications: - email: - on_success: change - # default: always - on_failure: always - # default: always matrix: - PACKAGE='CHECK' - PACKAGE='AABB_tree Advancing_front_surface_reconstruction Algebraic_foundations ' @@ -81,3 +53,28 @@ notifications: - PACKAGE='Three Triangulation Triangulation_2 ' - PACKAGE='Triangulation_3 Union_find Visibility_2 ' - PACKAGE='Voronoi_diagram_2 wininst ' +compiler: clang +install: + - echo "$PWD" + - if [ -n "$TRAVIS_PULL_REQUEST_BRANCH" ] && [ "$PACKAGE" != CHECK ]; then DO_IGNORE=FALSE; for ARG in $(echo "$PACKAGE");do if [ "$ARG" = "Maintenance" ]; then continue; fi; . $PWD/.travis/test_package.sh "$PWD" "$ARG"; echo "DO_IGNORE is $DO_IGNORE"; if [ "$DO_IGNORE" = "FALSE" ]; then break; fi; done; if [ "$DO_IGNORE" = "TRUE" ]; then travis_terminate 0; fi;fi + - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash .travis/install.sh + - export CXX=clang++ CC=clang; +before_script: + - wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe + - sudo mv doxygen_exe /usr/bin/doxygen + - sudo chmod +x /usr/bin/doxygen + - mkdir -p build + - cd build + - /usr/bin/time -f 'Spend time of %C -- %E (real)' cmake -DCMAKE_CXX_FLAGS="-std=c++1y" -DCGAL_HEADER_ONLY=ON -DCMAKE_CXX_FLAGS_RELEASE=-DCGAL_NDEBUG -DWITH_examples=ON -DWITH_demos=ON -DWITH_tests=ON .. + - /usr/bin/time -f 'Spend time of %C -- %E (real)' make + - /usr/bin/time -f 'Spend time of %C -- %E (real)' sudo make install &>/dev/null + - cd .. +script: + - cd ./.travis + - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash ./build_package.sh $PACKAGE +notifications: + email: + on_success: change + # default: always + on_failure: always + # default: always