Kaynağa Gözat

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.
Craig Scott 6 yıl önce
ebeveyn
işleme
049dbdd38c
2 değiştirilmiş dosya ile 10 ekleme ve 9 silme
  1. 7 6
      Help/command/FIND_XXX.txt
  2. 3 3
      Help/policy/CMP0074.rst

+ 7 - 6
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 ``<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``.

+ 3 - 3
Help/policy/CMP0074.rst

@@ -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