我有一个供应商库,需要包含在我的项目的安装程序中,我正在使用INSTALL(FILES ...)
. 该库与源代码一起存储,问题是链接路径(由 readelf 显示)是相对的,并且该前缀在安装过程中不会被删除,因此动态链接器不是搜索hhlib.so
它的../hhlib-linux-64bit/hhlib.so
.
如何获得可用的已安装二进制文件?我可以获取安装步骤或 CPack 来删除该库的相对路径吗?
\n我已将问题简化为一个简单的示例:
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hhlib-linux-64bit\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hhlib.h\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 hhlib.so\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 use_hydroharp.c\n
Run Code Online (Sandbox Code Playgroud)\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hhlib-linux-64bit\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hhlib.h\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 hhlib.so\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 use_hydroharp.c\n
Run Code Online (Sandbox Code Playgroud)\n内置:
\ncmake_minimum_required (VERSION 3.19)\n\n# These sets have no effect on the issue\n\n# use, i.e. don\'t skip the full RPATH for the build tree\n#SET(CMAKE_SKIP_BUILD_RPATH FALSE)\n# when building, don\'t use the install RPATH already\n# (but later on when installing)\n#SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) \n# the RPATH …
Run Code Online (Sandbox Code Playgroud)