FindPkgConfig: return actual error when a package is not found (#15810)
In some cases, CMake returned the following error: -- Checking for module 'foo' -- Package 'foo' not found When the actual error returned by pkg-config was: Package 'bar', required by 'foo', not found Now, the actual error is forwarded to the user. -- Checking for module 'foo' -- Package 'bar', required by 'foo', not found For the standard case (i.e. the package was indeed not found), the CMake error was: -- Checking for module 'foo' -- Package 'foo' not found But it now prints: -- Checking for module 'foo' -- No package 'foo' found The associated test was also updated. ${last} refers to the last CLI argument.
This commit is contained in:
parent
2fd5fd1f4d
commit
1bfb527f56
|
@ -328,7 +328,7 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma
|
||||||
if (_pkg_check_modules_pkg_op)
|
if (_pkg_check_modules_pkg_op)
|
||||||
list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_ver}")
|
list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_ver}")
|
||||||
else()
|
else()
|
||||||
list(APPEND _pkg_check_modules_exist_query --exists)
|
list(APPEND _pkg_check_modules_exist_query --exists --print-errors --short-errors)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
_pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_VERSION)
|
_pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_VERSION)
|
||||||
|
@ -342,12 +342,14 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma
|
||||||
# execute the query
|
# execute the query
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${PKG_CONFIG_EXECUTABLE} ${_pkg_check_modules_exist_query}
|
COMMAND ${PKG_CONFIG_EXECUTABLE} ${_pkg_check_modules_exist_query}
|
||||||
RESULT_VARIABLE _pkgconfig_retval)
|
RESULT_VARIABLE _pkgconfig_retval
|
||||||
|
ERROR_VARIABLE _pkgconfig_error
|
||||||
|
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
# evaluate result and tell failures
|
# evaluate result and tell failures
|
||||||
if (_pkgconfig_retval)
|
if (_pkgconfig_retval)
|
||||||
if(NOT ${_is_silent})
|
if(NOT ${_is_silent})
|
||||||
message(STATUS " Package '${_pkg_check_modules_pkg}' not found")
|
message(STATUS " ${_pkgconfig_error}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(_pkg_check_modules_failed 1)
|
set(_pkg_check_modules_failed 1)
|
||||||
|
|
|
@ -10,9 +10,10 @@ case $1 in
|
||||||
;;
|
;;
|
||||||
--exists)
|
--exists)
|
||||||
shift
|
shift
|
||||||
echo "Expected: $@"
|
eval last=\${$#}
|
||||||
|
echo "Expected: ${last}"
|
||||||
echo "Found: ${PKG_CONFIG_PATH}"
|
echo "Found: ${PKG_CONFIG_PATH}"
|
||||||
[ "$@" = "${PKG_CONFIG_PATH}" ] || exit 1
|
[ "${last}" = "${PKG_CONFIG_PATH}" ] || exit 1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exit 255
|
exit 255
|
||||||
|
|
Loading…
Reference in New Issue