On 09/17/2014 12:29 PM, Volker Pilipp wrote:
I have encountered the following problem with cmake 3.0.1.
Under certain circumstances TARGET_LINK_LIBRARIES replaces
"/path/to/libXXX.so" by "-lXXX". The problem occurred when I used a
non-standard compiler at /opt/XXX/bin/g++ and added the library
/opt/XXX/lib/libXXX.so to TARGET_LINK_LIBRARIES.
In particular CMakeLists.txt reads:
"SET(CMAKE_CXX_COMPILER /opt/XXX/bin/g++)
CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0)
PROJECT(XXX)
add_executable(xxx xxx.cpp)
target_link_libraries(xxx /opt/XXX/lib/libXXX.so)"
When running make VERBOSE=1 produces output like
/opt/XXX/bin/g++ (...) -lXXX
which is not the same as
/opt/XXX/bin/g++ (...) /opt/XXX/lib/libXXX.so
I think CMake reverts to linking by name if either the library is in an
implicit linker directory (e.g. a directory the linker searches by
default) or if the shared library does not have an SONAME.
Which library does -lXXX resolve to?
e.g. why aren't the two command lines equivalent for you?
Specifically which library does the linker (ld) pick up;
not the runtime loader (ld.so).
Nils
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake