Merge topic 'add_cmake_find_use_package_registry'

447a96f590 vim: Update cmake.vim to include the CMAKE_FIND_USE variables
1d00ba9ccf Find: find_package prefers variable CMAKE_FIND_USE_REGISTRY
704e3a2ca8 Find: Correct spelling and layout issues in CMAKE_FIND_USE_ docs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3487
This commit is contained in:
Craig Scott
2019-07-09 23:32:40 +00:00
committed by Kitware Robot
19 changed files with 194 additions and 51 deletions

View File

@@ -948,6 +948,12 @@ syn keyword cmakeVariable contained
\ CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
\ CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
\ CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
\ CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH
\ CMAKE_FIND_USE_CMAKE_PATH
\ CMAKE_FIND_USE_CMAKE_SYSTEM_PATH
\ CMAKE_FIND_USE_PACKAGE_REGISTRY
\ CMAKE_FIND_USE_PACKAGE_ROOT_PATH
\ CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
\ CMAKE_FOLDER
\ CMAKE_FRAMEWORK
\ CMAKE_FRAMEWORK_PATH

View File

@@ -90,7 +90,7 @@ If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows:
i.e. ``<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_PACAKGE_ROOT_PATH` to ``FALSE``.
the :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` to ``FALSE``.
See policy :policy:`CMP0074`.
* |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX|

View File

@@ -330,8 +330,10 @@ enabled.
6. Search paths stored in the CMake :ref:`User Package Registry`.
This can be skipped if ``NO_CMAKE_PACKAGE_REGISTRY`` is passed or by
setting the :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
to ``TRUE``.
setting the variable :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`
to ``FALSE`` or the deprecated variable
:variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` to ``TRUE``.
See the :manual:`cmake-packages(7)` manual for details on the user
package registry.

View File

@@ -654,8 +654,13 @@ allows one to disable them using the following variables:
:command:`export(PACKAGE)` populates the user package registry unless
the :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable explicitly
disables it.
* :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` disables the
User Package Registry in all the :command:`find_package` calls.
* :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` disables the
User Package Registry in all the :command:`find_package` calls when
set to ``FALSE``.
* Deprecated :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` disables the
User Package Registry in all the :command:`find_package` calls when set
to ``TRUE``. This variable is ignored when
:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` has been set.
* :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` disables
the System Package Registry in all the :command:`find_package` calls.

View File

@@ -184,7 +184,8 @@ Variables that Change Behavior
/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH
/variable/CMAKE_FIND_USE_CMAKE_PATH
/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH
/variable/CMAKE_FIND_USE_PACAKGE_ROOT_PATH
/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY
/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH
/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
/variable/CMAKE_FRAMEWORK_PATH
/variable/CMAKE_IGNORE_PATH

View File

@@ -0,0 +1,11 @@
add_cmake_find_use_package_registry
-----------------------------------
* The :command:`find_package` command has learned to check the following
variables to control searching
* :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` - Controls the searching the
cmake user registry.
* The :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` has been deprecated.
Instead use :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`

View File

