summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-09-20 13:25:36 (GMT)
committerKitware Robot <kwrobot@kitware.com>2023-09-20 13:25:56 (GMT)
commit59f6892ab770c525bcadb30453b182412944aade (patch)
tree847e089b732ffb5139efa7256b6001534047eeed /Modules
parentde7c036304728ccf5bc8f365439ad2bfd84acea7 (diff)
parente0d00b9218bc458ae6cdd5e7ce514c0ba7b4dec4 (diff)
downloadCMake-59f6892ab770c525bcadb30453b182412944aade.zip
CMake-59f6892ab770c525bcadb30453b182412944aade.tar.gz
CMake-59f6892ab770c525bcadb30453b182412944aade.tar.bz2
Merge topic 'FindPkgConfig-override'
e0d00b9218 FindPkgConfig: Allow to override variables when calling pkg_get_variable Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !8808
Diffstat (limited to 'Modules')
-rw-r--r--Modules/FindPkgConfig.cmake25
1 files changed, 23 insertions, 2 deletions
diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake
index 6e8b784..5466e79 100644
--- a/Modules/FindPkgConfig.cmake
+++ b/Modules/FindPkgConfig.cmake
@@ -923,11 +923,20 @@ endmacro()
.. code-block:: cmake
- pkg_get_variable(<resultVar> <moduleName> <varName>)
+ pkg_get_variable(<resultVar> <moduleName> <varName>
+ [DEFINE_VARIABLES <key>=<value>...])
If ``pkg-config`` returns multiple values for the specified variable,
``resultVar`` will contain a :ref:`;-list <CMake Language Lists>`.
+ Options:
+
+ ``DEFINE_VARIABLES <key>=<value>...``
+ .. versionadded:: 3.28
+
+ Specify key-value pairs to redefine variables affecting the variable
+ retrieved with ``pkg-config``.
+
For example:
.. code-block:: cmake
@@ -935,8 +944,20 @@ endmacro()
pkg_get_variable(GI_GIRDIR gobject-introspection-1.0 girdir)
#]========================================]
function (pkg_get_variable result pkg variable)
+ set(_multiValueArgs DEFINE_VARIABLES)
+
+ CMAKE_PARSE_ARGUMENTS(_parsedArguments "" "" "${_multiValueArgs}" ${ARGN})
+ set(defined_variables )
+ foreach(_def_var ${_parsedArguments_DEFINE_VARIABLES})
+ if(NOT _def_var MATCHES "^.+=.*$")
+ message(FATAL_ERROR "DEFINE_VARIABLES should contain arguments in the form of key=value")
+ endif()
+
+ list(APPEND defined_variables "--define-variable=${_def_var}")
+ endforeach()
+
_pkg_set_path_internal()
- _pkgconfig_invoke("${pkg}" "prefix" "result" "" "--variable=${variable}")
+ _pkgconfig_invoke("${pkg}" "prefix" "result" "" "--variable=${variable}" ${defined_variables})
set("${result}"
"${prefix_result}"
PARENT_SCOPE)