summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalGenerator.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-04-11 21:11:34 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-04-11 21:11:34 (GMT)
commited4974da55c3d8b2315c1b729fceee6e834673f2 (patch)
treeb76aeb9f7f1b56ff935e96cd94e599b3801448ea /Source/cmLocalGenerator.cxx
parent08289893b8590be41d0541af7644e737035aee54 (diff)
downloadCMake-ed4974da55c3d8b2315c1b729fceee6e834673f2.zip
CMake-ed4974da55c3d8b2315c1b729fceee6e834673f2.tar.gz
CMake-ed4974da55c3d8b2315c1b729fceee6e834673f2.tar.bz2
ENH: enable test for java with IDE builds
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r--Source/cmLocalGenerator.cxx41
1 files changed, 39 insertions, 2 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index e802066..36fed56 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -565,7 +565,6 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target)
std::string flags; // should be set
std::string linkFlags; // should be set
this->GetTargetFlags(linkLibs, flags, linkFlags, target);
- std::string rule = this->Makefile->GetRequiredDefinition(createRule.c_str());
cmLocalGenerator::RuleVariables vars;
vars.Language = llang;
vars.Objects = objs.c_str();
@@ -573,7 +572,45 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target)
vars.LinkLibraries = linkLibs.c_str();
vars.Flags = flags.c_str();
vars.LinkFlags = linkFlags.c_str();
- this->ExpandRuleVariables(rule, vars);
+
+ cmCustomCommandLines commandLines;
+ std::vector<std::string> rules;
+ rules.push_back(this->Makefile->GetRequiredDefinition(createRule.c_str()));
+ std::vector<std::string> commands;
+ cmSystemTools::ExpandList(rules, commands);
+ for(std::vector<std::string>::iterator i = commands.begin();
+ i != commands.end(); ++i)
+ {
+ // Expand the full command line string.
+ this->ExpandRuleVariables(*i, vars);
+
+ // Parse the string to get the custom command line.
+ cmCustomCommandLine commandLine;
+ std::vector<cmStdString> cmd = cmSystemTools::ParseArguments(i->c_str());
+ for(std::vector<cmStdString>::iterator a = cmd.begin();
+ a != cmd.end(); ++a)
+ {
+ commandLine.push_back(*a);
+ }
+
+ // Store this command line.
+ commandLines.push_back(commandLine);
+ }
+ std::string targetFullPath = target.GetFullPath();
+ // Generate a meaningful comment for the command.
+ std::string comment = "Linking ";
+ comment += llang;
+ comment += " target ";
+ comment += this->Convert(targetFullPath.c_str(), START_OUTPUT);
+ this->Makefile->AddCustomCommandToOutput(
+ targetFullPath.c_str(),
+ objVector,
+ 0,
+ commandLines,
+ comment.c_str(),
+ this->Makefile->GetStartOutputDirectory()
+ );
+ target.GetSourceFiles().push_back(this->Makefile->GetSource(targetFullPath.c_str()));
}