diff options
author | Brad King <brad.king@kitware.com> | 2017-04-11 18:42:39 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-04-18 13:03:32 (GMT) |
commit | 930042f2d95e83047231457f4d9134c74b8744fc (patch) | |
tree | cd43b9afbde99909cdbacba853dd49384699d999 /Source/cmGeneratorExpressionNode.cxx | |
parent | 3ab4681efa6db7339af36218fffea165ad1186f3 (diff) | |
download | CMake-930042f2d95e83047231457f4d9134c74b8744fc.zip CMake-930042f2d95e83047231457f4d9134c74b8744fc.tar.gz CMake-930042f2d95e83047231457f4d9134c74b8744fc.tar.bz2 |
cmGeneratorTarget: Factor out a GetTargetObjectNames method
Diffstat (limited to 'Source/cmGeneratorExpressionNode.cxx')
-rw-r--r-- | Source/cmGeneratorExpressionNode.cxx | 40 |
1 files changed, 11 insertions, 29 deletions
diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index 8fee119..29ad5d1 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -33,8 +33,6 @@ #include <string.h> #include <utility> -class cmSourceFile; - std::string cmGeneratorExpressionNode::EvaluateDependentExpression( std::string const& prop, cmLocalGenerator* lg, cmGeneratorExpressionContext* context, cmGeneratorTarget const* headTarget, @@ -1254,38 +1252,22 @@ static const struct TargetObjectsNode : public cmGeneratorExpressionNode return std::string(); } - std::vector<cmSourceFile const*> objectSources; - gt->GetObjectSources(objectSources, context->Config); - std::map<cmSourceFile const*, std::string> mapping; + std::vector<std::string> objects; + gt->GetTargetObjectNames(context->Config, objects); - for (std::vector<cmSourceFile const*>::const_iterator it = - objectSources.begin(); - it != objectSources.end(); ++it) { - mapping[*it]; + for (std::vector<std::string>::iterator oi = objects.begin(); + oi != objects.end(); ++oi) { + *oi = gt->ObjectDirectory + *oi; } - gt->LocalGenerator->ComputeObjectFilenames(mapping, gt); - + // Create the cmSourceFile instances in the referencing directory. cmMakefile* mf = context->LG->GetMakefile(); - - std::string obj_dir = gt->ObjectDirectory; - std::string result; - const char* sep = ""; - for (std::vector<cmSourceFile const*>::const_iterator it = - objectSources.begin(); - it != objectSources.end(); ++it) { - // Find the object file name corresponding to this source file. - std::map<cmSourceFile const*, std::string>::const_iterator map_it = - mapping.find(*it); - // It must exist because we populated the mapping just above. - assert(!map_it->second.empty()); - result += sep; - std::string objFile = obj_dir + map_it->second; - mf->AddTargetObject(tgtName, objFile); - result += objFile; - sep = ";"; + for (std::vector<std::string>::iterator oi = objects.begin(); + oi != objects.end(); ++oi) { + mf->AddTargetObject(tgtName, *oi); } - return result; + + return cmJoin(objects, ";"); } } targetObjectsNode; |