diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index d5274cd901..dc3944c583 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -83,6 +83,15 @@ void cmTarget::SetType(cmState::TargetType type, const std::string& name) } } +cmTarget cmTarget::CopyForDirectory(cmMakefile* mf) const +{ + assert(this->GetType() == cmState::GLOBAL_TARGET); + assert(this->GetMakefile() == CM_NULLPTR); + cmTarget result(*this); + result.SetMakefile(mf); + return result; +} + void cmTarget::SetMakefile(cmMakefile* mf) { // Set our makefile. diff --git a/Source/cmTarget.h b/Source/cmTarget.h index fc30166f07..b0bfc7205f 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -86,6 +86,9 @@ public: ///! Set/Get the name of the target const std::string& GetName() const { return this->Name; } + /** Get a copy of this target adapted for the given directory. */ + cmTarget CopyForDirectory(cmMakefile* mf) const; + ///! Set the cmMakefile that owns this target void SetMakefile(cmMakefile* mf); cmMakefile* GetMakefile() const { return this->Makefile; }