diff options
author | Brad King <brad.king@kitware.com> | 2023-09-20 13:25:36 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2023-09-20 13:25:56 (GMT) |
commit | 59f6892ab770c525bcadb30453b182412944aade (patch) | |
tree | 847e089b732ffb5139efa7256b6001534047eeed /Modules | |
parent | de7c036304728ccf5bc8f365439ad2bfd84acea7 (diff) | |
parent | e0d00b9218bc458ae6cdd5e7ce514c0ba7b4dec4 (diff) | |
download | CMake-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.cmake | 25 |
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) |