Missing rpath-link for private dep of shared lib with no public deps
With this example:
cmake_minimum_required(VERSION 3.14)
project(RPathLink C)
add_library(a SHARED a.c)
set_property(TARGET a PROPERTY LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/a")
add_library(b SHARED b.c)
set_property(TARGET b PROPERTY LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/b")
target_link_libraries(b PRIVATE a)
add_executable(main main.c)
target_link_libraries(main b)
building on Linux with -DCMAKE_SKIP_RPATH=ON
should still link even if it will not run. However, it fails:
/usr/bin/ld: warning: liba.so, needed by b/libb.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: b/libb.so: undefined reference to `a'
because CMake's generated link line for main
does not have -rpath-link
for the directory containing a
.