2020-12-07 13:18:53 +01:00
include ( VCICommon )
2011-09-01 09:28:38 +00:00
2012-02-29 10:30:21 +00:00
if ( NOT DEFINED OPENMESH_BUILD_UNIT_TESTS )
set ( OPENMESH_BUILD_UNIT_TESTS false CACHE BOOL "Enable or disable unit test builds in OpenMesh." )
endif ( )
2011-09-01 09:28:38 +00:00
2012-02-29 10:30:21 +00:00
if ( OPENMESH_BUILD_UNIT_TESTS )
# Search for gtest headers and libraries
2018-06-09 12:13:15 +02:00
find_package ( GTest )
2012-02-29 10:30:21 +00:00
if ( GTEST_FOUND )
2012-02-23 14:00:41 +00:00
enable_testing ( )
2011-09-01 09:28:38 +00:00
2020-12-02 19:26:21 +01:00
find_package ( Eigen3 )
2019-01-17 07:40:34 +01:00
2011-09-01 09:28:38 +00:00
# Set correct include paths so that the compiler can find the headers
2019-01-17 08:27:40 +01:00
include_directories ( ${ GTEST_INCLUDE_DIRS } )
2011-09-29 14:11:04 +00:00
# set additional link directories
link_directories ( ${ GTEST_LIBRARY_DIR } )
2013-08-09 11:26:12 +00:00
2019-01-17 07:40:34 +01:00
2020-12-02 19:26:21 +01:00
if ( TARGET Eigen3::Eigen )
2019-01-17 08:27:40 +01:00
add_definitions ( -DENABLE_EIGEN3_TEST )
2020-12-02 19:26:21 +01:00
link_libraries ( Eigen3::Eigen )
2021-01-15 13:58:48 +01:00
else ( )
message ( WARNING "Eigen3 not found! This will skip the Eigen3 Unittests. You can point cmake to Eigen3 by setting Eigen3_DIR to the cmake files of Eigen3" )
2019-01-17 07:40:34 +01:00
endif ( )
2011-09-01 09:28:38 +00:00
# Create new target named unittests_hexmeshing
2013-09-20 14:21:08 +00:00
FILE ( GLOB UNITTEST_SRC *.cc )
2019-01-17 07:40:34 +01:00
# Create unittest executable
2020-12-07 13:18:53 +01:00
vci_add_executable ( unittests ${ UNITTEST_SRC } )
vci_add_executable ( unittests_customvec ${ UNITTEST_SRC } )
vci_add_executable ( unittests_doublevec ${ UNITTEST_SRC } )
2019-01-17 07:40:34 +01:00
target_compile_definitions ( unittests_customvec PRIVATE TEST_CUSTOM_TRAITS )
2019-10-22 10:17:12 +02:00
target_compile_definitions ( unittests_doublevec PRIVATE TEST_DOUBLE_TRAITS )
2015-06-16 10:57:51 +00:00
2020-12-07 13:18:53 +01:00
# For the unittest we don't want the install rpath as set by vci_add_executable
2019-10-22 10:17:12 +02:00
set_target_properties ( unittests PROPERTIES BUILD_WITH_INSTALL_RPATH 0 )
2019-01-17 07:40:34 +01:00
set_target_properties ( unittests_customvec PROPERTIES BUILD_WITH_INSTALL_RPATH 0 )
2019-10-22 10:17:12 +02:00
set_target_properties ( unittests_doublevec PROPERTIES BUILD_WITH_INSTALL_RPATH 0 )
2015-06-16 10:57:51 +00:00
2015-06-18 11:23:28 +00:00
# Set output directory to ${BINARY_DIR}/Unittests
set ( OUTPUT_DIR "${CMAKE_BINARY_DIR}/Unittests" )
2019-10-22 10:17:12 +02:00
set_target_properties ( unittests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${ OUTPUT_DIR } )
2018-04-12 15:19:53 +02:00
set_target_properties ( unittests_customvec PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${ OUTPUT_DIR } )
2019-10-22 10:17:12 +02:00
set_target_properties ( unittests_doublevec PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${ OUTPUT_DIR } )
2015-06-18 11:23:28 +00:00
foreach ( CONFIG ${ CMAKE_CONFIGURATION_TYPES } )
string ( TOUPPER ${ CONFIG } UPCONFIG )
set_target_properties ( unittests PROPERTIES RUNTIME_OUTPUT_DIRECTORY_ ${ UPCONFIG } ${ OUTPUT_DIR } )
2018-04-18 12:24:21 +02:00
set_target_properties ( unittests_customvec PROPERTIES RUNTIME_OUTPUT_DIRECTORY_ ${ UPCONFIG } ${ OUTPUT_DIR } )
2019-10-22 10:17:12 +02:00
set_target_properties ( unittests_doublevec PROPERTIES RUNTIME_OUTPUT_DIRECTORY_ ${ UPCONFIG } ${ OUTPUT_DIR } )
2015-06-18 11:23:28 +00:00
endforeach ( )
2011-10-10 14:34:24 +00:00
2012-09-24 10:10:22 +00:00
if ( NOT WIN32 )
2015-06-16 10:57:51 +00:00
# Link against all necessary libraries
target_link_libraries ( unittests OpenMeshCore OpenMeshTools ${ GTEST_LIBRARIES } ${ GTEST_MAIN_LIBRARIES } pthread )
2018-04-12 15:19:53 +02:00
target_link_libraries ( unittests_customvec OpenMeshCore OpenMeshTools ${ GTEST_LIBRARIES } ${ GTEST_MAIN_LIBRARIES } pthread )
2019-10-22 10:17:12 +02:00
target_link_libraries ( unittests_doublevec OpenMeshCore OpenMeshTools ${ GTEST_LIBRARIES } ${ GTEST_MAIN_LIBRARIES } pthread )
2011-10-10 14:34:24 +00:00
2015-06-18 11:23:28 +00:00
2011-10-10 14:34:24 +00:00
2015-06-16 10:57:51 +00:00
else ( )
2012-02-29 10:30:21 +00:00
# Link against all necessary libraries
2012-09-24 10:10:22 +00:00
if ( OPENMESH_BUILD_SHARED )
add_definitions ( -DOPENMESHDLL )
2012-09-24 12:56:27 +00:00
2012-09-24 10:10:22 +00:00
endif ( )
2019-10-22 10:17:12 +02:00
target_link_libraries ( unittests OpenMeshCore OpenMeshTools ${ GTEST_LIBRARIES } ${ GTEST_MAIN_LIBRARIES } )
2018-04-12 15:19:53 +02:00
target_link_libraries ( unittests_customvec OpenMeshCore OpenMeshTools ${ GTEST_LIBRARIES } ${ GTEST_MAIN_LIBRARIES } )
2019-10-22 10:17:12 +02:00
target_link_libraries ( unittests_doublevec OpenMeshCore OpenMeshTools ${ GTEST_LIBRARIES } ${ GTEST_MAIN_LIBRARIES } )
2012-09-24 10:10:22 +00:00
endif ( )
2011-10-10 14:34:24 +00:00
2012-09-24 14:12:15 +00:00
if ( NOT WIN32 )
2012-02-29 10:30:21 +00:00
# Set compiler flags
2015-09-29 15:12:38 +02:00
set_target_properties ( unittests PROPERTIES COMPILE_FLAGS "-g -pedantic -Wno-long-long" )
2018-04-12 15:19:53 +02:00
set_target_properties ( unittests_customvec PROPERTIES COMPILE_FLAGS "-g -pedantic -Wno-long-long" )
2019-10-22 10:17:12 +02:00
set_target_properties ( unittests_doublevec PROPERTIES COMPILE_FLAGS "-g -pedantic -Wno-long-long" )
2012-09-24 14:12:15 +00:00
else ( )
2012-02-29 10:30:21 +00:00
# Set compiler flags
2011-10-10 14:34:24 +00:00
set_target_properties ( unittests PROPERTIES COMPILE_FLAGS "" )
2018-04-12 17:53:54 +02:00
set_target_properties ( unittests_customvec PROPERTIES COMPILE_FLAGS "" )
2019-10-22 10:17:12 +02:00
set_target_properties ( unittests_doublevec PROPERTIES COMPILE_FLAGS "" )
2012-09-24 14:12:15 +00:00
endif ( )
if ( OPENMESH_BUILD_SHARED )
2012-09-24 12:56:27 +00:00
2012-09-24 14:12:15 +00:00
#-------- copy dlls to unittests --------
SET ( OPENMESH_TARGETS "OpenMeshTools" "OpenMeshCore" )
foreach ( TAR ${ OPENMESH_TARGETS } )
add_custom_command ( TARGET unittests POST_BUILD
C O M M A N D " $ { C M A K E _ C O M M A N D } " - E c o p y
" $ < T A R G E T _ F I L E : $ { T A R } > "
" $ { C M A K E _ B I N A R Y _ D I R } / U n i t t e s t s / $ < T A R G E T _ F I L E _ N A M E : $ { T A R } > "
C O M M E N T " C o p y i n g O p e n M e s h t a r g e t s t o u n i t t e s t s d i r e c t o r y " )
2018-04-12 15:19:53 +02:00
add_custom_command ( TARGET unittests_customvec POST_BUILD
C O M M A N D " $ { C M A K E _ C O M M A N D } " - E c o p y
" $ < T A R G E T _ F I L E : $ { T A R } > "
" $ { C M A K E _ B I N A R Y _ D I R } / U n i t t e s t s / $ < T A R G E T _ F I L E _ N A M E : $ { T A R } > "
C O M M E N T " C o p y i n g O p e n M e s h t a r g e t s t o u n i t t e s t s d i r e c t o r y " )
2019-10-22 10:17:12 +02:00
add_custom_command ( TARGET unittests_doublevec POST_BUILD
C O M M A N D " $ { C M A K E _ C O M M A N D } " - E c o p y
" $ < T A R G E T _ F I L E : $ { T A R } > "
" $ { C M A K E _ B I N A R Y _ D I R } / U n i t t e s t s / $ < T A R G E T _ F I L E _ N A M E : $ { T A R } > "
C O M M E N T " C o p y i n g O p e n M e s h t a r g e t s t o u n i t t e s t s d i r e c t o r y " )
2012-09-24 14:12:15 +00:00
endforeach ( TAR )
endif ( )
2011-10-10 14:34:24 +00:00
2020-12-07 14:06:26 +01:00
vci_copy_after_build ( unittests ${ CMAKE_CURRENT_SOURCE_DIR } /TestFiles ${ CMAKE_BINARY_DIR } /Unittests/ )
vci_copy_after_build ( unittests_customvec ${ CMAKE_CURRENT_SOURCE_DIR } /TestFiles ${ CMAKE_BINARY_DIR } /Unittests/ )
vci_copy_after_build ( unittests_doublevec ${ CMAKE_CURRENT_SOURCE_DIR } /TestFiles ${ CMAKE_BINARY_DIR } /Unittests/ )
2011-09-01 09:28:38 +00:00
2012-02-23 14:00:41 +00:00
add_test ( NAME AllTestsIn_OpenMesh_tests WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/Unittests" COMMAND "${CMAKE_BINARY_DIR}/Unittests/unittests" )
2018-04-16 16:18:59 +02:00
add_test ( NAME AllTestsIn_OpenMesh_tests_with_minimal_vector WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/Unittests" COMMAND "${CMAKE_BINARY_DIR}/Unittests/unittests_customvec" )
2019-10-22 10:17:12 +02:00
add_test ( NAME AllTestsIn_OpenMesh_tests_with_double_vector WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/Unittests" COMMAND "${CMAKE_BINARY_DIR}/Unittests/unittests_doublevec" )
2012-02-23 14:00:41 +00:00
2012-02-29 10:30:21 +00:00
else ( GTEST_FOUND )
2017-01-11 08:13:59 +01:00
message ( STATUS "Google testing framework was not found, unittests disabled." )
2012-02-29 10:30:21 +00:00
endif ( GTEST_FOUND )
endif ( )