gpt4 book ai didi

CMake导入库rpath

转载 作者:行者123 更新时间:2023-12-05 05:17:27 26 4
gpt4 key购买 nike

我有一个 IMPORTED SHARED 库,我通过 target_link_libraries 与它链接(该库有 IMPORTED_LOCATION设置)。

但是在 ldd 输出中安装之后,我看到了类似这样的东西:

path/on-dev-machine/to/libxxx.so => 找不到

不仅仅是

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

最佳答案

如果有人关心的话,是每个导入的库的 IMPORTED_NO_SONAME 属性(没有设置为 TRUE)强制采用完整路径。

此外,CMAKE_SKIP_RPATHCMAKE_SKIP_INSTALL_RPATH 在我看来也很有用,可确保您拥有干净的运行时路径(与问题没有直接关系,但仍然如此)。

关于CMake导入库rpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49156335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com