summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2003-11-03 20:57:56 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2003-11-03 20:57:56 (GMT)
commiteff0a824c4b1330da985dff3b7b9fa3793937866 (patch)
tree6018de2b5e433da38bb9ddba59c62aa6ba301cf5
parent271f4be42a12628afd87502022e5df089bbdd215 (diff)
downloadCMake-eff0a824c4b1330da985dff3b7b9fa3793937866.zip
CMake-eff0a824c4b1330da985dff3b7b9fa3793937866.tar.gz
CMake-eff0a824c4b1330da985dff3b7b9fa3793937866.tar.bz2
BUG: hack fix for problem of MS vs 6 and custom target commands
-rw-r--r--Source/cmLocalVisualStudio6Generator.cxx5
-rw-r--r--Source/cmMakefile.cxx25
2 files changed, 27 insertions, 3 deletions
diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx
index 61cce39..13891ba 100644
--- a/Source/cmLocalVisualStudio6Generator.cxx
+++ b/Source/cmLocalVisualStudio6Generator.cxx
@@ -253,6 +253,11 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout,
m_Makefile->GetStartOutputDirectory(),
libName, count);
std::vector<std::string> args;
+ // This is a hack to fix a problem with cmCustomCommand
+ // The cmCustomCommand should store the arguments as a vector
+ // and not a string, and the cmAddCustomTargetCommand should
+ // not EscapeSpaces.
+ args.push_back("This is really a single argument do not escape spaces");
args.push_back(cc.GetArguments());
m_Makefile->AddCustomCommandToOutput(output,
cc.GetCommand().c_str(),
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index d7ec582..c1bb833 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -570,12 +570,31 @@ AddCustomCommandToOutput(const char* outputIn,
command = cmSystemTools::EscapeSpaces(command.c_str());
unsigned int i;
+ bool escapeSpaces = true;
for (i = 0; i < commandArgs.size(); ++i)
{
expandC = commandArgs[i].c_str();
- this->ExpandVariablesInString(expandC);
- combinedArgs += cmSystemTools::EscapeSpaces(expandC.c_str());
- combinedArgs += " ";
+ // This is a hack to fix a problem with cmCustomCommand
+ // The cmCustomCommand should store the arguments as a vector
+ // and not a string, and the cmAddCustomTargetCommand should
+ // not EscapeSpaces.
+ if(expandC == "This is really a single argument do not escape spaces")
+ {
+ escapeSpaces = false;
+ }
+ else
+ {
+ this->ExpandVariablesInString(expandC);
+ if(escapeSpaces)
+ {
+ combinedArgs += cmSystemTools::EscapeSpaces(expandC.c_str());
+ }
+ else
+ {
+ combinedArgs += expandC;
+ }
+ combinedArgs += " ";
+ }
}
cmSourceFile *file = 0;