[CMake] linking: absolute path vs -l<libname>
Nico Schlömer
nico.schloemer at gmail.com
Fri Aug 28 04:23:47 EDT 2015
Hi everyone,
I'm curious about when CMake decides to link a library by its absolute path
and when it links using the `-l*` syntax. I came across this for the very
simple test problem
```
cmake_minimum_required(VERSION 3.0)
project(mytest)
find_package(ZLIB REQUIRED)
find_package(netCDF REQUIRED)
add_executable(mytest main.cpp)
target_link_libraries(
mytest
${ZLIB_LIBRARIES}
${netCDF_LIBRARIES}
)
```
The resulting link line is
```
/usr/bin/c++ CMakeFiles/mytest.dir/main.cpp.o -o mytest -rdynamic
-lz /usr/lib/x86_64-linux-gnu/libnetcdf.so.7.3.0
```
so ZLIB is linked with `-lz`, netCDF with the full absolute path.
Seems inconsistent? (ZLIB by the way is found through CMake's
FindZLIB.cmake, netCDF by their own export files.)
So far, I had been under the impression that `-l*` defeats the purpose of
CMake a little bit as it asks the linker to search in the system's paths
for a libz.so, something CMake has already done.
A little clarification here would be great.
Cheers,
Nico
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150828/0d6fde6c/attachment.html>
More information about the CMake
mailing list