FindPackageMessage: Update documentation

- Documentation updated.
- This module is internally already used by the
  FindPackageHandleStandardArgs module and can conflict when used again
  in the find module due to the same <PackageName> used, or when QUIET
  option is used. For this reason, the example is changed and explained
  at the bottom to use find_package_handle_standard_args().
- Lower-case style function used in FindPackageHandleStandardArgs.
This commit is contained in:
Peter Kokot 2025-03-08 06:03:49 +01:00
parent 24a1a7ac5d
commit ee398e8946
No known key found for this signature in database
GPG Key ID: A94800907AA79B36
2 changed files with 62 additions and 16 deletions

View File

@ -569,7 +569,7 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
# print the result:
if(${_NAME}_FOUND)
FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}")
find_package_message(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}")
else()
if(FPHSA_CONFIG_MODE)

View File

@ -5,29 +5,75 @@
FindPackageMessage
------------------
.. code-block:: cmake
This module is intended to be used in
:ref:`FindXXX.cmake modules <Find Modules>` and provides a function for printing
find result messages.
find_package_message(<name> "message for user" "find result details")
.. command:: find_package_message
This function is intended to be used in FindXXX.cmake modules files.
It will print a message once for each unique find result. This is
useful for telling the user where a package was found. The first
argument specifies the name (XXX) of the package. The second argument
specifies the message to display. The third argument lists details
about the find result so that if they change the message will be
displayed again. The macro also obeys the QUIET argument to the
find_package command.
.. code-block:: cmake
Example:
find_package_message(<PackageName> <message> <details>)
Prints a ``<message>`` once for each unique find result to inform the user
which package was found and where.
``<PackageName>``
The name of the package (for example, as used in the
``Find<PackageName>.cmake`` module filename).
``<message>``
The message string to display.
``<details>``
A unique identifier for tracking message display. The ``<message>`` is
printed only once per distinct ``<details>`` value. If ``<details>`` string
changes in a subsequent configuration phase, the message will be displayed
again.
If :command:`find_package` was called with the ``QUIET`` option, the
``<message>`` is not printed.
Examples
^^^^^^^^
Printing result message in a find module:
.. code-block:: cmake
:caption: FindFoo.cmake
if(X11_FOUND)
find_package_message(X11 "Found X11: ${X11_X11_LIB}"
"[${X11_X11_LIB}][${X11_INCLUDE_DIR}]")
find_library(Foo_LIBRARY foo)
find_path(Foo_INCLUDE_DIR foo.h)
# ...
include(FindPackageMessage)
if(Foo_FOUND)
find_package_message(
Foo
"Found Foo: ${Foo_LIBRARY}"
"[${Foo_LIBRARY}][${Foo_INCLUDE_DIR}]"
)
else()
...
# ...
endif()
When writing standard :ref:`Find modules <Find Modules>`, use the
:module:`find_package_handle_standard_args() <FindPackageHandleStandardArgs>`
function, which automatically prints the find result message:
.. code-block:: cmake
:caption: FindFoo.cmake
# ...
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
Foo
REQUIRED_VARS Foo_LIBRARY Foo_INCLUDE_DIR
)
#]=======================================================================]
function(find_package_message pkg msg details)