diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2008-01-02 14:32:29 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2008-01-02 14:32:29 (GMT) |
commit | 603cd2ab6a1d840943193e626dd992203a46e6ba (patch) | |
tree | 6a18b4227d932227a1f703099e22ddd0cdd6e7c0 | |
parent | 8624abf272bd75975e828d1b497f720aac6df768 (diff) | |
download | CMake-603cd2ab6a1d840943193e626dd992203a46e6ba.zip CMake-603cd2ab6a1d840943193e626dd992203a46e6ba.tar.gz CMake-603cd2ab6a1d840943193e626dd992203a46e6ba.tar.bz2 |
ENH: fix new incremental link stuff to work with nmake @ files
-rw-r--r-- | Source/cmake.cxx | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 099a053..010e162 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -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) { + // check for nmake temporary files + if((*i)[0] == '@') + { + 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); + } + } + // 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) { - return cmake::VisualStudioLinkIncremental(args, type, verbose); + if(verbose) + { + std::cout << "Visual Studio Incremental Link\n"; + } + return cmake::VisualStudioLinkIncremental(expandedArgs, type, verbose); } } - return cmake::VisualStudioLinkNonIncremental(args, 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, |