summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmTarget.cxx9
-rw-r--r--Source/cmTarget.h3
2 files changed, 12 insertions, 0 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index d5274cd..dc3944c 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 fc30166..b0bfc72 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; }