macro(assert_var_defined varname) if(NOT DEFINED ${varname}) message(SEND_ERROR "${varname} is not defined.") endif() endmacro() macro(assert_vars_strequal varname exp_varname) assert_var_defined(${varname}) if(NOT ${varname} STREQUAL ${exp_varname}) message(SEND_ERROR "${varname} is '${${varname}}', expecting '${${exp_varname}}'.") endif() endmacro() macro(assert_var_str_value varname value) assert_var_defined(${varname}) set(_value_var "${value}") if(NOT ${varname} STREQUAL _value_var) message(SEND_ERROR "${varname} is '${${varname}}', expecting '${value}'.") endif() endmacro() macro(assert_var_relative_path varname) if(NOT DEFINED ${varname}) message(SEND_ERROR "${varname} is not defined.") elseif(IS_ABSOLUTE "${${varname}}") message(SEND_ERROR "${varname} (${${varname}}) should be a relative path, but is absolute.") endif() endmacro() macro(assert_var_absolute_path varname) if(NOT DEFINED ${varname}) message(SEND_ERROR "${varname} is not defined.") elseif(NOT IS_ABSOLUTE "${${varname}}") message(SEND_ERROR "${varname} (${${varname}}) should be an absolute path, but is relative.") endif() endmacro()