ENH: add optional include and only allow one file per INCLUDE
This commit is contained in:
parent
3221b4e3fe
commit
43c2a89568
|
@ -20,18 +20,26 @@
|
|||
// cmIncludeCommand
|
||||
bool cmIncludeCommand::InitialPass(std::vector<std::string>& args)
|
||||
{
|
||||
if (args.size()< 1)
|
||||
if (args.size()< 1 || args.size() > 2)
|
||||
{
|
||||
this->SetError("called with wrong number of arguments.");
|
||||
this->SetError("called with wrong number of arguments. "
|
||||
"Include only takes one file.");
|
||||
}
|
||||
|
||||
for( unsigned int i=0; i< args.size(); i++)
|
||||
m_Makefile->ExpandVariablesInString( args[0]);
|
||||
bool exists = cmSystemTools::FileExists(args[0].c_str());
|
||||
if(args.size() == 2 && args[1] == "OPTIONAL" && !exists)
|
||||
{
|
||||
m_Makefile->ExpandVariablesInString( args[i]);
|
||||
m_Makefile->ReadListFile( m_Makefile->GetCurrentListFile(),
|
||||
args[i].c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
if(!exists)
|
||||
{
|
||||
std::string error = "Include file not found: " + args[0];
|
||||
this->SetError(error.c_str());
|
||||
return false;
|
||||
}
|
||||
m_Makefile->ReadListFile( m_Makefile->GetCurrentListFile(),
|
||||
args[0].c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -69,7 +69,8 @@ public:
|
|||
virtual const char* GetFullDocumentation()
|
||||
{
|
||||
return
|
||||
"INCLUDE(file1 file2)\n";
|
||||
"INCLUDE(file1 [OPTIONAL])\nIf OPTIONAL is present, then do not complain "
|
||||
"if the file does not exist.";
|
||||
}
|
||||
|
||||
cmTypeMacro(cmIncludeCommand, cmCommand);
|
||||
|
|
Loading…
Reference in New Issue