diff options
author | Brad King <brad.king@kitware.com> | 2012-01-25 18:39:26 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2012-01-25 19:42:31 (GMT) |
commit | ca39c5cdd1ca28516791e00f213d6dee2179c6df (patch) | |
tree | cf36435b8b38cf4c830390c73c263f870551e408 /Source/cmMakefile.cxx | |
parent | 731f996ce070bbba1b4913050497afa95436f2d2 (diff) | |
download | CMake-ca39c5cdd1ca28516791e00f213d6dee2179c6df.zip CMake-ca39c5cdd1ca28516791e00f213d6dee2179c6df.tar.gz CMake-ca39c5cdd1ca28516791e00f213d6dee2179c6df.tar.bz2 |
Optionally allow IMPORTED targets to be globally visible
Consider the case motivating commit e01cce28 (Allow add_dependencies()
on imported targets, 2010-11-19). An imported target references a file
generated at build time by a custom target on which it depends. Had the
file been built directly using add_library or add_executable its target
name would have been visible globally. Therefore the imported target
representing the file should be globally visible also.
Teach the IMPORTED signature of add_(executable|library) to accept a new
"GLOBAL" option to make the imported target visible globally.
Diffstat (limited to 'Source/cmMakefile.cxx')
-rw-r--r-- | Source/cmMakefile.cxx | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 7939d73..fdf5b31 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1937,7 +1937,7 @@ cmMakefile::AddNewTarget(cmTarget::TargetType type, const char* name) cmTarget& target = it->second; target.SetType(type, name); target.SetMakefile(this); - this->LocalGenerator->GetGlobalGenerator()->AddTarget(*it); + this->LocalGenerator->GetGlobalGenerator()->AddTarget(&it->second); return &it->second; } @@ -3894,7 +3894,8 @@ void cmMakefile::DefineProperties(cmake *cm) //---------------------------------------------------------------------------- cmTarget* -cmMakefile::AddImportedTarget(const char* name, cmTarget::TargetType type) +cmMakefile::AddImportedTarget(const char* name, cmTarget::TargetType type, + bool global) { // Create the target. cmsys::auto_ptr<cmTarget> target(new cmTarget); @@ -3904,6 +3905,10 @@ cmMakefile::AddImportedTarget(const char* name, cmTarget::TargetType type) // Add to the set of available imported targets. this->ImportedTargets[name] = target.get(); + if(global) + { + this->LocalGenerator->GetGlobalGenerator()->AddTarget(target.get()); + } // Transfer ownership to this cmMakefile object. this->ImportedTargetsOwned.push_back(target.get()); |