pkg_check_modules can not find library with set PKG_CONGIG_PATH
CMake version: 3.7.2
pkg_check_modules can not correct find library from the PKG_CONFIG_PATH that has dependency in system directory (/usr/local/lib). CMake wrote that's ok but when when I try to compile, compiler writes:
/usr/bin/ld: cannot find -lpkgcfg_lib_CommonAPI-DBus_CommonAPI-DBus-NOTFOUND
I've added the logging (lines marked by +++) of variables in function _pkg_create_imp_target in file FindPkgConfig. CMake log presented bellow.
192
+++ message(STATUS "${_prefix}_LDFLAGS: ${${_prefix}_LDFLAGS}")
193 foreach (flag IN LISTS ${_prefix}_LDFLAGS)
194 if (flag MATCHES "^-L(.*)")
195 # only look into the given paths from now on
196 set(_find_opts HINTS ${CMAKE_MATCH_1} NO_DEFAULT_PATH)
197 continue()
198 endif()
199 if (flag MATCHES "^-l(.*)")
200 set(_pkg_search "${CMAKE_MATCH_1}")
201 else()
202 continue()
203 endif()
204
+++ message (STATUS "_pkg_search: ${_pkg_search}")
+++ message (STATUS "_find_opts: ${_find_opts}")
205
206 find_library(pkgcfg_lib_${_prefix}_${_pkg_search}
207 NAMES ${_pkg_search}
208 ${_find_opts})
209 list(APPEND _libs "${pkgcfg_lib_${_prefix}_${_pkg_search}}")
210 endforeach()
+++ message (STATUS "__libs: ${_libs}")
CMake log with additional logging:
$ export PKG_CONFIG_PATH=/home/user/project-packages/lib/pkgconfig/
$ cmake ..
......
-- Checking for module 'CommonAPI-DBus'
-- Found CommonAPI-DBus, version 3.1.11
-- CommonAPI-DBus_LDFLAGS: -L/home/user/project-packages/lib;-L/usr/local/lib;-lCommonAPI-DBus;-lCommonAPI
-- _pkg_search: CommonAPI-DBus
-- _find_opts: HINTS;/usr/local/lib;NO_DEFAULT_PATH
-- _pkg_search: CommonAPI
-- _find_opts: HINTS;/usr/local/lib;NO_DEFAULT_PATH
-- __libs: pkgcfg_lib_CommonAPI-DBus_CommonAPI-DBus-NOTFOUND;/usr/local/lib/libCommonAPI.so
......
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/sample/build
$ make
......
/usr/bin/ld: cannot find -lpkgcfg_lib_CommonAPI-DBus_CommonAPI-DBus-NOTFOUND
The problem is in parsing of line.
-L/home/user/project-packages/lib;-L/usr/local/lib;-lCommonAPI-DBus;-lCommonAPI
CommonAPI-DBus library is placed in /home/user/project-packages/lib and CommonAPI library is placed in /usr/local/lib. But as I see cmake tries to find both libraries in /usr/local/lib.