ERR: Fix problems with OPTION and -D on command line. Fix Bug #408 - Using -D without a type does not always work

This commit is contained in:
Andy Cedilnik 2003-12-29 15:26:01 -05:00
parent b753a6794b
commit d97e79c971

View File

@ -46,20 +46,29 @@ bool cmOptionCommand::InitialPass(std::vector<std::string> const& args)
return false; return false;
} }
std::string initialValue = "Off";
// Now check and see if the value has been stored in the cache // Now check and see if the value has been stored in the cache
// already, if so use that value and don't look for the program // already, if so use that value and don't look for the program
const char* cacheValue cmCacheManager::CacheIterator it =
= m_Makefile->GetDefinition(args[0].c_str()); m_Makefile->GetCacheManager()->GetCacheIterator(args[0].c_str());
if(!cacheValue) if(!it.IsAtEnd())
{ {
std::string initialValue = "Off"; if ( it.GetType() != cmCacheManager::UNINITIALIZED )
if(args.size() == 3)
{ {
initialValue = args[2]; return true;
}
if ( it.GetValue() )
{
initialValue = it.GetValue();
} }
m_Makefile->AddCacheDefinition(args[0].c_str(),
cmSystemTools::IsOn(initialValue.c_str()),
args[1].c_str());
} }
if(args.size() == 3)
{
initialValue = args[2];
}
m_Makefile->AddCacheDefinition(args[0].c_str(),
cmSystemTools::IsOn(initialValue.c_str()),
args[1].c_str());
return true; return true;
} }