Browse Source

FindPkgConfig: Fix pkg_check_modules() non-standard location search

During search of the library file `pkg_check_modules()` attempts to find
it in last specified library path in `${_prefix}_LDFLAGS`, that after
dependency resolving contains path to standard location.

So in case when `${_prefix}_LDFLAGS` has:

    -L/prefix;-L/usr/local/lib;-llibrary_from_prefix;-ldependency

`library_from_prefix` will not be found.

As solution need try to find the library in all paths preceding to the
library.

Fixes: #16873
Yuriy Khokhulya 8 years ago
parent
commit
2e293c39da
1 changed files with 3 additions and 1 deletions
  1. 3 1
      Modules/FindPkgConfig.cmake

+ 3 - 1
Modules/FindPkgConfig.cmake

@@ -190,10 +190,12 @@ function(_pkg_create_imp_target _prefix _no_cmake_path _no_cmake_environment_pat
     string(APPEND _find_opts " NO_CMAKE_ENVIRONMENT_PATH")
   endif()
 
+  unset(_search_paths)
   foreach (flag IN LISTS ${_prefix}_LDFLAGS)
     if (flag MATCHES "^-L(.*)")
       # only look into the given paths from now on
-      set(_find_opts HINTS ${CMAKE_MATCH_1} NO_DEFAULT_PATH)
+      list(APPEND _search_paths ${CMAKE_MATCH_1})
+      set(_find_opts HINTS ${_search_paths} NO_DEFAULT_PATH)
       continue()
     endif()
     if (flag MATCHES "^-l(.*)")