PushCheckStateTest.cmake 2.2 KB

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