CMakeLists.txt 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. cmake_minimum_required(VERSION 2.8)
  2. project(ArgumentExpansion)
  3. function (argument_tester expected expected_len)
  4. list(LENGTH ARGN argn_len)
  5. list(LENGTH ${expected} expected_received_len)
  6. if (NOT ${expected_received_len} EQUAL ${expected_len})
  7. message(STATUS "Unexpected: Expanding expected values isn't working")
  8. endif ()
  9. if (${argn_len} EQUAL ${expected_len})
  10. set(i 0)
  11. while (i LESS ${argn_len})
  12. list(GET ARGN ${i} argn_value)
  13. list(GET ${expected} ${i} expected_value)
  14. if (NOT "${argn_value}" STREQUAL "${expected_value}")
  15. message(STATUS "Unexpected: Argument ${i} doesn't match")
  16. message(STATUS " Expected: ${expected_value}")
  17. message(STATUS " Received: ${argn_value}")
  18. endif ()
  19. math(EXPR i "${i} + 1")
  20. endwhile ()
  21. else ()
  22. message(STATUS "Unexpected: Lengths of arguments don't match")
  23. message(STATUS " Expected: ${expected_len}")
  24. message(STATUS " Received: ${argn_len}")
  25. endif ()
  26. endfunction ()
  27. set(empty_test)
  28. message(STATUS "Test: Empty arguments")
  29. argument_tester(empty_test 0 ${empty_test})
  30. set(single_arg_test
  31. "single arg")
  32. message(STATUS "Test: Single argument")
  33. argument_tester(single_arg_test 1 ${single_arg_test})
  34. set(multiple_arg_test
  35. "first arg"
  36. "second arg")
  37. message(STATUS "Test: Multiple arguments")
  38. argument_tester(multiple_arg_test 2 ${multiple_arg_test})
  39. set(nested_list_arg_test
  40. "${multiple_arg_test}"
  41. "first arg"
  42. "second arg")
  43. message(STATUS "Test: Nested list argument flattens")
  44. argument_tester(nested_list_arg_test 4 ${nested_list_arg_test})
  45. set(semicolon_arg_test
  46. "pre\;post")
  47. set(semicolon_arg_test_flat "pre;post")
  48. message(STATUS "Test: Semicolon argument flattens")
  49. argument_tester(semicolon_arg_test_flat 2 ${semicolon_arg_test})