mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 19:00:54 -06:00
FindPkgConfig: correct library search path for imported targets.
`-L` in LDFLAGS doesn't mean that standard search paths should be
excluded. Example:
$ pkg-config --libs libmutter-2
-L/usr/lib/mutter -lmutter-2 -lgtk-3 -lgdk-3 -lmutter-clutter-2 -lcairo-gobject -latk-1.0 -lpangocairo-1.0 -lpango-1.0 -lfribidi -ljson-glib-1.0 -lgio-2.0 -lwayland-egl -lwayland-client -lXtst -lXi -lmutter-cogl-2 -lcairo
-lgmodule-2.0 -pthread -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0 -lgbm -ldrm -lwayland-server -lEGL -lXext -lXdamage -lXfixes -lXcomposite -lXrandr -lX11
Most of these libraries are located at standard paths, not in
`/usr/lib/mutter`.
Fixes: #17954
This commit is contained in:
@@ -200,9 +200,7 @@ function(_pkg_create_imp_target _prefix _no_cmake_path _no_cmake_environment_pat
|
||||
unset(_search_paths)
|
||||
foreach (flag IN LISTS ${_prefix}_LDFLAGS)
|
||||
if (flag MATCHES "^-L(.*)")
|
||||
# only look into the given paths from now on
|
||||
list(APPEND _search_paths ${CMAKE_MATCH_1})
|
||||
set(_find_opts HINTS ${_search_paths} NO_DEFAULT_PATH)
|
||||
continue()
|
||||
endif()
|
||||
if (flag MATCHES "^-l(.*)")
|
||||
@@ -211,6 +209,12 @@ function(_pkg_create_imp_target _prefix _no_cmake_path _no_cmake_environment_pat
|
||||
continue()
|
||||
endif()
|
||||
|
||||
if(_search_paths)
|
||||
# Firstly search in -L paths
|
||||
find_library(pkgcfg_lib_${_prefix}_${_pkg_search}
|
||||
NAMES ${_pkg_search}
|
||||
HINTS ${_search_paths} NO_DEFAULT_PATH)
|
||||
endif()
|
||||
find_library(pkgcfg_lib_${_prefix}_${_pkg_search}
|
||||
NAMES ${_pkg_search}
|
||||
${_find_opts})
|
||||
|
||||
Reference in New Issue
Block a user