| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| # file Copyright.txt or https://cmake.org/licensing for details. |
| |
| #[=======================================================================[.rst: |
| FindPackageMessage |
| ------------------ |
| |
| .. code-block:: cmake |
| |
| find_package_message(<name> "message for user" "find result details") |
| |
| 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. |
| |
| Example: |
| |
| .. code-block:: cmake |
| |
| if(X11_FOUND) |
| find_package_message(X11 "Found X11: ${X11_X11_LIB}" |
| "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]") |
| else() |
| ... |
| endif() |
| #]=======================================================================] |
| |
| function(find_package_message pkg msg details) |
| # Avoid printing a message repeatedly for the same find result. |
| if(NOT ${pkg}_FIND_QUIETLY) |
| string(REPLACE "\n" "" details "${details}") |
| set(DETAILS_VAR FIND_PACKAGE_MESSAGE_DETAILS_${pkg}) |
| if(NOT "${details}" STREQUAL "${${DETAILS_VAR}}") |
| # The message has not yet been printed. |
| message(STATUS "${msg}") |
| |
| # Save the find details in the cache to avoid printing the same |
| # message again. |
| set("${DETAILS_VAR}" "${details}" |
| CACHE INTERNAL "Details about finding ${pkg}") |
| endif() |
| endif() |
| endfunction() |