diff options
author | Brad King <brad.king@kitware.com> | 2012-09-19 17:58:12 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2012-09-19 17:58:12 (GMT) |
commit | 8fc88b7eb0a46544c7a6815181bd5899231c2129 (patch) | |
tree | 304cea631cd2738fc3b100f30497b56bb1c8f075 /Source/cmake.cxx | |
parent | d58448544c0c10a188101b164aeb3d518088bd9e (diff) | |
parent | 5598d9b2a06d4ec788b5e058435bb3bba99fd517 (diff) | |
download | CMake-8fc88b7eb0a46544c7a6815181bd5899231c2129.zip CMake-8fc88b7eb0a46544c7a6815181bd5899231c2129.tar.gz CMake-8fc88b7eb0a46544c7a6815181bd5899231c2129.tar.bz2 |
Merge topic 'vs-link-rsp'
5598d9b Ninja: don't expand any rsp files
Diffstat (limited to 'Source/cmake.cxx')
-rw-r--r-- | Source/cmake.cxx | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 079ea36..1750daa 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1682,11 +1682,19 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args) } else if (args[1] == "vs_link_exe") { - return cmake::VisualStudioLink(args, 1); + return cmake::VisualStudioLink(args, 1, false); } else if (args[1] == "vs_link_dll") { - return cmake::VisualStudioLink(args, 2); + return cmake::VisualStudioLink(args, 2, false); + } + else if (args[1] == "vs_link_exe_no_rsp_expand") + { + return cmake::VisualStudioLink(args, 1, true); + } + else if (args[1] == "vs_link_dll_no_rsp_expand") + { + return cmake::VisualStudioLink(args, 2, true); } #ifdef CMAKE_BUILD_WITH_CMAKE // Internal CMake color makefile support. @@ -4012,7 +4020,8 @@ static bool cmakeCheckStampList(const char* stampList) // For visual studio 2005 and newer manifest files need to be embeded into // exe and dll's. This code does that in such a way that incremental linking // still works. -int cmake::VisualStudioLink(std::vector<std::string>& args, int type) +int cmake::VisualStudioLink(std::vector<std::string>& args, int type, + bool no_rsp_expand) { if(args.size() < 2) { @@ -4027,13 +4036,12 @@ int cmake::VisualStudioLink(std::vector<std::string>& args, int type) for(std::vector<std::string>::iterator i = args.begin(); i != args.end(); ++i) { - // check for nmake temporary files - if((*i)[0] == '@' && i->find("@CMakeFiles") != 0 ) + // check for nmake temporary files (there are two rsp files) + if(!no_rsp_expand && (*i)[0] == '@' && i->find("@CMakeFiles") != 0 ) { std::ifstream fin(i->substr(1).c_str()); std::string line; - while(cmSystemTools::GetLineFromStream(fin, - line)) + while(cmSystemTools::GetLineFromStream(fin, line)) { cmSystemTools::ParseWindowsCommandLine(line.c_str(), expandedArgs); } |