summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefile.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2012-01-25 18:39:26 (GMT)
committerBrad King <brad.king@kitware.com>2012-01-25 19:42:31 (GMT)
commitca39c5cdd1ca28516791e00f213d6dee2179c6df (patch)
treecf36435b8b38cf4c830390c73c263f870551e408 /Source/cmMakefile.cxx
parent731f996ce070bbba1b4913050497afa95436f2d2 (diff)
downloadCMake-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.cxx9
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());