ENH: fix new incremental link stuff to work with nmake @ files

This commit is contained in:
Bill Hoffman 2008-01-02 09:32:29 -05:00
parent 8624abf272
commit 603cd2ab6a
1 changed files with 33 additions and 5 deletions

View File

@ -3674,17 +3674,45 @@ int cmake::VisualStudioLink(std::vector<std::string>& args, int type)
{
verbose = true;
}
// figure out if this is an incremental link or not and run the correct
// link function.
std::vector<std::string> expandedArgs;
for(std::vector<std::string>::iterator i = args.begin();
i != args.end(); ++i)
{
if(cmSystemTools::Strucmp(i->c_str(), "/INCREMENTAL:YES") == 0)
// check for nmake temporary files
if((*i)[0] == '@')
{
return cmake::VisualStudioLinkIncremental(args, type, verbose);
std::ifstream fin(i->substr(1).c_str());
std::string line;
while(cmSystemTools::GetLineFromStream(fin,
line))
{
cmSystemTools::ParseWindowsCommandLine(line.c_str(), expandedArgs);
}
}
else
{
expandedArgs.push_back(*i);
}
}
return cmake::VisualStudioLinkNonIncremental(args, type, verbose);
// figure out if this is an incremental link or not and run the correct
// link function.
for(std::vector<std::string>::iterator i = expandedArgs.begin();
i != expandedArgs.end(); ++i)
{
if(cmSystemTools::Strucmp(i->c_str(), "/INCREMENTAL:YES") == 0)
{
if(verbose)
{
std::cout << "Visual Studio Incremental Link\n";
}
return cmake::VisualStudioLinkIncremental(expandedArgs, type, verbose);
}
}
if(verbose)
{
std::cout << "Visual Studio Non-Incremental Link\n";
}
return cmake::VisualStudioLinkNonIncremental(expandedArgs, type, verbose);
}
int cmake::ParseVisualStudioLinkCommand(std::vector<std::string>& args,