include(CMakePushCheckState) set(CMAKE_EXTRA_INCLUDE_FILES file1) set(CMAKE_REQUIRED_INCLUDES dir1) set(CMAKE_REQUIRED_DEFINITIONS defs1 ) set(CMAKE_REQUIRED_LIBRARIES lib1) set(CMAKE_REQUIRED_FLAGS flag1) set(CMAKE_REQUIRED_QUIET 1) cmake_push_check_state() set(CMAKE_EXTRA_INCLUDE_FILES file2) set(CMAKE_REQUIRED_INCLUDES dir2) set(CMAKE_REQUIRED_DEFINITIONS defs2) set(CMAKE_REQUIRED_LIBRARIES lib2) set(CMAKE_REQUIRED_FLAGS flag2) set(CMAKE_REQUIRED_QUIET 2) cmake_push_check_state() set(CMAKE_EXTRA_INCLUDE_FILES file3) set(CMAKE_REQUIRED_DEFINITIONS defs3) set(CMAKE_REQUIRED_INCLUDES dir3) set(CMAKE_REQUIRED_DEFINITIONS defs3) set(CMAKE_REQUIRED_LIBRARIES lib3) set(CMAKE_REQUIRED_FLAGS flag3) set(CMAKE_REQUIRED_QUIET 3) cmake_pop_check_state() foreach(pair IN ITEMS EXTRA_INCLUDE_FILES|file2 REQUIRED_INCLUDES|dir2 REQUIRED_DEFINITIONS|defs2 REQUIRED_LIBRARIES|lib2 REQUIRED_FLAGS|flag2 REQUIRED_QUIET|2 ) string(REPLACE "|" ";" pair "${pair}") list(GET pair 0 var) list(GET pair 1 expected) if (NOT "${CMAKE_${var}}" STREQUAL "${expected}") set(fatal TRUE) message("ERROR: CMAKE_${var} is \"${CMAKE_${var}}\" (expected \"${expected}\")" ) endif() endforeach() cmake_pop_check_state() foreach(pair IN ITEMS EXTRA_INCLUDE_FILES|file1 REQUIRED_INCLUDES|dir1 REQUIRED_DEFINITIONS|defs1 REQUIRED_LIBRARIES|lib1 REQUIRED_FLAGS|flag1 REQUIRED_QUIET|1 ) string(REPLACE "|" ";" pair "${pair}") list(GET pair 0 var) list(GET pair 1 expected) if (NOT "${CMAKE_${var}}" STREQUAL "${expected}") set(fatal TRUE) message("ERROR: CMAKE_${var} is \"${CMAKE_${var}}\" (expected \"${expected}\")" ) endif() endforeach() if(fatal) message(FATAL_ERROR "cmake_push_check_state() test failed") endif()