Missing rpath-link for dependency on shared lib behind a static lib
With this example:
cmake_minimum_required(VERSION 3.15)
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 STATIC b.c)
target_link_libraries(b PRIVATE a)
add_library(c SHARED c.c)
set_property(TARGET c PROPERTY LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/c")
target_link_libraries(c PRIVATE b)
set_property(TARGET c PROPERTY SKIP_BUILD_RPATH 1) # Disables RPATH that would find `a` in build tree
add_executable(main main.c)
target_link_libraries(main c)
building on Linux does not link:
/usr/bin/ld: warning: liba.so, needed by c/libc.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: c/libc.so: undefined reference to `a'
because CMake's generated link line for main does not have -rpath-link
for the directory containing a
.