PushCheckStateTest.cmake.in 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. cmake_minimum_required(VERSION 3.10)
  2. include(CMakePushCheckState)
  3. set(CMAKE_EXTRA_INCLUDE_FILES file1)
  4. set(CMAKE_REQUIRED_INCLUDES dir1)
  5. set(CMAKE_REQUIRED_DEFINITIONS defs1 )
  6. set(CMAKE_REQUIRED_LIBRARIES lib1)
  7. set(CMAKE_REQUIRED_LINK_DIRECTORIES linkdir1)
  8. set(CMAKE_REQUIRED_FLAGS flag1)
  9. set(CMAKE_REQUIRED_QUIET 1)
  10. cmake_push_check_state()
  11. set(CMAKE_EXTRA_INCLUDE_FILES file2)
  12. set(CMAKE_REQUIRED_INCLUDES dir2)
  13. set(CMAKE_REQUIRED_DEFINITIONS defs2)
  14. set(CMAKE_REQUIRED_LIBRARIES lib2)
  15. set(CMAKE_REQUIRED_LINK_DIRECTORIES linkdir2)
  16. set(CMAKE_REQUIRED_FLAGS flag2)
  17. set(CMAKE_REQUIRED_QUIET 2)
  18. cmake_push_check_state()
  19. set(CMAKE_EXTRA_INCLUDE_FILES file3)
  20. set(CMAKE_REQUIRED_INCLUDES dir3)
  21. set(CMAKE_REQUIRED_DEFINITIONS defs3)
  22. set(CMAKE_REQUIRED_LIBRARIES lib3)
  23. set(CMAKE_REQUIRED_LINK_DIRECTORIES linkdir3)
  24. set(CMAKE_REQUIRED_FLAGS flag3)
  25. set(CMAKE_REQUIRED_QUIET 3)
  26. cmake_push_check_state(RESET)
  27. foreach(pair IN ITEMS
  28. EXTRA_INCLUDE_FILES|
  29. REQUIRED_INCLUDES|
  30. REQUIRED_DEFINITIONS|
  31. REQUIRED_LIBRARIES|
  32. REQUIRED_LINK_DIRECTORIES|
  33. REQUIRED_FLAGS|
  34. REQUIRED_QUIET|
  35. )
  36. string(REPLACE "|" ";" pair "${pair}")
  37. list(GET pair 0 var)
  38. list(GET pair 1 expected)
  39. if (NOT "${CMAKE_${var}}" STREQUAL "${expected}")
  40. set(fatal TRUE)
  41. message("ERROR: CMAKE_${var} is \"${CMAKE_${var}}\" (expected \"${expected}\")" )
  42. endif()
  43. endforeach()
  44. cmake_pop_check_state()
  45. cmake_pop_check_state()
  46. foreach(pair IN ITEMS
  47. EXTRA_INCLUDE_FILES|file2
  48. REQUIRED_INCLUDES|dir2
  49. REQUIRED_DEFINITIONS|defs2
  50. REQUIRED_LIBRARIES|lib2
  51. REQUIRED_LINK_DIRECTORIES|linkdir2
  52. REQUIRED_FLAGS|flag2
  53. REQUIRED_QUIET|2
  54. )
  55. string(REPLACE "|" ";" pair "${pair}")
  56. list(GET pair 0 var)
  57. list(GET pair 1 expected)
  58. if (NOT "${CMAKE_${var}}" STREQUAL "${expected}")
  59. set(fatal TRUE)
  60. message("ERROR: CMAKE_${var} is \"${CMAKE_${var}}\" (expected \"${expected}\")" )
  61. endif()
  62. endforeach()
  63. cmake_pop_check_state()
  64. foreach(pair IN ITEMS
  65. EXTRA_INCLUDE_FILES|file1
  66. REQUIRED_INCLUDES|dir1
  67. REQUIRED_DEFINITIONS|defs1
  68. REQUIRED_LIBRARIES|lib1
  69. REQUIRED_LINK_DIRECTORIES|linkdir1
  70. REQUIRED_FLAGS|flag1
  71. REQUIRED_QUIET|1
  72. )
  73. string(REPLACE "|" ";" pair "${pair}")
  74. list(GET pair 0 var)
  75. list(GET pair 1 expected)
  76. if (NOT "${CMAKE_${var}}" STREQUAL "${expected}")
  77. set(fatal TRUE)
  78. message("ERROR: CMAKE_${var} is \"${CMAKE_${var}}\" (expected \"${expected}\")" )
  79. endif()
  80. endforeach()
  81. if(fatal)
  82. message(FATAL_ERROR "cmake_push_check_state() test failed")
  83. endif()