set(FOO ) set(BAR "bar") set(BAZ "baz") set(BOO "boo") function(_parent_scope) set(FOO "foo" PARENT_SCOPE) set(BAR "" PARENT_SCOPE) set(BAZ PARENT_SCOPE) unset(BOO PARENT_SCOPE) endfunction() _parent_scope() if(NOT DEFINED FOO) message(FATAL_ERROR "FOO not defined") elseif(NOT "${FOO}" STREQUAL "foo") message(FATAL_ERROR "FOO should be \"foo\", not \"${FOO}\"") endif() if(NOT DEFINED BAR) message(FATAL_ERROR "BAR not defined") elseif(NOT "${BAR}" STREQUAL "") message(FATAL_ERROR "BAR should be an empty string, not \"${BAR}\"") endif() if(DEFINED BAZ) message(FATAL_ERROR "BAZ defined") endif() if(DEFINED BOO) message(FATAL_ERROR "BOO defined") endif()