mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-17 12:40:40 -06:00
FindPkgConfig: Recheck pkg-config on parameter change.
Currently, once pkg_check_modules succeeds, it will never call _pkg_check_modules_internal again. That means that if the parameters to pkg_check_modules are changed, cmake will be called to reconfigure, but nothing will change. This change is to store the full string of arguments to pkg_check_modules and override the FOUND optimization so that the arguments are reevaluated when modified.
This commit is contained in:
7
Help/release/dev/pkg-config-recheck.rst
Normal file
7
Help/release/dev/pkg-config-recheck.rst
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
pkg-config-recheck
|
||||||
|
------------------
|
||||||
|
|
||||||
|
* Calls to the :module:`FindPkgConfig` module :command:`pkg_check_modules`
|
||||||
|
command following a successful call learned to re-evaluate the cached values
|
||||||
|
for a given prefix after changes to the parameters to the command for that
|
||||||
|
prefix.
|
||||||
@@ -585,10 +585,13 @@ endmacro()
|
|||||||
macro(pkg_check_modules _prefix _module0)
|
macro(pkg_check_modules _prefix _module0)
|
||||||
_pkgconfig_parse_options(_pkg_modules _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path _imp_target "${_module0}" ${ARGN})
|
_pkgconfig_parse_options(_pkg_modules _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path _imp_target "${_module0}" ${ARGN})
|
||||||
# check cached value
|
# check cached value
|
||||||
if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
|
if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND OR NOT "${__pkg_config_arguments_${_prefix}}" STREQUAL "${_module0};${ARGN}")
|
||||||
_pkg_check_modules_internal("${_pkg_is_required}" "${_pkg_is_silent}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} "${_prefix}" ${_pkg_modules})
|
_pkg_check_modules_internal("${_pkg_is_required}" "${_pkg_is_silent}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} "${_prefix}" ${_pkg_modules})
|
||||||
|
|
||||||
_pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
|
_pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
|
||||||
|
if (${_prefix}_FOUND)
|
||||||
|
_pkgconfig_set(__pkg_config_arguments_${_prefix} "${_module0};${ARGN}")
|
||||||
|
endif()
|
||||||
elseif (${_prefix}_FOUND AND ${_imp_target})
|
elseif (${_prefix}_FOUND AND ${_imp_target})
|
||||||
_pkg_create_imp_target("${_prefix}" _no_cmake_path _no_cmake_environment_path)
|
_pkg_create_imp_target("${_prefix}" _no_cmake_path _no_cmake_environment_path)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
Reference in New Issue
Block a user