FairFindPackage2
Added in version 0.1.0.
Requires CMake 3.12 or later.
On inclusion
Added in version 0.2.0.
Add this module as a PRIVATE package dependency if included from the
FairCMakeModules package.
find_package2()
Wrapper around CMake’s native find_package() command to add some
features and bookkeeping.
find_package2(PRIVATE|PUBLIC|INTERFACE|BUNDLED <pkgname>
[VERSION <version>]
[COMPONENTS <component> [<component>...]]
[OPTIONAL_COMPONENTS <component> [<component>...]]
[ADD_REQUIREMENTS_OF <dep_pkgname> [<dep_pkgname>...]]
[<any other native `find_package` option>...])
The qualifier (PRIVATE|PUBLIC|INTERFACE|BUNDLED) is used to
populate the variables
PROJECT_[INTERFACE]_<pkgname>_([VERSION]|[COMPONENTS]|PACKAGE_DEPENDENCIES)
accordingly. This bookkeeping information is used to print a dependencies
found summary table and in the generation of a CMake package. BUNDLED
decays to PUBLIC if the variable <pkgname>_BUNDLED is false and to
PRIVATE otherwise.
When a dependending package is listed with ADD_REQUIREMENTS_OF the
variables <dep_pkgname>_<pkgname>_VERSION|COMPONENTS are looked
up and merged with VERSION (selected highest version) and COMPONENTS
(deduplicated) requirements. COMPONENTS and VERSION args are then
just passed to find_package().
Changed in version 0.2.0.
The ADD_REQUIREMENTS_OF argument is now a no-op and only remains for
compatibility reasons. find_package2() now always merges all known
requirements.
Added in version 1.0.0.
By default find_package2() tries to determine the install prefix if
the package is found. The result is populated to the variable
<pkgname>_PREFIX`. This behaviour can be disabled by setting the
FAIR_NO_AUTO_DETECT_PREFIX to ON.
Support for OPTIONAL_COMPONENTS was added.
find_package2_implicit_dependencies()
Added in version 0.2.0.
Loop over all remaining implicit dependencies and find_package2()
them.
find_package2_implicit_dependencies([EXCLUDE <pkg> [<pkg>...]])
Listed packages with EXCLUDE are filtered out.
fair_generate_package_dependencies()
Added in version 0.2.0.
fair_generate_package_dependencies()
Populates the variable PACKAGE_DEPENDENCIES with a CMake snippet
from the public dependencies (read from
PROJECT_INTERFACE_PACKAGE_DEPENDENCIES) that can be included in a
CMake package config file to export its package dependencies.
These exported dependencies will be respected by find_package2().