led*_*ter 3 cmake shared-libraries ld
我有一个库,并且我通过(库已设置)IMPORTED SHARED与其链接。target_link_librariesIMPORTED_LOCATION
但是在输出中安装后ldd我看到类似的内容:
path/on-dev-machine/to/libxxx.so => not found
而不是仅仅
libxxx.so => path/on-testing-machine/to/libxxx.so
为什么会这样/我该如何解决?我正在添加 lib 路径/etc/ld.so.conf.d
示例代码:
include(GNUInstallDirs)
function(add_and_install_lib lib_name location external_dep)
if(${location} MATCHES ".*\\.so")
add_library(${lib_name} SHARED IMPORTED) # MODULE treated as shared
else()
add_library(${lib_name} STATIC IMPORTED)
endif()
set_property(TARGET ${lib_name} PROPERTY IMPORTED_LOCATION ${location})
add_dependencies(${lib_name} ${external_dep})
endfunction()
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_LIBDIR}") # this doesn't seem to help
Run Code Online (Sandbox Code Playgroud)
如果有人关心的话,那就是每个导入的库的IMPORTED_NO_SONAME属性(没有设置为TRUE)强制采用完整路径。
在我看来,和 也CMAKE_SKIP_RPATH有助于CMAKE_SKIP_INSTALL_RPATH确保您拥有干净的运行时路径(与问题没有直接关系,但仍然如此)。
| 归档时间: |
|
| 查看次数: |
2226 次 |
| 最近记录: |