diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2006-04-11 21:11:34 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2006-04-11 21:11:34 (GMT) |
commit | ed4974da55c3d8b2315c1b729fceee6e834673f2 (patch) | |
tree | b76aeb9f7f1b56ff935e96cd94e599b3801448ea /Source/cmLocalGenerator.cxx | |
parent | 08289893b8590be41d0541af7644e737035aee54 (diff) | |
download | CMake-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.cxx | 41 |
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())); } |