On Tuesday 13 March 2012, Brad King wrote:
> On 3/10/2012 1:15 PM, Alexander Neundorf wrote:
> > I pushed a branch ImprovedCOMPONENTSSupportInFindPackage to stage.
> > 
> > It is not finished (documentation and an updated fphsa() are missing at
> > least), but you may want to have a look at it.
> > 
> > It adds
> > * OPTIONAL_COMPONENTS
> 
> Will this interact well when a Find module forwards with NO_MODULE?

It should.
This branch is currently only a first step, to see how it would look like.
 
> > * CMP0018: if a listed component is not found, Foo_FOUND is set to false
> > in Config mode
> 
> I do not think CMP0018 can work quite as we need.  If a project sets
> the behavior to NEW how does it know the package configuration file
> it finds will be aware that it needs to set the Foo_<component>_FOUND
> variables?  That is not something that cmake_minimum_required(VERSION)
> can know when it sets the policy to NEW.
> 
> We don't know how packages out there interpret components.  For some
> it may just be a list which can always be satisfied.  Others may
> already provide a value equivalent to Foo_<component>_FOUND but with
> a different name that makes more sense for their use case.
> 
> The relationship of <pkg>_FOUND and <pkg>'s components is specific to
> each package.  I think it should simply be up to the package config
> file for the package to set <pkg>_FOUND based on its ability to
> satisfy the requested components in whatever sense is meaningful
> for the given package.  

Some users/developers would prefer if there was a more strict definition of 
how the COMPONENTS arguments should be handled.

> This will be possible after the topic
> find_package_set_FOUND_VariableInConfigFile is done.

Yes. That's why I did this small branch first and with as few changes in 
behaviour as possible.

> I think OPTIONAL_COMPONENTS may be worthwhile but that is independent
> from the proposed policy.

Hmm, but without the policy change (set Foo_FOUND only TRUE if all requested 
COMPONENTS have been found), OPTIONAL_COMPONENTS does not really make a lot of 
sense, since both will then simply result in two different cmake variables 
Foo_FIND_OPTIONAL_COMPONENTS and Foo_FIND_COMPONENTS, and both lists are still 
handled the same way, i.e. ignored for setting Foo_FOUND.

Alex
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to