CMakeLists.txt 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. set(MODULE_NAME "test_libtoolkit")
  2. set(MODULE_PREFIX "TEST_LIBTOOLKIT")
  3. include_directories(..)
  4. set(${MODULE_PREFIX}_DRIVER ${MODULE_NAME}.cpp)
  5. set(${MODULE_PREFIX}_TEST_DEFINITIONS "")
  6. file(GLOB ${MODULE_PREFIX}_TESTS "${CMAKE_CURRENT_SOURCE_DIR}/test_*.cpp")
  7. # CTest
  8. #list(APPEND ${MODULE_PREFIX}_TEST_DEFINITIONS "-DTEST_WITH_CTEST")
  9. # Create a test driver and source list for building test programs.
  10. #create_test_sourcelist(${MODULE_PREFIX}_SRCS #source list name
  11. # ${${MODULE_PREFIX}_DRIVER} # driver name
  12. # ${${MODULE_PREFIX}_TESTS} # test list
  13. # )# EXTRA_INCLUDE include.h FUNCTION function.
  14. # add_definitions(${${MODULE_PREFIX}_TEST_DEFINITIONS})
  15. # add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
  16. # set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} toolkit_a)
  17. # target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
  18. # set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
  19. # foreach(test ${${MODULE_PREFIX}_TESTS})
  20. # get_filename_component(test_name ${test} NAME_WE)
  21. # add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME} ${test_name})
  22. # endforeach()
  23. # set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "test/libtookit")
  24. #Google Test
  25. include_directories(${GTEST_ROOT})
  26. list(APPEND comm_test_libraries gtest)
  27. list(APPEND comm_test_libraries gtest_main)
  28. list(APPEND comm_test_libraries libtoolkit_a)
  29. # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
  30. if(NOT MSVC)
  31. set(TEST_AREA "${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME}_area")
  32. else()
  33. set(TEST_AREA "${TESTING_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${MODULE_NAME}_area")
  34. endif()
  35. file(MAKE_DIRECTORY "${TEST_AREA}")
  36. file(WRITE "${TEST_AREA}/test_file1.txt" "I am test file 1.")
  37. file(WRITE "${TEST_AREA}/test_file2.txt" "I am test file 2.")
  38. file(WRITE "${TEST_AREA}/test_file3.txt" "I am test file 3.")
  39. file(MAKE_DIRECTORY "${TEST_AREA}/test_dir_1")
  40. file(WRITE "${TEST_AREA}/test_dir_1/test_dir_1_file_1.txt" "I am test file 1 under dir 1.")
  41. file(MAKE_DIRECTORY "${TEST_AREA}/test_dir_2")
  42. file(WRITE "${TEST_AREA}/test_dir_2/test_dir_2_file_1.txt" "I am test file 1 under dir 2.")
  43. file(WRITE "${TEST_AREA}/test_dir_2/test_dir_2_file_2.txt" "I am test file 2 under dir 2.")
  44. file(MAKE_DIRECTORY "${TEST_AREA}/test_dir_2/test_sub_dir_2")
  45. file(WRITE "${TEST_AREA}/test_dir_2/test_sub_dir_2/test_sub_dir_2_file_1.txt" "I am test file 1 under sub dir 2.")
  46. file(MAKE_DIRECTORY "${TEST_AREA}/test_dir_3")
  47. file(WRITE "${TEST_AREA}/test_dir_3/test_dir_3_file_1.txt" "I am test file 1 under dir 3.")
  48. file(WRITE "${TEST_AREA}/test_dir_3/test_dir_3_file_2.txt" "I am test file 2 under dir 3.")
  49. file(WRITE "${TEST_AREA}/test_dir_3/test_dir_3_file_3.txt" "I am test file 3 under dir 3.")
  50. file(MAKE_DIRECTORY "${TEST_AREA}/test_dir_4")
  51. foreach(test ${${MODULE_PREFIX}_TESTS})
  52. get_filename_component(test_name ${test} NAME_WE)
  53. add_executable(${test_name} ${test})
  54. target_link_libraries(${test_name} ${comm_test_libraries})
  55. target_compile_definitions(${test_name} PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY")
  56. set_property(TARGET ${test_name} PROPERTY FOLDER "test/libtoolkit")
  57. # 会将 测试的执行程序生成在指定的文件夹,并且带上编译的配置条件比如 Debug
  58. set_target_properties(${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
  59. message(STATUS "add test case: ${test_name}...")
  60. if(${test_name} STREQUAL "test_file" OR ${test_name} STREQUAL "test_log")
  61. add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name} ${TEST_AREA})
  62. else()
  63. add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name})
  64. endif()
  65. set_tests_properties(${teset_name} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED;ERROR;Failed;error")
  66. endforeach()
  67. add_executable(single_proc single_proc.cpp)
  68. set_property(TARGET single_proc PROPERTY FOLDER "test/libtoolkit")
  69. set_target_properties(single_proc PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")