@@ -4,8 +4,18 @@ global-controls-over-find-locations
* The :command:`find_file`, :command:`find_library`, :command:`find_path`,
and :command:`find_program` commands have learned to check the following
variables to control searching
* :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` - Controls the searching the cmake-specific environment variables.
* :variable:`CMAKE_FIND_USE_CMAKE_PATH` - Controls the searching the cmake-specific cache variables.
* :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH` - Controls the searching cmake platform specific variables.
* :variable:`CMAKE_FIND_USE_PACAKGE_ROOT_PATH` - Controls the searching of :variable:`<PackageName>_ROOT` variables.
* :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` - Controls the searching the standard system environment variables.
* :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` - Controls the searching
the cmake-specific environment variables.
* :variable:`CMAKE_FIND_USE_CMAKE_PATH` - Controls the searching the
cmake-specific cache variables.
* :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH` - Controls the searching
cmake platform specific variables.
* :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` - Controls the searching of
:variable:`<PackageName>_ROOT` variables.
* :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` - Controls the searching
the standard system environment variables.

View File

@@ -1,12 +1,23 @@
CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
--------------------------------------
Skip :ref:`User Package Registry` in :command:`find_package` calls.
.. deprecated:: 3.16
Use the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable instead.
By default this variable is not set. If neither
:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` nor
``CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`` is set, then
:command:`find_package()` will use the `User Package Registry` unless the
`NO_CMAKE_PACKAGE_REGISTRY` option is provided.
``CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`` is ignored if
:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` is set.
In some cases, for example to locate only system wide installations, it
is not desirable to use the :ref:`User Package Registry` when searching
for packages. If the :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
variable is enabled, all the :command:`find_package` commands will skip
variable is ``TRUE``, all the :command:`find_package` commands will skip
the :ref:`User Package Registry` as if they were called with the
``NO_CMAKE_PACKAGE_REGISTRY`` argument.

View File

@@ -1,11 +1,18 @@
CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH
-------------------------------------
Controls the searching the cmake-specific environment variables by the :command:`find_program`,
:command:`find_library`, :command:`find_file`, :command:`find_package`, and :command:`find_path`.
Controls the searching the cmake-specific environment variables by the
:command:`find_program`, :command:`find_library`, :command:`find_file`,
and :command:`find_path` commands.
This is useful in cross-compiling environments.
By default this this is set to ``TRUE``.
By default this variable is not set, which is equivalent to it having
a value of ``TRUE``. Explicit options given to the :command:`find_program`,
:command:`find_library`, :command:`find_file`, and :command:`find_path`
commands take precedence over this variable.
See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`, :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`, and :variable:`CMAKE_FIND_USE_PACAKGE_ROOT_PATH` variables.
See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.

View File

@@ -1,11 +1,18 @@
CMAKE_FIND_USE_CMAKE_PATH
-------------------------
Controls the searching the cmake-specific cache variables by the :command:`find_program`,
:command:`find_library`, :command:`find_file`, :command:`find_package`, and :command:`find_path`.
Controls the searching the cmake-specific cache variables by the
:command:`find_program`, :command:`find_library`, :command:`find_file`,
and :command:`find_path` commands.
This is useful in cross-compiling environments.
By default this this is set to ``TRUE``.
By default this variable is not set, which is equivalent to it having
a value of ``TRUE``. Explicit options given to the :command:`find_program`,
:command:`find_library`, :command:`find_file`, and :command:`find_path`
commands take precedence over this variable.
See also the :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`, :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`, and :variable:`CMAKE_FIND_USE_PACAKGE_ROOT_PATH` variables.
See also the :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.

View File

@@ -1,11 +1,18 @@
CMAKE_FIND_USE_CMAKE_SYSTEM_PATH
--------------------------------
Controls the searching cmake platform specific variables by the :command:`find_program`,
:command:`find_library`, :command:`find_file`, :command:`find_package`, and :command:`find_path`.
Controls the searching cmake platform specific variables by the
:command:`find_program`, :command:`find_library`, :command:`find_file`,
and :command:`find_path` commands.
This is useful in cross-compiling environments.
By default this this is set to ``TRUE``.
By default this variable is not set, which is equivalent to it having
a value of ``TRUE``. Explicit options given to the :command:`find_program`,
:command:`find_library`, :command:`find_file`, and :command:`find_path`
commands take precedence over this variable.
See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`, :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`, and :variable:`CMAKE_FIND_USE_PACAKGE_ROOT_PATH` variables.
See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.

View File

@@ -1,11 +0,0 @@
CMAKE_FIND_USE_PACAKGE_ROOT_PATH
--------------------------------
Controls the searching of :variable:`<PackageName>_ROOT` variables by the :command:`find_program`,
:command:`find_library`, :command:`find_file`, :command:`find_package`, and :command:`find_path`.
This is useful in cross-compiling environments.
By default this this is set to ``TRUE``.
See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`, :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`, and :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` variables.

View File

@@ -0,0 +1,29 @@
CMAKE_FIND_USE_PACKAGE_REGISTRY
-------------------------------
Controls the searching the :ref:`User Package Registry` by the :command:`find_package`
command.
By default this variable is not set and the behavior will fall back
to that determined by the deprecated :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
variable. If that is also not set, then `find_package()` will use the
`User Package Registry` unless the `NO_CMAKE_PACKAGE_REGISTRY` option
is provided.
This variable takes precedence over :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
when both are set.
In some cases, for example to locate only system wide installations, it
is not desirable to use the :ref:`User Package Registry` when searching
for packages. If the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`
variable is ``FALSE``, all the :command:`find_package` commands will skip
the :ref:`User Package Registry` as if they were called with the
``NO_CMAKE_PACKAGE_REGISTRY`` argument.
See also :ref:`Disabling the Package Registry`.
See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.

View File

@@ -0,0 +1,18 @@
CMAKE_FIND_USE_PACKAGE_ROOT_PATH
--------------------------------
Controls the searching of :variable:`<PackageName>_ROOT` variables by the
:command:`find_program`, :command:`find_library`, :command:`find_file`,
and :command:`find_path` commands.
This is useful in cross-compiling environments.
By default this variable is not set, which is equivalent to it having
a value of ``TRUE``. Explicit options given to the :command:`find_program`,
:command:`find_library`, :command:`find_file`, and :command:`find_path`
commands take precedence over this variable.
See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
and :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variables.

View File

@@ -1,11 +1,18 @@
CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
--------------------------------------
Controls the searching the standard system environment variables by the :command:`find_program`,
:command:`find_library`, :command:`find_file`, :command:`find_package`, and :command:`find_path`.
Controls the searching the standard system environment variables by the
:command:`find_program`, :command:`find_library`, :command:`find_file`,
and :command:`find_path` commands.
This is useful in cross-compiling environments.
By default this this is set to ``TRUE``.
By default this variable is not set, which is equivalent to it having
a value of ``TRUE``. Explicit options given to the :command:`find_program`,
:command:`find_library`, :command:`find_file`, and :command:`find_path`
commands take precedence over this variable.
See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`, :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`, and :variable:`CMAKE_FIND_USE_PACAKGE_ROOT_PATH` variables.
See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.

View File

@@ -148,7 +148,7 @@ void cmFindCommon::SelectDefaultMacMode()
void cmFindCommon::SelectDefaultSearchModes()
{
const std::array<std::pair<bool&, std::string>, 5> search_paths = {
{ { this->NoPackageRootPath, "CMAKE_FIND_USE_PACAKGE_ROOT_PATH" },
{ { this->NoPackageRootPath, "CMAKE_FIND_USE_PACKAGE_ROOT_PATH" },
{ this->NoCMakePath, "CMAKE_FIND_USE_CMAKE_PATH" },
{ this->NoCMakeEnvironmentPath,
"CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH" },

View File

@@ -188,7 +188,12 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args,
}
// Check if User Package Registry should be disabled
if (this->Makefile->IsOn("CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY")) {
// The `CMAKE_FIND_USE_PACKAGE_REGISTRY` has
// priority over the deprecated CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
if (const char* def =
this->Makefile->GetDefinition("CMAKE_FIND_USE_PACKAGE_REGISTRY")) {
this->NoUserRegistry = !cmSystemTools::IsOn(def);
} else if (this->Makefile->IsOn("CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY")) {
this->NoUserRegistry = true;
}

View File

@@ -391,16 +391,44 @@ try_compile(EXPORTER_COMPILED
message(STATUS "Searching for export(PACKAGE) test project")
set(CMakeTestExportPackage_DIR "" CACHE FILEPATH
"Wipe out find results for testing." FORCE)
find_package(CMakeTestExportPackage 1.${version} EXACT REQUIRED)
message(STATUS "Searching for export(PACKAGE) test project with CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=TRUE")
message(STATUS "Searching for export(PACKAGE) with CMAKE_FIND_USE_PACKAGE_REGISTRY=TRUE")
set(CMAKE_FIND_USE_PACKAGE_REGISTRY TRUE)
find_package(CMakeTestExportPackage 1.${version} EXACT REQUIRED)
if(NOT CMakeTestExportPackage_FOUND)
message(SEND_ERROR "CMakeTestExportPackage should be FOUND!")
endif()
unset(CMAKE_FIND_USE_PACKAGE_REGISTRY)
message(STATUS "Searching for export(PACKAGE) with CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=FALSE")
set(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY FALSE)
find_package(CMakeTestExportPackage 1.${version} EXACT REQUIRED)
if(NOT CMakeTestExportPackage_FOUND)
message(SEND_ERROR "CMakeTestExportPackage should be FOUND!")
endif()
unset(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY)
message(STATUS "Searching for export(PACKAGE) with CMAKE_FIND_USE_PACKAGE_REGISTRY=TRUE and CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=TRUE")
set(CMAKE_FIND_USE_PACKAGE_REGISTRY TRUE)
set(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY TRUE)
set(CMakeTestExportPackage_DIR FALSE)
find_package(CMakeTestExportPackage 1.${version} EXACT REQUIRED)
if(NOT CMakeTestExportPackage_FOUND)
message(SEND_ERROR "CMakeTestExportPackage should be FOUND!")
endif()
unset(CMAKE_FIND_USE_PACKAGE_REGISTRY)
unset(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY)
message(STATUS "Searching for export(PACKAGE) with CMAKE_FIND_USE_PACKAGE_REGISTRY=FALSE and CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=FALSE")
set(CMAKE_FIND_USE_PACKAGE_REGISTRY FALSE)
set(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY FALSE)
set(CMakeTestExportPackage_DIR "" CACHE FILEPATH
"Wipe out find results for testing." FORCE)
find_package(CMakeTestExportPackage 1.${version} EXACT QUIET)
find_package(CMakeTestExportPackage 1.${version} EXACT QUIET)
if(CMakeTestExportPackage_FOUND)
message(SEND_ERROR "CMakeTestExportPackage should not be FOUND!")
message(SEND_ERROR "CMakeTestExportPackage should be not FOUND!")
endif()
unset(CMAKE_FIND_USE_PACKAGE_REGISTRY)
unset(CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY)
message(STATUS "Remove export(PACKAGE) test project")

View File

@@ -46,7 +46,7 @@ set(CMAKE_PREFIX_PATH ".")
set(CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH OFF)
set(CMAKE_FIND_USE_CMAKE_PATH OFF)
set(CMAKE_FIND_USE_CMAKE_SYSTEM_PATH OFF)
set(CMAKE_FIND_USE_PACAKGE_ROOT_PATH OFF)
set(CMAKE_FIND_USE_PACKAGE_ROOT_PATH OFF)
set(CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH OFF)
find_program(PROG_CWD
NAMES testCWD