mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-04 04:40:56 -06:00
find_*: Add docs for PackageRoot search path group
This commit is contained in:
@@ -16,8 +16,9 @@ The general signature is:
|
|||||||
[PATH_SUFFIXES suffix1 [suffix2 ...]]
|
[PATH_SUFFIXES suffix1 [suffix2 ...]]
|
||||||
[DOC "cache documentation string"]
|
[DOC "cache documentation string"]
|
||||||
[NO_DEFAULT_PATH]
|
[NO_DEFAULT_PATH]
|
||||||
[NO_CMAKE_ENVIRONMENT_PATH]
|
[NO_PACKAGE_ROOT_PATH]
|
||||||
[NO_CMAKE_PATH]
|
[NO_CMAKE_PATH]
|
||||||
|
[NO_CMAKE_ENVIRONMENT_PATH]
|
||||||
[NO_SYSTEM_ENVIRONMENT_PATH]
|
[NO_SYSTEM_ENVIRONMENT_PATH]
|
||||||
[NO_CMAKE_SYSTEM_PATH]
|
[NO_CMAKE_SYSTEM_PATH]
|
||||||
[CMAKE_FIND_ROOT_PATH_BOTH |
|
[CMAKE_FIND_ROOT_PATH_BOTH |
|
||||||
@@ -60,6 +61,10 @@ If ``NO_DEFAULT_PATH`` is specified, then no additional paths are
|
|||||||
added to the search.
|
added to the search.
|
||||||
If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows:
|
If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows:
|
||||||
|
|
||||||
|
.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR| replace::
|
||||||
|
|prefix_XXX_SUBDIR| for each ``<prefix>`` in ``PackageName_ROOT`` if called
|
||||||
|
from within a find module
|
||||||
|
|
||||||
.. |CMAKE_PREFIX_PATH_XXX_SUBDIR| replace::
|
.. |CMAKE_PREFIX_PATH_XXX_SUBDIR| replace::
|
||||||
|prefix_XXX_SUBDIR| for each ``<prefix>`` in :variable:`CMAKE_PREFIX_PATH`
|
|prefix_XXX_SUBDIR| for each ``<prefix>`` in :variable:`CMAKE_PREFIX_PATH`
|
||||||
|
|
||||||
@@ -71,7 +76,18 @@ If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows:
|
|||||||
|prefix_XXX_SUBDIR| for each ``<prefix>`` in
|
|prefix_XXX_SUBDIR| for each ``<prefix>`` in
|
||||||
:variable:`CMAKE_SYSTEM_PREFIX_PATH`
|
:variable:`CMAKE_SYSTEM_PREFIX_PATH`
|
||||||
|
|
||||||
1. Search paths specified in cmake-specific cache variables.
|
1. If called from within a find module, search prefix paths unique to the
|
||||||
|
current package being found. Specifically look in the ``PackageName_ROOT``
|
||||||
|
CMake and environment variables. 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 searchd after paths from the current module,
|
||||||
|
i.e. ``CurrentPackage_ROOT``, ``ENV{CurrentPackage_ROOT}``,
|
||||||
|
``ParentPackage_ROOT``, ``ENV{ParentPacakge_ROOT}``, etc.
|
||||||
|
This can be skipped if ``NO_PACKAGE_ROOT_PATH`` is passed.
|
||||||
|
|
||||||
|
* |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX|
|
||||||
|
|
||||||
|
2. Search paths specified in cmake-specific cache variables.
|
||||||
These are intended to be used on the command line with a ``-DVAR=value``.
|
These are intended to be used on the command line with a ``-DVAR=value``.
|
||||||
The values are interpreted as :ref:`;-lists <CMake Language Lists>`.
|
The values are interpreted as :ref:`;-lists <CMake Language Lists>`.
|
||||||
This can be skipped if ``NO_CMAKE_PATH`` is passed.
|
This can be skipped if ``NO_CMAKE_PATH`` is passed.
|
||||||
@@ -80,7 +96,7 @@ If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows:
|
|||||||
* |CMAKE_XXX_PATH|
|
* |CMAKE_XXX_PATH|
|
||||||
* |CMAKE_XXX_MAC_PATH|
|
* |CMAKE_XXX_MAC_PATH|
|
||||||
|
|
||||||
2. Search paths specified in cmake-specific environment variables.
|
3. Search paths specified in cmake-specific environment variables.
|
||||||
These are intended to be set in the user's shell configuration,
|
These are intended to be set in the user's shell configuration,
|
||||||
and therefore use the host's native path separator
|
and therefore use the host's native path separator
|
||||||
(``;`` on Windows and ``:`` on UNIX).
|
(``;`` on Windows and ``:`` on UNIX).
|
||||||
@@ -90,17 +106,17 @@ If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows:
|
|||||||
* |CMAKE_XXX_PATH|
|
* |CMAKE_XXX_PATH|
|
||||||
* |CMAKE_XXX_MAC_PATH|
|
* |CMAKE_XXX_MAC_PATH|
|
||||||
|
|
||||||
3. Search the paths specified by the ``HINTS`` option.
|
4. Search the paths specified by the ``HINTS`` option.
|
||||||
These should be paths computed by system introspection, such as a
|
These should be paths computed by system introspection, such as a
|
||||||
hint provided by the location of another item already found.
|
hint provided by the location of another item already found.
|
||||||
Hard-coded guesses should be specified with the ``PATHS`` option.
|
Hard-coded guesses should be specified with the ``PATHS`` option.
|
||||||
|
|
||||||
4. Search the standard system environment variables.
|
5. Search the standard system environment variables.
|
||||||
This can be skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is an argument.
|
This can be skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is an argument.
|
||||||
|
|
||||||
* |SYSTEM_ENVIRONMENT_PATH_XXX|
|
* |SYSTEM_ENVIRONMENT_PATH_XXX|
|
||||||
|
|
||||||
5. Search cmake variables defined in the Platform files
|
6. Search cmake variables defined in the Platform files
|
||||||
for the current system. This can be skipped if ``NO_CMAKE_SYSTEM_PATH``
|
for the current system. This can be skipped if ``NO_CMAKE_SYSTEM_PATH``
|
||||||
is passed.
|
is passed.
|
||||||
|
|
||||||
@@ -108,7 +124,7 @@ If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows:
|
|||||||
* |CMAKE_SYSTEM_XXX_PATH|
|
* |CMAKE_SYSTEM_XXX_PATH|
|
||||||
* |CMAKE_SYSTEM_XXX_MAC_PATH|
|
* |CMAKE_SYSTEM_XXX_MAC_PATH|
|
||||||
|
|
||||||
6. Search the paths specified by the PATHS option
|
7. Search the paths specified by the PATHS option
|
||||||
or in the short-hand version of the command.
|
or in the short-hand version of the command.
|
||||||
These are typically hard-coded guesses.
|
These are typically hard-coded guesses.
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ find_file
|
|||||||
.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/include``
|
.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/include``
|
||||||
.. |entry_XXX_SUBDIR| replace:: ``<entry>/include``
|
.. |entry_XXX_SUBDIR| replace:: ``<entry>/include``
|
||||||
|
|
||||||
|
.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
|
||||||
|
``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
|
||||||
|
is set, and |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
|
||||||
.. |CMAKE_PREFIX_PATH_XXX| replace::
|
.. |CMAKE_PREFIX_PATH_XXX| replace::
|
||||||
``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
|
``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
|
||||||
is set, and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
|
is set, and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ find_library
|
|||||||
.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/lib``
|
.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/lib``
|
||||||
.. |entry_XXX_SUBDIR| replace:: ``<entry>/lib``
|
.. |entry_XXX_SUBDIR| replace:: ``<entry>/lib``
|
||||||
|
|
||||||
|
.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
|
||||||
|
``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
|
||||||
|
and |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
|
||||||
.. |CMAKE_PREFIX_PATH_XXX| replace::
|
.. |CMAKE_PREFIX_PATH_XXX| replace::
|
||||||
``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
|
``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
|
||||||
and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
|
and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
|
||||||
|
|||||||
@@ -64,8 +64,9 @@ The complete Config mode command signature is::
|
|||||||
[PATHS path1 [path2 ... ]]
|
[PATHS path1 [path2 ... ]]
|
||||||
[PATH_SUFFIXES suffix1 [suffix2 ...]]
|
[PATH_SUFFIXES suffix1 [suffix2 ...]]
|
||||||
[NO_DEFAULT_PATH]
|
[NO_DEFAULT_PATH]
|
||||||
[NO_CMAKE_ENVIRONMENT_PATH]
|
[NO_PACAKGE_ROOT_PATH]
|
||||||
[NO_CMAKE_PATH]
|
[NO_CMAKE_PATH]
|
||||||
|
[NO_CMAKE_ENVIRONMENT_PATH]
|
||||||
[NO_SYSTEM_ENVIRONMENT_PATH]
|
[NO_SYSTEM_ENVIRONMENT_PATH]
|
||||||
[NO_CMAKE_PACKAGE_REGISTRY]
|
[NO_CMAKE_PACKAGE_REGISTRY]
|
||||||
[NO_CMAKE_BUILDS_PATH] # Deprecated; does nothing.
|
[NO_CMAKE_BUILDS_PATH] # Deprecated; does nothing.
|
||||||
@@ -249,7 +250,13 @@ The set of installation prefixes is constructed using the following
|
|||||||
steps. If ``NO_DEFAULT_PATH`` is specified all ``NO_*`` options are
|
steps. If ``NO_DEFAULT_PATH`` is specified all ``NO_*`` options are
|
||||||
enabled.
|
enabled.
|
||||||
|
|
||||||
1. Search paths specified in cmake-specific cache variables. These
|
1. Search paths specified in the ``PackageName_ROOT`` CMake and environment
|
||||||
|
variables. The package root variables are maintained as a stack so if
|
||||||
|
called from within a find module, root paths from the parent's find
|
||||||
|
module will also be searched after paths for the current package. This can
|
||||||
|
be skipped if ``NO_PACKAGE_ROOT_PATH`` is passed.
|
||||||
|
|
||||||
|
2. Search paths specified in cmake-specific cache variables. These
|
||||||
are intended to be used on the command line with a ``-DVAR=value``.
|
are intended to be used on the command line with a ``-DVAR=value``.
|
||||||
The values are interpreted as :ref:`;-lists <CMake Language Lists>`.
|
The values are interpreted as :ref:`;-lists <CMake Language Lists>`.
|
||||||
This can be skipped if ``NO_CMAKE_PATH`` is passed::
|
This can be skipped if ``NO_CMAKE_PATH`` is passed::
|
||||||
@@ -258,7 +265,7 @@ enabled.
|
|||||||
CMAKE_FRAMEWORK_PATH
|
CMAKE_FRAMEWORK_PATH
|
||||||
CMAKE_APPBUNDLE_PATH
|
CMAKE_APPBUNDLE_PATH
|
||||||
|
|
||||||
2. Search paths specified in cmake-specific environment variables.
|
3. Search paths specified in cmake-specific environment variables.
|
||||||
These are intended to be set in the user's shell configuration,
|
These are intended to be set in the user's shell configuration,
|
||||||
and therefore use the host's native path separator
|
and therefore use the host's native path separator
|
||||||
(``;`` on Windows and ``:`` on UNIX).
|
(``;`` on Windows and ``:`` on UNIX).
|
||||||
@@ -269,26 +276,26 @@ enabled.
|
|||||||
CMAKE_FRAMEWORK_PATH
|
CMAKE_FRAMEWORK_PATH
|
||||||
CMAKE_APPBUNDLE_PATH
|
CMAKE_APPBUNDLE_PATH
|
||||||
|
|
||||||
3. Search paths specified by the ``HINTS`` option. These should be paths
|
4. Search paths specified by the ``HINTS`` option. These should be paths
|
||||||
computed by system introspection, such as a hint provided by the
|
computed by system introspection, such as a hint provided by the
|
||||||
location of another item already found. Hard-coded guesses should
|
location of another item already found. Hard-coded guesses should
|
||||||
be specified with the ``PATHS`` option.
|
be specified with the ``PATHS`` option.
|
||||||
|
|
||||||
4. Search the standard system environment variables. This can be
|
5. Search the standard system environment variables. This can be
|
||||||
skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is passed. Path entries
|
skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is passed. Path entries
|
||||||
ending in ``/bin`` or ``/sbin`` are automatically converted to their
|
ending in ``/bin`` or ``/sbin`` are automatically converted to their
|
||||||
parent directories::
|
parent directories::
|
||||||
|
|
||||||
PATH
|
PATH
|
||||||
|
|
||||||
5. Search paths stored in the CMake :ref:`User Package Registry`.
|
6. Search paths stored in the CMake :ref:`User Package Registry`.
|
||||||
This can be skipped if ``NO_CMAKE_PACKAGE_REGISTRY`` is passed or by
|
This can be skipped if ``NO_CMAKE_PACKAGE_REGISTRY`` is passed or by
|
||||||
setting the :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
|
setting the :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
|
||||||
to ``TRUE``.
|
to ``TRUE``.
|
||||||
See the :manual:`cmake-packages(7)` manual for details on the user
|
See the :manual:`cmake-packages(7)` manual for details on the user
|
||||||
package registry.
|
package registry.
|
||||||
|
|
||||||
6. Search cmake variables defined in the Platform files for the
|
7. Search cmake variables defined in the Platform files for the
|
||||||
current system. This can be skipped if ``NO_CMAKE_SYSTEM_PATH`` is
|
current system. This can be skipped if ``NO_CMAKE_SYSTEM_PATH`` is
|
||||||
passed::
|
passed::
|
||||||
|
|
||||||
@@ -296,14 +303,14 @@ enabled.
|
|||||||
CMAKE_SYSTEM_FRAMEWORK_PATH
|
CMAKE_SYSTEM_FRAMEWORK_PATH
|
||||||
CMAKE_SYSTEM_APPBUNDLE_PATH
|
CMAKE_SYSTEM_APPBUNDLE_PATH
|
||||||
|
|
||||||
7. Search paths stored in the CMake :ref:`System Package Registry`.
|
8. Search paths stored in the CMake :ref:`System Package Registry`.
|
||||||
This can be skipped if ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` is passed
|
This can be skipped if ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` is passed
|
||||||
or by setting the
|
or by setting the
|
||||||
:variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` to ``TRUE``.
|
:variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` to ``TRUE``.
|
||||||
See the :manual:`cmake-packages(7)` manual for details on the system
|
See the :manual:`cmake-packages(7)` manual for details on the system
|
||||||
package registry.
|
package registry.
|
||||||
|
|
||||||
8. Search paths specified by the ``PATHS`` option. These are typically
|
9. Search paths specified by the ``PATHS`` option. These are typically
|
||||||
hard-coded guesses.
|
hard-coded guesses.
|
||||||
|
|
||||||
.. |FIND_XXX| replace:: find_package
|
.. |FIND_XXX| replace:: find_package
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ find_path
|
|||||||
.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/include``
|
.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/include``
|
||||||
.. |entry_XXX_SUBDIR| replace:: ``<entry>/include``
|
.. |entry_XXX_SUBDIR| replace:: ``<entry>/include``
|
||||||
|
|
||||||
|
.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
|
||||||
|
``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
|
||||||
|
is set, and |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
|
||||||
.. |CMAKE_PREFIX_PATH_XXX| replace::
|
.. |CMAKE_PREFIX_PATH_XXX| replace::
|
||||||
``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
|
``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
|
||||||
is set, and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
|
is set, and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ find_program
|
|||||||
.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/[s]bin``
|
.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/[s]bin``
|
||||||
.. |entry_XXX_SUBDIR| replace:: ``<entry>/[s]bin``
|
.. |entry_XXX_SUBDIR| replace:: ``<entry>/[s]bin``
|
||||||
|
|
||||||
|
.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
|
||||||
|
|FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
|
||||||
.. |CMAKE_PREFIX_PATH_XXX| replace::
|
.. |CMAKE_PREFIX_PATH_XXX| replace::
|
||||||
|CMAKE_PREFIX_PATH_XXX_SUBDIR|
|
|CMAKE_PREFIX_PATH_XXX_SUBDIR|
|
||||||
.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_PROGRAM_PATH`
|
.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_PROGRAM_PATH`
|
||||||
|
|||||||
8
Help/release/dev/PackageRoot-search-path-group.rst
Normal file
8
Help/release/dev/PackageRoot-search-path-group.rst
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
PackageRoot search path group
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
* All ``find_`` commands now have a `PACKAGE_ROOT` search path group that is
|
||||||
|
first in the search heuristics. If the ``find_`` command is called from
|
||||||
|
inside a find module, then the CMake and environment variables
|
||||||
|
``<PackageName>_ROOT`` are used as prefixes and are the first set of paths
|
||||||
|
that are searched.
|
||||||
Reference in New Issue
Block a user