On Tuesday 13 March 2012, Brad King wrote: > On 3/13/2012 3:25 PM, Alexander Neundorf wrote: > > How about this: > > * no policy > > * new argument find_package( OPTIONAL_COMPONENTS), so we get two sets of > > components > > * the components are still ignored by find_package() for setting > > Foo_FOUND * I add some code to FPHSA so it handled COMPONENTS and > > REQUIRED_COMPONENTS as done in my branch (i.e. COMPONENTS are required, > > OPTIONAL_COMPONENTS not) * I maybe add something to @PACKAGE_INIT@ to > > help Config files handle components as recommended > > > > This way we could recommend to handle components in some way, and make it > > easy for developers to follow the recommendation. > > Sounds good! > > Rather than two separate lists of components perhaps the > > <pkg>_FIND_REQUIRED_<component> > > variables could have the value "OPTIONAL" instead of "1" when a > given component is optional.
Looks a bit strange IMO. Both "OPTIONAL" and "1" evaluate to true. And the value of e.g. Foo_FIND_REQUIRED_Comp would be "OPTIONAL", which kind of conflicts with the "REQUIRED" in the name of the variable. We could also not set <pkg>_FIND_REQUIRED_<component>, or set it to "0" (which would mean it is not required). Are there any compatibility issue to take into account ? Until now, there never was a OPTIONAL_COMPONENT, so every call to find_package(COMPONENTS ...) will work as before. If somebody adds a OPTIONAL_COMPONENTS, this will add component entries to the FIND_COMPONENTS variable which have now _FIND_REQUIRED_ set to 0. The Find-module or Config-file may not be prepared to handle this. What is actually the purpose of the _FIND_REQUIRED_ variable ? It currently doesn't add any information compared to the list _FIND_COMPONENTS. Are you aware of any uses of this variable ? > This will probably simplify code > dealing with components because it needs to loop over only one > list Hmm, maybe. foreach(comp ${Foo_FIND_COMPONENTS}) vs. foreach(comp ${Foo_FIND_COMPONENTS} ${Foo_FIND_OPTIONAL_COMPONENTS}) > and won't have to worry about whether a component can appear > in both lists. The argument parsing in cmFindPackage still has to decide what to do if a component appears multiple times. Error out ? REQUIRED always has priority over OPTIONAL ? Last one wins ? I'd probably go with the second option. 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