diff --git a/Installation/cmake/modules/CGAL_add_test.cmake b/Installation/cmake/modules/CGAL_add_test.cmake index a0913c18de6..6c25c7e9544 100644 --- a/Installation/cmake/modules/CGAL_add_test.cmake +++ b/Installation/cmake/modules/CGAL_add_test.cmake @@ -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 "$") - 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 "$") + 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=$") + 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}" diff --git a/Polyhedron/demo/Polyhedron/CMakeLists.txt b/Polyhedron/demo/Polyhedron/CMakeLists.txt index 19d7cc93284..27a1023bdb1 100644 --- a/Polyhedron/demo/Polyhedron/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/CMakeLists.txt @@ -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() diff --git a/Polyhedron/demo/Polyhedron/Plugins/Camera_position/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Camera_position/CMakeLists.txt index d3d02304559..35c19f5a82a 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Camera_position/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Camera_position/CMakeLists.txt @@ -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) diff --git a/Polyhedron/demo/Polyhedron/Plugins/Classification/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Classification/CMakeLists.txt index 04aff587cb9..798042743f5 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Classification/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Classification/CMakeLists.txt @@ -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 diff --git a/Polyhedron/demo/Polyhedron/Plugins/Convex_hull/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Convex_hull/CMakeLists.txt index fa13f46ff54..3c923aab368 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Convex_hull/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Convex_hull/CMakeLists.txt @@ -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() diff --git a/Polyhedron/demo/Polyhedron/Plugins/PCA/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/PCA/CMakeLists.txt index 58f1350a3dc..4171347a6dc 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PCA/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/PCA/CMakeLists.txt @@ -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() diff --git a/Polyhedron/demo/Polyhedron/Plugins/PMP/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/PMP/CMakeLists.txt index 0d3dea93625..f3b64a5232d 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PMP/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/PMP/CMakeLists.txt @@ -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() diff --git a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/CMakeLists.txt index 0591da9f770..e2fae0df13f 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/CMakeLists.txt @@ -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}) diff --git a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh_deformation/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh_deformation/CMakeLists.txt index b32cf6f7d7a..0954a8c13c3 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh_deformation/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh_deformation/CMakeLists.txt @@ -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 diff --git a/Polyhedron/demo/Polyhedron/polyhedron_demo_macros.cmake b/Polyhedron/demo/Polyhedron/polyhedron_demo_macros.cmake index 1c0073384d6..4a027c1c750 100644 --- a/Polyhedron/demo/Polyhedron/polyhedron_demo_macros.cmake +++ b/Polyhedron/demo/Polyhedron/polyhedron_demo_macros.cmake @@ -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 "$") + + 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} ) diff --git a/Snap_rounding_2/test/Snap_rounding_2/CMakeLists.txt b/Snap_rounding_2/test/Snap_rounding_2/CMakeLists.txt index ad598cbeb6b..724158b5709 100644 --- a/Snap_rounding_2/test/Snap_rounding_2/CMakeLists.txt +++ b/Snap_rounding_2/test/Snap_rounding_2/CMakeLists.txt @@ -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(