|
|
|
CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>
|
|
|
|
----------------------------------------
|
|
|
|
|
|
|
|
.. versionadded:: 3.22
|
|
|
|
|
|
|
|
Variable for making :command:`find_package` call ``REQUIRED``.
|
|
|
|
|
|
|
|
Every non-``REQUIRED`` :command:`find_package` call in a project can be
|
|
|
|
turned into ``REQUIRED`` by setting the variable
|
|
|
|
``CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>`` to ``TRUE``.
|
|
|
|
This can be used to assert assumptions about build environment and to
|
|
|
|
ensure the build will fail early if they do not hold.
|
|
|
|
|
|
|
|
Note that setting this variable to true breaks some commonly used patterns.
|
|
|
|
Multiple calls to :command:`find_package` are sometimes used to obtain a
|
|
|
|
different search order to the default.
|
|
|
|
For example, projects can force checking a known path for a particular
|
|
|
|
package first before searching any of the other default search paths:
|
|
|
|
|
|
|
|
.. code:: cmake
|
|
|
|
|
|
|
|
find_package(something PATHS /some/local/path NO_DEFAULT_PATH)
|
|
|
|
find_package(something)
|
|
|
|
|
|
|
|
In the above, the first call looks for the ``something`` package in a specific
|
|
|
|
directory. If ``CMAKE_REQUIRE_FIND_PACKAGE_something`` is set to true, then
|
|
|
|
this first call must succeed, otherwise a fatal error occurs. The second call
|
|
|
|
never gets a chance to provide a fall-back to using the default search
|
|
|
|
locations.
|
|
|
|
|
|
|
|
A similar pattern is used even by some of CMake's own Find modules to search
|
|
|
|
for a config package first:
|
|
|
|
|
|
|
|
.. code:: cmake
|
|
|
|
|
|
|
|
find_package(something CONFIG QUIET)
|
|
|
|
if(NOT something_FOUND)
|
|
|
|
# Fall back to searching using typical Find module logic...
|
|
|
|
endif()
|
|
|
|
|
|
|
|
Again, if ``CMAKE_REQUIRE_FIND_PACKAGE_something`` is true, the first call
|
|
|
|
must succeed. It effectively means a config package must be found for the
|
|
|
|
dependency, and the Find module logic is never used.
|
|
|
|
|
|
|
|
See also the :variable:`CMAKE_DISABLE_FIND_PACKAGE_<PackageName>` variable.
|