function(TEST variable) if(ARGC GREATER 2) set(i 0) foreach(value IN LISTS ${variable}) math(EXPR j "${i} + 1") set(${variable}[${i}] "${value}") TEST(${variable}[${i}] "${ARGV${j}}") set(i ${j}) endforeach() else() set(expected "${ARGN}") if("${expected}" STREQUAL "UNDEFINED") if(DEFINED ${variable}) message(FATAL_ERROR "'${variable}' shall be undefined but has value '${${variable}}'") endif() elseif("${expected}" STREQUAL "FALSE") if(NOT ${variable} STREQUAL "FALSE") message(FATAL_ERROR "'${variable}' shall be FALSE") endif() elseif("${expected}" STREQUAL "TRUE") if(NOT ${variable} STREQUAL "TRUE") message(FATAL_ERROR "'${variable}' shall be TRUE") endif() else() if(NOT ${variable} STREQUAL "${expected}") message(FATAL_ERROR "'${variable}' shall be '${expected}'") endif() endif() endif() endfunction()