From 049dbdd38c56ad9ea06af2032faf3348c3c76742 Mon Sep 17 00:00:00 2001 From: Craig Scott Date: Sun, 27 Oct 2019 16:10:09 +1100 Subject: Help: Document that _ROOT applies to config packages too The original intent of _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 _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. --- Help/command/FIND_XXX.txt | 13 +++++++------ Help/policy/CMP0074.rst | 6 +++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Help/command/FIND_XXX.txt b/Help/command/FIND_XXX.txt index 40f1c1a..42bf52b 100644 --- a/Help/command/FIND_XXX.txt +++ b/Help/command/FIND_XXX.txt @@ -79,15 +79,16 @@ If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows: |prefix_XXX_SUBDIR| for each ```` 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()`, search prefixes unique to the - current package being found. Specifically look in the + current package being found. Specifically, look in the :variable:`_ROOT` CMake variable and the :envvar:`_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. ``_ROOT``, ``ENV{_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 + ``_ROOT``, ``ENV{_ROOT}``, ``_ROOT``, ``ENV{_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``. diff --git a/Help/policy/CMP0074.rst b/Help/policy/CMP0074.rst index 896936b..63ebf7b 100644 --- a/Help/policy/CMP0074.rst +++ b/Help/policy/CMP0074.rst @@ -7,9 +7,9 @@ In CMake 3.12 and above the :command:`find_package()` command now searches prefixes specified by the :variable:`_ROOT` CMake variable and the :envvar:`_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 -``_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 ``_ROOT`` variables for other purposes. The ``OLD`` behavior for this policy is to ignore ``_ROOT`` variables. The ``NEW`` behavior for this policy is to use -- cgit v0.12