mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 19:00:54 -06:00
Help: Document that <PackageName>_ROOT applies to config packages too
The original intent of <PackageName>_ROOT may have been for it to apply only to Find modules, but the implementation of the find_package() command treats modules and config packages the same. Both result in a <PackageName>_ROOT variable being pushed onto the stack of package roots. A config package can also call other find_...() commands, the behavior doesn't apply just to find modules.
This commit is contained in:
@@ -79,15 +79,16 @@ If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows:
|
||||
|prefix_XXX_SUBDIR| for each ``<prefix>`` in
|
||||
:variable:`CMAKE_SYSTEM_PREFIX_PATH`
|
||||
|
||||
1. If called from within a find module loaded by
|
||||
1. If called from within a find module or any other script loaded by a call to
|
||||
:command:`find_package(<PackageName>)`, search prefixes unique to the
|
||||
current package being found. Specifically look in the
|
||||
current package being found. Specifically, look in the
|
||||
:variable:`<PackageName>_ROOT` CMake variable and the
|
||||
:envvar:`<PackageName>_ROOT` environment variable.
|
||||
The package root variables are maintained as a stack so if called from
|
||||
nested find modules, root paths from the parent's find module will be
|
||||
searched after paths from the current module,
|
||||
i.e. ``<CurrentPackage>_ROOT``, ``ENV{<CurrentPackage>_ROOT}``,
|
||||
The package root variables are maintained as a stack, so if called from
|
||||
nested find modules or config packages, root paths from the parent's find
|
||||
module or config package will be searched after paths from the current
|
||||
module or package. In other words, the search order would be
|
||||
``<CurrentPackage>_ROOT``, ``ENV{<CurrentPackage>_ROOT}``,
|
||||
``<ParentPackage>_ROOT``, ``ENV{<ParentPackage>_ROOT}``, etc.
|
||||
This can be skipped if ``NO_PACKAGE_ROOT_PATH`` is passed or by setting
|
||||
the :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` to ``FALSE``.
|
||||
|
||||
@@ -7,9 +7,9 @@ In CMake 3.12 and above the :command:`find_package(<PackageName>)` command now
|
||||
searches prefixes specified by the :variable:`<PackageName>_ROOT` CMake
|
||||
variable and the :envvar:`<PackageName>_ROOT` environment variable.
|
||||
Package roots are maintained as a stack so nested calls to all ``find_*``
|
||||
commands inside find modules also search the roots as prefixes. This policy
|
||||
provides compatibility with projects that have not been updated to avoid using
|
||||
``<PackageName>_ROOT`` variables for other purposes.
|
||||
commands inside find modules and config packages also search the roots as
|
||||
prefixes. This policy provides compatibility with projects that have not been
|
||||
updated to avoid using ``<PackageName>_ROOT`` variables for other purposes.
|
||||
|
||||
The ``OLD`` behavior for this policy is to ignore ``<PackageName>_ROOT``
|
||||
variables. The ``NEW`` behavior for this policy is to use
|
||||
|
||||
Reference in New Issue
Block a user