diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index c26d5ab12..b0dfb41fa 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -921,7 +921,20 @@ const char* cmMakefile::GetDefinition(const char* name) const } else { - vv->VariableAccessed(name, cmVariableWatch::UNKNOWN_VARIABLE_READ_ACCESS); + // are unknown access allowed + DefinitionMap::const_iterator pos2 = + m_Definitions.find("CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS"); + if (pos2 != m_Definitions.end() && + cmSystemTools::IsOn((*pos2).second.c_str())) + { + vv->VariableAccessed(name, + cmVariableWatch::ALLOWED_UNKNOWN_VARIABLE_READ_ACCESS); + } + else + { + vv->VariableAccessed(name, cmVariableWatch:: + UNKNOWN_VARIABLE_READ_ACCESS); + } } } return def; diff --git a/Source/cmVariableWatch.h b/Source/cmVariableWatch.h index db85371f2..9a978bdfd 100644 --- a/Source/cmVariableWatch.h +++ b/Source/cmVariableWatch.h @@ -49,6 +49,7 @@ public: { VARIABLE_READ_ACCESS, UNKNOWN_VARIABLE_READ_ACCESS, + ALLOWED_UNKNOWN_VARIABLE_READ_ACCESS, VARIABLE_MODIFIED_ACCESS, VARIABLE_REMOVED_ACCESS, NO_ACCESS