[cmake-developers] [CMake 0015804]: FindPkgConfig pkg_check_modules command should return full path to shared libraries in _LIBRARIES variable
Mantis Bug Tracker
mantis at public.kitware.com
Tue Oct 20 05:32:16 EDT 2015
The following issue has been SUBMITTED.
======================================================================
https://cmake.org/Bug/view.php?id=15804
======================================================================
Reported By: Sam Thursfield
Assigned To:
======================================================================
Project: CMake
Issue ID: 15804
Category: Modules
Reproducibility: always
Severity: minor
Priority: normal
Status: new
======================================================================
Date Submitted: 2015-10-20 05:32 EDT
Last Modified: 2015-10-20 05:32 EDT
======================================================================
Summary: FindPkgConfig pkg_check_modules command should
return full path to shared libraries in _LIBRARIES variable
Description:
CMake seems to encourage using absolute paths to shared libraries.
>From link_directories() documentation:
Note that this command is rarely necessary. Library locations returned
by find_package() and find_library() are absolute paths. Pass these
absolute library file paths directly to the target_link_libraries()
command. CMake will ensure the linker finds them.
However, the FindPkgConfig module doesn't follow this, and instead returns just
the names of libraries, plus a linker path. Since CMake makes it awkward to
propagate the linker path, so the end result is that if you have a package
installed in a non-standard library path, things break.
Steps to Reproduce:
An example pkg-config file:
cmake_minimum_required(VERSION 3.3.2)
find_package(PkgConfig REQUIRED)
pkg_check_modules(ZLIB zlib REQUIRED)
message("ZLIB_LIBRARIES: ${ZLIB_LIBRARIES}")
message("ZLIB_LIBRARY_DIRS: ${ZLIB_LIBRARY_DIRS}")
Output:
ZLIB_LIBRARIES: z
ZLIB_LIBRARY_DIRS: /usr/lib64
Expected output:
ZLIB_LIBRARIES: /usr/lib64/libz.so
Additional Information:
I'm aware that in the case of Zlib there is a FindZLib module, and /usr/lib64 is
in my library search path in any case. This is just an example. The painful case
is where I had to build a library from source myself and then install it into a
non-standard prefix.
======================================================================
Issue History
Date Modified Username Field Change
======================================================================
2015-10-20 05:32 Sam Thursfield New Issue
======================================================================
More information about the cmake-developers
mailing list