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:
parent
b753a6794b
commit
d97e79c971
|
@ -46,20 +46,29 @@ bool cmOptionCommand::InitialPass(std::vector<std::string> const& args)
|
|||
return false;
|
||||
}
|
||||
|
||||
std::string initialValue = "Off";
|
||||
// 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
|
||||
const char* cacheValue
|
||||
= m_Makefile->GetDefinition(args[0].c_str());
|
||||
if(!cacheValue)
|
||||
cmCacheManager::CacheIterator it =
|
||||
m_Makefile->GetCacheManager()->GetCacheIterator(args[0].c_str());
|
||||
if(!it.IsAtEnd())
|
||||
{
|
||||
std::string initialValue = "Off";
|
||||
if(args.size() == 3)
|
||||
if ( it.GetType() != cmCacheManager::UNINITIALIZED )
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue