我有一个IMPORTED SHARED库,我通过target_link_libraries与它链接(库有IMPORTED_LOCATION集)。
但是,在ldd输出中安装之后,我可以看到如下所示:
path/on-dev-machine/to/libxxx.so => not found
而不是仅仅
libxxx.so => path/on-testing-machine/to/libxxx.so
为什么我要修理它?我正在向/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发布于 2018-03-20 17:37:27
如果有人关心,那么是每个导入库的IMPORTED_NO_SONAME属性(没有将其设置为TRUE)强制采用完整的路径。
而且,在我看来,CMAKE_SKIP_RPATH和CMAKE_SKIP_INSTALL_RPATH对于确保您有干净的运行时路径(与问题没有直接相关,但仍然是相关的)非常有用。
https://stackoverflow.com/questions/49156335
复制相似问题