Works like a charm, I knew I was overlooking something small. Thanks, Brad!
-Caleb On Tue, Dec 9, 2014 at 2:30 PM, Brad King <brad.k...@kitware.com> wrote: > On 12/09/2014 12:26 PM, J. Caleb Wherry wrote: > > add_library(ExtLib SHARED IMPORTED) > > set_property(TARGET ExtLib PROPERTY IMPORTED_LOCATION > "${CMAKE_BINARY_DIR}/${EXT_LIB_NAME}") > > add_dependencies(ExtLib ExtLibBuild) > > Thanks for the complete/simple example. The problem is that > the libExtLib.so file built by the external project does not > have DT_SONAME set by the linker. When a linker is given a > path to a shared library file that has no soname then the path > is copied into the DT_NEEDED field of the consumer since it > has no soname to use for that. > > There are two solutions: > > 1. Make sure DT_SONAME gets set properly by the external build system. > > 2. Tell CMake that the imported library file has no soname: > > set_property(TARGET ExtLib PROPERTY IMPORTED_NO_SONAME 1) > > CMake will then link it via -lExtLib and the linker will not > store the path to the file in DT_NEEDED but only the file name. > > Either of these should resolve the issue. Number 1 is cleaner. > > -Brad > > -- J. Caleb Wherry *Scientific Software Engineer* <http://www.calebwherry.com> http://www.calebwherry.com +1 (615) 708-5651 calebwhe...@gmail.com
-- 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