Squash-merge PR #5701 into 5.2.x

See https://github.com/CGAL/cgal/pull/5701
This commit is contained in:
Laurent Rineau 2021-11-30 12:14:53 +01:00
parent 07cfbc21d8
commit db4cea95a6
11 changed files with 130 additions and 31 deletions

View File

@ -97,10 +97,35 @@ function(cgal_add_compilation_test exe_name)
if(NOT POLICY CMP0064 OR TEST compilation_of__${exe_name})
return()
endif()
add_test(NAME "compilation_of__${exe_name}"
COMMAND ${TIME_COMMAND} "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target "${exe_name}" --config "$<CONFIG>")
set_property(TEST "compilation_of__${exe_name}"
APPEND PROPERTY LABELS "${PROJECT_NAME}")
if(NOT CMAKE_VS_MSBUILD_COMMAND)
if(TEST compilation_of__${exe_name})
return()
endif()
add_test(NAME "compilation_of__${exe_name}"
COMMAND ${TIME_COMMAND} "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target "${exe_name}" --config "$<CONFIG>")
set_property(TEST "compilation_of__${exe_name}"
APPEND PROPERTY LABELS "${PROJECT_NAME}")
set_property(TEST "compilation_of__${exe_name}"
APPEND PROPERTY FIXTURES_REQUIRED "check_build_system_SetupFixture")
elseif(NOT TARGET compilation_of__${PROJECT_NAME})#CMAKE_VS_MSBUILD_COMMAND
#this target is just a flag, to deal with the scope problem with the tests
add_custom_target(compilation_of__${PROJECT_NAME})
add_test(NAME "compilation_of__${PROJECT_NAME}"
COMMAND ${TIME_COMMAND} "${CMAKE_VS_MSBUILD_COMMAND}" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.sln" "-m:$ENV{NUMBER_OF_PROCESSORS}" "/t:Build" "/p:Configuration=$<CONFIG>")
set_property(TEST "compilation_of__${PROJECT_NAME}"
APPEND PROPERTY LABELS "${PROJECT_NAME}")
set_property(TEST "compilation_of__${PROJECT_NAME}"
APPEND PROPERTY FIXTURES_REQUIRED "check_build_system_SetupFixture")
set_tests_properties("compilation_of__${PROJECT_NAME}"
PROPERTIES RUN_SERIAL TRUE)
#because of the scope of the tests, this part cannot go in the relevant CMakeLists
if("${PROJECT_NAME}" STREQUAL "Polyhedron_Demo")
set_tests_properties(compilation_of__Polyhedron_Demo PROPERTIES TIMEOUT 2400)
elseif("${PROJECT_NAME}" STREQUAL "Mesh_3_Tests" OR "${PROJECT_NAME}" STREQUAL "Mesh_3_Examples")
set_tests_properties(compilation_of__${PROJECT_NAME} PROPERTIES TIMEOUT 1600)
endif()
endif()#CMAKE_VS_MSBUILD_COMMAND
if(NOT TARGET ALL_CGAL_TARGETS)
add_custom_target( ALL_CGAL_TARGETS )
endif()
@ -159,8 +184,13 @@ function(cgal_setup_test_properties test_name)
endif()
if(exe_name)
set_property(TEST "${test_name}"
APPEND PROPERTY DEPENDS "compilation_of__${exe_name}")
if(NOT CMAKE_VS_MSBUILD_COMMAND)
set_property(TEST "${test_name}"
APPEND PROPERTY DEPENDS "compilation_of__${exe_name}")
else()#CMAKE_VS_MSBUILD_COMMAND
set_property(TEST "${test_name}"
APPEND PROPERTY DEPENDS "compilation_of__${PROJECT_NAME}")
endif()#CMAKE_VS_MSBUILD_COMMAND
endif()
get_filename_component(_source_dir_abs ${CMAKE_CURRENT_SOURCE_DIR} ABSOLUTE)
@ -242,8 +272,13 @@ function(cgal_setup_test_properties test_name)
if(exe_name)
set_property(TEST ${test_name}
APPEND PROPERTY FIXTURES_REQUIRED "${exe_name}")
set_property(TEST "compilation_of__${exe_name}"
PROPERTY FIXTURES_SETUP "${exe_name}")
if(NOT CMAKE_VS_MSBUILD_COMMAND)
set_property(TEST "compilation_of__${exe_name}"
PROPERTY FIXTURES_SETUP "${exe_name}")
else()#CMAKE_VS_MSBUILD_COMMAND
set_property(TEST "compilation_of__${PROJECT_NAME}"
PROPERTY FIXTURES_SETUP "${exe_name}")
endif()#CMAKE_VS_MSBUILD_COMMAND
if((ANDROID OR CGAL_RUN_TESTS_THROUGH_SSH) AND NOT TEST push_of__${exe_name})
if(ANDROID)
add_test(NAME "push_of__${exe_name}"

View File

@ -69,8 +69,8 @@ include(${CGAL_USE_FILE})
find_package(
Qt5 QUIET
COMPONENTS OpenGL Script
OPTIONAL_COMPONENTS ScriptTools WebSockets)
COMPONENTS OpenGL Script Widgets
OPTIONAL_COMPONENTS ScriptTools WebSockets Network)
set_package_properties(
Qt5 PROPERTIES
@ -241,7 +241,7 @@ if(CGAL_Qt5_FOUND AND Qt5_FOUND)
STATUS "Qt5WebSockets was found. Using WebSockets is therefore possible.")
endif()
cgal_add_compilation_test(demo_framework)
#compilation_of__demo_framework is defined in polyhedron_demo_macros.cmake
# Let's define `three_EXPORT` during the compilation of `demo_framework`,
# in addition of `demo_framework_EXPORT` (defined automatically by
# CMake). That is to deal with the visibility of symbols of
@ -267,23 +267,11 @@ if(CGAL_Qt5_FOUND AND Qt5_FOUND)
target_link_libraries(point_dialog PUBLIC Qt5::OpenGL Qt5::Gui Qt5::Script
Qt5::Widgets)
add_custom_target(all_scene_items)
if(BUILD_TESTING)
cgal_add_compilation_test(all_scene_items)
set_property(
TEST compilation_of__all_scene_items
APPEND
PROPERTY DEPENDS compilation_of__demo_framework)
set_property(TEST compilation_of__all_scene_items APPEND PROPERTY TIMEOUT
1700)
endif(BUILD_TESTING)
macro(add_item item_name)
add_library(${item_name} SHARED ${ARGN})
target_link_libraries(
${item_name} PUBLIC demo_framework ${CGAL_LIBRARIES} Qt5::OpenGL Qt5::Gui
Qt5::Script Qt5::Widgets)
add_dependencies(all_scene_items ${item_name})
add_to_cached_list(CGAL_EXECUTABLE_TARGETS ${item_name})
endmacro(add_item)
@ -477,9 +465,9 @@ if(CGAL_Qt5_FOUND AND Qt5_FOUND)
add_to_cached_list(CGAL_EXECUTABLE_TARGETS CGAL_PMP)
#WS Server
if(TARGET Qt5::WebSockets)
if(TARGET Qt5::WebSockets AND TARGET Qt5::Network)
add_executable(WS_server Server_ws.cpp)
target_link_libraries(WS_server PUBLIC Qt5::WebSockets)
target_link_libraries(WS_server PUBLIC Qt5::WebSockets Qt5::Widgets Qt5::Network)
message(
STATUS "Qt5WebSockets was found. Using WebSockets is therefore possible.")
endif()

View File

@ -7,5 +7,5 @@ polyhedron_demo_plugin(camera_positions_plugin
${cameraUI_FILES}
KEYWORDS Viewer)
target_link_libraries( camera_positions_plugin PUBLIC demo_framework)
add_dependencies(camera_positions_plugin demo_framework)
target_link_libraries(camera_positions_plugin PUBLIC demo_framework)

View File

@ -62,6 +62,12 @@ if(TARGET CGAL::Eigen3_support)
scene_color_ramp
CGAL::Eigen3_support)
if(BUILD_TESTING AND NOT CMAKE_VS_MSBUILD_COMMAND)
set_tests_properties(
compilation_of__classification_plugin
PROPERTIES RESOURCE_LOCK Selection_test_resources)
endif()
if(TARGET CGAL::Boost_serialization_support AND TARGET CGAL::Boost_iostreams_support)
target_link_libraries(classification_plugin PUBLIC
CGAL::Boost_serialization_support

View File

@ -8,3 +8,10 @@ target_link_libraries(
polyhedron_demo_plugin(kernel_plugin Kernel_plugin)
target_link_libraries(kernel_plugin PUBLIC scene_surface_mesh_item)
if(BUILD_TESTING AND NOT CMAKE_VS_MSBUILD_COMMAND)
set_tests_properties(
compilation_of__convex_hull_plugin
PROPERTIES RESOURCE_LOCK Selection_test_resources)
endif()

View File

@ -37,3 +37,9 @@ target_link_libraries(
basic_generator_plugin
PUBLIC scene_surface_mesh_item scene_points_with_normal_item
scene_polylines_item)
if(BUILD_TESTING AND NOT CMAKE_VS_MSBUILD_COMMAND)
set_tests_properties(
compilation_of__create_obb_mesh_plugin
PROPERTIES RESOURCE_LOCK Selection_test_resources)
endif()

View File

@ -52,6 +52,17 @@ if(TARGET CGAL::Eigen3_support)
DESCRIPTION "A large scale non-linear optimization library."
PURPOSE "Can be used as a solver in the smoothing plugin.")
target_link_libraries(extrude_plugin PUBLIC CGAL::Eigen3_support)
if(BUILD_TESTING AND NOT CMAKE_VS_MSBUILD_COMMAND)
set_tests_properties(
compilation_of__extrude_plugin
compilation_of__fairing_plugin
PROPERTIES RESOURCE_LOCK Selection_test_resources)
set_tests_properties(
compilation_of__hole_filling_plugin
compilation_of__smoothing_plugin
PROPERTIES RESOURCE_LOCK Selection_test_resources)
endif()
else()
message(
STATUS
@ -153,3 +164,15 @@ polyhedron_demo_plugin(engrave_text_plugin Engrave_text_plugin
target_link_libraries(
engrave_text_plugin PUBLIC scene_surface_mesh_item scene_selection_item
scene_polylines_item)
if(BUILD_TESTING AND NOT CMAKE_VS_MSBUILD_COMMAND)
set_tests_properties(
compilation_of__join_and_split_plugin
compilation_of__selection_plugin
compilation_of__triangulate_facets_plugin
compilation_of__isotropic_remeshing_plugin
compilation_of__random_perturbation_plugin
compilation_of__engrave_text_plugin
compilation_of__degenerated_faces_plugin
PROPERTIES RESOURCE_LOCK Selection_test_resources)
endif()

View File

@ -15,6 +15,13 @@ if(NOT CGAL_DISABLE_GMP)
target_link_libraries(
parameterization_plugin PUBLIC scene_surface_mesh_item scene_textured_item
scene_selection_item CGAL::Eigen3_support)
if(BUILD_TESTING AND NOT CMAKE_VS_MSBUILD_COMMAND)
set_tests_properties(
compilation_of__parameterization_plugin
PROPERTIES RESOURCE_LOCK Selection_test_resources)
endif()
else()
message(
STATUS
@ -27,6 +34,11 @@ if(NOT CGAL_DISABLE_GMP)
${segmentationUI_FILES})
target_link_libraries(mesh_segmentation_plugin PUBLIC scene_surface_mesh_item)
if(BUILD_TESTING AND NOT CMAKE_VS_MSBUILD_COMMAND)
set_tests_properties(
compilation_of__mesh_segmentation_plugin
PROPERTIES RESOURCE_LOCK Selection_test_resources)
endif()
qt5_wrap_ui( mesh_simplificationUI_FILES Mesh_simplification_dialog.ui)
polyhedron_demo_plugin(mesh_simplification_plugin Mesh_simplification_plugin ${mesh_simplificationUI_FILES})

View File

@ -4,6 +4,13 @@ if(EIGEN3_FOUND AND "${EIGEN3_VERSION}" VERSION_GREATER "3.1.90")
polyhedron_demo_plugin(edit_plugin Edit_polyhedron_plugin Deform_mesh.ui)
target_link_libraries(edit_plugin PUBLIC scene_surface_mesh_item
scene_edit_item scene_selection_item)
if(BUILD_TESTING AND NOT CMAKE_VS_MSBUILD_COMMAND)
set_tests_properties(
compilation_of__edit_plugin
PROPERTIES RESOURCE_LOCK Selection_test_resources)
endif()
else()
message(
STATUS

View File

@ -28,18 +28,33 @@ include(${CGAL_MODULES_DIR}/CGAL_add_test.cmake)
PROPERTY LIBRARY_OUTPUT_DIRECTORY
"${CGAL_POLYHEDRON_DEMO_PLUGINS_DIR}")
cgal_add_compilation_test(${plugin_name})
if(BUILD_TESTING)
set_property(TEST compilation_of__${plugin_name}
APPEND PROPERTY DEPENDS compilation_of__all_scene_items)
endif()
add_to_cached_list( CGAL_EXECUTABLE_TARGETS ${plugin_name} )
# Link with Qt
target_link_libraries( ${plugin_name} PUBLIC ${QT_LIBRARIES} )
# Link with the demo_framework
if(TARGET demo_framework)
target_link_libraries( ${plugin_name} PUBLIC demo_framework)
add_dependencies(${plugin_name} demo_framework)
if(BUILD_TESTING AND NOT CMAKE_VS_MSBUILD_COMMAND)
if(NOT TARGET compilation_of__demo_framework)
# This custom target is useless. It is used only as a flag to
# detect that the test has already been created.
add_custom_target(compilation_of__demo_framework)
add_dependencies( compilation_of__demo_framework demo_framework )
add_test(NAME "compilation_of__demo_framework"
COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target "demo_framework" --config "$<CONFIG>")
set_property(TEST "compilation_of__demo_framework"
APPEND PROPERTY LABELS "CGAL_build_system")
set_property(TEST "compilation_of__demo_framework"
PROPERTY FIXTURES_SETUP "check_build_system_SetupFixture")
set_property(TEST "compilation_of__demo_framework"
APPEND PROPERTY DEPENDS "compilation_of__CGAL_Qt5_moc_and_resources")
endif()
endif()
else()
target_link_libraries( ${plugin_name} PUBLIC Polyhedron_demo_framework)
add_dependencies(${plugin_name} Polyhedron_demo_framework)
endif()
# Link with CGAL
target_link_libraries( ${plugin_name} PUBLIC ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES} )

View File

@ -19,7 +19,7 @@ function(add_Snap_rounding_tests name)
cgal_add_test(${name} TEST_NAME ${test_name} ARGUMENTS ${data_dir}/${file}
${data_dir}/output_${file})
add_test(NAME "${test_name}_compare_results"
COMMAND ${CMAKE_COMMAND} -E compare_files
COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol
${data_dir}/output_${file} ${data_dir}/gold_${file})
cgal_setup_test_properties("${test_name}_compare_results")
set_property(