[CMake] /path/to/libpng.so automatic conversion to -lpng ?

René J. V. Bertin rjvbertin at gmail.com
Wed Jul 12 20:04:43 EDT 2017


Andreas Naumann wrote:

> cmake instrospects your compiler and asks for system directories.

Just stumbled across this documentation tidbit:

>>>>>>>
CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES
--------------------------------------

Implicit linker search path detected for language ``<LANG>``.

Compilers typically pass directories containing language runtime
libraries and default library search paths when they invoke a linker.
These paths are implicit linker search directories for the compiler's
language.  CMake automatically detects these directories for each
language and reports the results in this variable.

When a library in one of these directories is given by full path to
:command:`target_link_libraries` CMake will generate the ``-l<name>`` form on
link lines to ensure the linker searches its implicit directories for the
library.  Note that some toolchains read implicit directories from an
environment variable such as ``LIBRARY_PATH`` so keep its value consistent
when operating in a given build tree.
<<<<<<<

Note the
> CMake will generate the ``-l<name>`` form on link lines to ensure the linker 
> searches its implicit directories

What's the point in doing that when a full path is given? Full path means 
searching isn't required. Full path (probably) means that the operator wants to 
ensure that a specific library is linked. Full path thus means that searching 
can even have counterproductive effects.

R.



More information about the CMake mailing list