CMakeLists.txt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. cmake_minimum_required(VERSION 3.1)
  2. project(libigl_tests)
  3. list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../cmake)
  4. ### Adding libIGL: choose the path to your local copy libIGL
  5. if(NOT TARGET igl_common)
  6. include(libigl)
  7. else()
  8. include(LibiglDownloadExternal)
  9. endif()
  10. ### Download data
  11. igl_download_test_data()
  12. set(IGL_TEST_DATA ${LIBIGL_EXTERNAL}/../tests/data)
  13. ### Download Google unit test framework.
  14. igl_download_catch2()
  15. list(APPEND CMAKE_MODULE_PATH ${LIBIGL_EXTERNAL}/Catch2/contrib)
  16. # Add catch2
  17. add_library(catch INTERFACE)
  18. target_include_directories(catch SYSTEM INTERFACE ${LIBIGL_EXTERNAL}/catch2/single_include)
  19. # Create test executable
  20. add_executable(libigl_tests main.cpp test_common.h)
  21. target_link_libraries(libigl_tests PUBLIC igl::core catch)
  22. target_include_directories(libigl_tests PUBLIC ${CMAKE_CURRENT_LIST_DIR})
  23. # Set TEST_DIR definition
  24. set(DATA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/data/")
  25. target_compile_definitions(libigl_tests PUBLIC -DLIBIGL_DATA_DIR="${IGL_TEST_DATA}")
  26. # Process code in each subdirectories: add in decreasing order of complexity
  27. # (last added will run first and those should be the fastest tests)
  28. IF(LIBIGL_WITH_MOSEK)
  29. file(GLOB TEST_SRC_FILES ./include/igl/mosek/*.cpp)
  30. file(GLOB TEST_INC_FILES ./include/igl/mosek/*.h ./include/igl/mosek/*.inl)
  31. target_sources(libigl_tests PRIVATE ${TEST_SRC_FILES} ${TEST_INC_FILES})
  32. target_link_libraries(libigl_tests PUBLIC igl::mosek)
  33. ENDIF()
  34. IF(LIBIGL_WITH_CGAL)
  35. file(GLOB TEST_SRC_FILES ./include/igl/copyleft/boolean/*.cpp ./include/igl/copyleft/cgal/*.cpp)
  36. file(GLOB TEST_INC_FILES ./include/igl/copyleft/boolean/*.h ./include/igl/copyleft/cgal/*.h ./include/igl/copyleft/boolean/*.inl ./include/igl/copyleft/cgal/*.inl)
  37. target_sources(libigl_tests PRIVATE ${TEST_SRC_FILES} ${TEST_INC_FILES})
  38. target_link_libraries(libigl_tests PUBLIC igl::cgal)
  39. ENDIF()
  40. IF(LIBIGL_WITH_TETGEN)
  41. file(GLOB TEST_SRC_FILES ./include/igl/copyleft/tetgen/*.cpp)
  42. file(GLOB TEST_INC_FILES ./include/igl/copyleft/tetgen/*.h ./include/igl/copyleft/tetgen/*.inl)
  43. target_sources(libigl_tests PRIVATE ${TEST_SRC_FILES} ${TEST_INC_FILES})
  44. target_link_libraries(libigl_tests PUBLIC igl::tetgen)
  45. ENDIF()
  46. IF(LIBIGL_WITH_COMISO)
  47. file(GLOB TEST_SRC_FILES ./include/igl/copyleft/comiso/*.cpp)
  48. file(GLOB TEST_INC_FILES ./include/igl/copyleft/comiso/*.h ./include/igl/copyleft/comiso/*.inl)
  49. target_sources(libigl_tests PRIVATE ${TEST_SRC_FILES} ${TEST_INC_FILES})
  50. target_link_libraries(libigl_tests PUBLIC igl::comiso)
  51. ENDIF()
  52. file(GLOB TEST_SRC_FILES ./include/igl/*.cpp)
  53. file(GLOB TEST_INC_FILES ./include/igl/*.h ./include/igl/*.inl)
  54. target_sources(libigl_tests PRIVATE ${TEST_SRC_FILES} ${TEST_INC_FILES})
  55. # Register tests
  56. set(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS ON)
  57. include(Catch)
  58. catch_discover_tests(libigl_tests)