diff options
author | Brad King <brad.king@kitware.com> | 2016-09-14 17:38:00 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-09-14 18:50:39 (GMT) |
commit | d97513d842c51e4fb996d42e1f04a9c291e3d5bf (patch) | |
tree | 5db0bf17e9b58e722228da22651a0423cead65c7 | |
parent | ea69e03afaeff76d2141ab4a330f3489297a3a41 (diff) | |
download | CMake-d97513d842c51e4fb996d42e1f04a9c291e3d5bf.zip CMake-d97513d842c51e4fb996d42e1f04a9c291e3d5bf.tar.gz CMake-d97513d842c51e4fb996d42e1f04a9c291e3d5bf.tar.bz2 |
cmTarget: Add method to get a copy adapted for a directory
The "global" targets are built once for the top directory and then
copied into all directories. Add a helper method to make the copy.
-rw-r--r-- | Source/cmTarget.cxx | 9 | ||||
-rw-r--r-- | Source/cmTarget.h | 3 |
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; } |