[cmake-developers] How to handle package Config.cmake files with dependencies ?
Brad King
brad.king at kitware.com
Wed Mar 7 10:50:56 EST 2012
On 3/7/2012 9:49 AM, Michael Hertling wrote:
> been found, but in module mode, AFAIK, it's set to Foo_DIR-NOTFOUND
> even if a find module has succeeded
The Foo_DIR variable is not set or added to the cache at all if
a FindFoo module is loaded regardless of whether it succeeds.
It is only if no FindFoo module is found that Foo_DIR appears.
> my question is still: How can I figure out in a reliable manner
> that FIND_PACKAGE(Foo ...) has found neither FindFoo.cmake nor
> FooConfig.cmake?
The call site should *know* whether it is intending to use a
Find module or look for a package config file based on whether
the the author adds a Find module to CMAKE_MODULE_PATH.
If using a Find module then use its documentation to check the
result. FPHSA sets FOO_FOUND. Otherwise if using Config mode
then check Foo_FOUND.
Actually, the documentation of find_package says:
<package>_FOUND will be set to indicate whether the package was found.
Config mode *always* sets that. If it isn't set correctly
by a Find module that is a bug in the Find module IMO.
FPHSA should be fixed to set both Foo_FOUND and FOO_FOUND.
I know Alex always says that we should use UPPERCASE_VARS
instead of ExactCase_VARS but the *ONLY* reason ever given
is because "most" modules have done that historically.
That argument just extends the problem into the future as
more and more new modules use the confusing convention.
-Brad
More information about the cmake-developers
mailing list