On Saturday 16 February 2008, Alexander Neundorf wrote:
> On Saturday 16 February 2008, Bill Hoffman wrote:
> > Alexander Neundorf wrote:
> > > On Friday 18 January 2008, Alexander Neundorf wrote:
>
> ...
>
> > >> set(foo a b c PARENT_SCOPE)
> > >>
> > >> I'm not sure it is a good idea that this also propagates to the parent
> > >> directory. What is a use case for this ?
> > >
> > > What do you think about this ?
> > > I think it's no good idea. Until now you can rely on that whatever
> > > happens in subdirectories doesn't modify variables in the parent
> > > directory (the only way is to force something through the cache, which
> > > is a bit ugly).
> > > If you need to get information from a subdir to some other place, with
> > > cmake 2.6 you can use a global property to do this, which will also
> > > work over multiple levels of subdirectories. Doing this using
> > > PARENT_SCOPE would require to build a chain of these calls through all
> > > directories, which I think is not very nice and can require relatively
> > > much code.
> > >
> > > Do you have objections to removing that feature (propagating to the
> > > parent directory) ?
> >
> > I am pretty sure raise_scope was removed in favor of this version of
> > set, so if you remove it, there will be no way to raise scope...
>
> I don't mean to remove the SET(PARENT_SCOPE) feature, where the main
> purpose is to set a global variable from within a function.
> But if SET( ... PARENT_SCOPE) is called outside a function, the effect is
> that the variable is set in the parent directory. This is the part where
> I'm not sure it's a good idea.
...this would be the patch, with the patch PARENT_SCOPE only raises the scope
out of a function, but not to the parent directory anymore.
Alex
Index: cmMakefile.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMakefile.cxx,v
retrieving revision 1.437
diff -b -u -p -r1.437 cmMakefile.cxx
--- cmMakefile.cxx 14 Feb 2008 21:42:29 -0000 1.437
+++ cmMakefile.cxx 16 Feb 2008 19:09:00 -0000
@@ -3004,22 +3004,6 @@ void cmMakefile::RaiseScope(const char *
this->DefinitionStack[this->DefinitionStack.size()-2].erase(var);
}
}
- // otherwise do the parent (if one exists)
- else if (this->LocalGenerator->GetParent())
- {
- cmMakefile *parent = this->LocalGenerator->GetParent()->GetMakefile();
- if (parent)
- {
- if(varDef)
- {
- parent->AddDefinition(var,varDef);
- }
- else
- {
- parent->RemoveDefinition(var);
- }
- }
- }
}
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake