瀏覽代碼

Merge branch 'add_CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY' into release-3.16

Merge-request: !3968
Craig Scott 6 年之前
父節點
當前提交
c831e409a5

+ 3 - 1
Help/command/find_package.rst

@@ -353,8 +353,10 @@ enabled.
 
 
 8. 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_USE_SYSTEM_PACKAGE_REGISTRY`
+   variable to ``FALSE`` or the deprecated variable
    :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.
 
 

+ 1 - 0
Help/manual/cmake-variables.7.rst

@@ -191,6 +191,7 @@ Variables that Change Behavior
    /variable/CMAKE_FIND_USE_PACKAGE_REGISTRY
    /variable/CMAKE_FIND_USE_PACKAGE_REGISTRY
    /variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH
    /variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH
    /variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
    /variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
+   /variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY
    /variable/CMAKE_FRAMEWORK_PATH
    /variable/CMAKE_FRAMEWORK_PATH
    /variable/CMAKE_IGNORE_PATH
    /variable/CMAKE_IGNORE_PATH
    /variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE
    /variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE

+ 3 - 1
Help/release/3.16.rst

@@ -95,7 +95,9 @@ Commands
 
 
 * The :command:`find_package` command has learned to check the
 * The :command:`find_package` command has learned to check the
   :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable to control the default
   :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable to control the default
-  behavior of searching the CMake user package registry.
+  behavior of searching the CMake user package registry and to check the
+  :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` variable to control
+  the default behavior of searching the CMake system package registry.
 
 
 * The :command:`message` command learned indentation control with the new
 * The :command:`message` command learned indentation control with the new
   :variable:`CMAKE_MESSAGE_INDENT` variable.
   :variable:`CMAKE_MESSAGE_INDENT` variable.

+ 13 - 2
Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst

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

+ 1 - 0
Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst

@@ -19,5 +19,6 @@ take precedence over this variable.
 See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
 See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
 :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
 :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
 :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
 and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
 and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.

+ 1 - 0
Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst

@@ -19,5 +19,6 @@ take precedence over this variable.
 See also the :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
 See also the :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
 :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
 :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
 :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
 and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
 and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.

+ 1 - 0
Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst

@@ -19,5 +19,6 @@ take precedence over this variable.
 See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
 See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
 :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
 :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
 and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
 and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.

+ 1 - 0
Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst

@@ -26,4 +26,5 @@ See also :ref:`Disabling the Package Registry` and the
 :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
 :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
 and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
 and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.

+ 1 - 0
Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst

@@ -18,4 +18,5 @@ See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
 :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
 and :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variables.
 and :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variables.

+ 2 - 1
Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst

@@ -20,4 +20,5 @@ See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
 :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
 :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
 :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
-and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
+:variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH`,
+and :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` variables.

+ 31 - 0
Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst

@@ -0,0 +1,31 @@
+CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY
+--------------------------------------
+
+Controls searching the :ref:`System 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_SYSTEM_PACKAGE_REGISTRY` variable.
+If that is also not set, then :command:`find_package()` will use the
+:ref:`System Package Registry` unless the ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY``
+option is provided.
+
+This variable takes precedence over
+:variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` when both are set.
+
+In some cases, for example to locate only user specific installations, it
+is not desirable to use the :ref:`System Package Registry` when searching
+for packages. If the ``CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY``
+variable is ``FALSE``, all the :command:`find_package` commands will skip
+the :ref:`System Package Registry` as if they were called with the
+``NO_CMAKE_SYSTEM_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`,
+:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
+and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.

+ 7 - 1
Source/cmFindPackageCommand.cxx

@@ -201,7 +201,13 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args)
   }
   }
 
 
   // Check if System Package Registry should be disabled
   // Check if System Package Registry should be disabled
-  if (this->Makefile->IsOn("CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY")) {
+  // The `CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` has
+  // priority over the deprecated CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
+  if (const char* def = this->Makefile->GetDefinition(
+        "CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY")) {
+    this->NoSystemRegistry = !cmIsOn(def);
+  } else if (this->Makefile->IsOn(
+               "CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY")) {
     this->NoSystemRegistry = true;
     this->NoSystemRegistry = true;
   }
   }