Cmake 预结束到RPATH
在Linux上使用CMake构建之后(但在安装之前),所有链接库都添加到最终可执行文件的RPATH中 但是,我想在这个RPATH前面加上Cmake 预结束到RPATH,cmake,Cmake,在Linux上使用CMake构建之后(但在安装之前),所有链接库都添加到最终可执行文件的RPATH中 但是,我想在这个RPATH前面加上$ORIGIN/./lib: 到目前为止,我只能替换RPATH,这不是我想要的:我想要ld.So首先查看。/lib。这就是我目前所做的: set_target_properties(foo PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE INSTALL_RPATH "\$ORIGIN/../lib:...") 虽然这样
$ORIGIN/./lib:
到目前为止,我只能替换RPATH,这不是我想要的:我想要ld.So
首先查看。/lib
。这就是我目前所做的:
set_target_properties(foo PROPERTIES
BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_RPATH "\$ORIGIN/../lib:...")
虽然这样做有效,但它缺少一些附加的第三方库,这些库不属于我的构建树的一部分,也不位于系统目录中
执行chrpath-l foo
可以得到与上面完全相同的INSTALL\u RPATH
。如果我不设置这些属性,我会得到一长串DSO位置,例如,RPATH=/bar/baz/:/qux/
等(我想预先设置的那个)
我尝试过使用get\u属性(\u existing\u rpath foo INSTALL\u rpath)
,但这给了我一个空字符串
我已经阅读了关于“CMake Bugs”的提示,并注意到
至少在CMake 2.6.4 RHEL5上,man CMake命令用于
安装路径使用链接路径假装此设置将附加
链接路径到任何指定的CMAKE_INSTALL_RPATH内容。然而,
在此版本上,启用安装路径使用链接路径将替换它
好吧,对此不再那么确定了:只是在CMake上验证了这一点
2.8.0,现在在两个版本中,它都列出了cmake_install.cmake中的正确更改。此错误可能是由于以前没有
正在执行每目标安装(),或者可能是由于
CMake RPATH相关变量
顺便说一句,我只对为构建的文件获取一个可用的RPATH感兴趣,就像在运行install之前一样。我没有正确配置安装(添加了安装目标等)。如果你在谷歌上找不到答案,答案通常是显而易见的。这似乎很管用:
set_target_properties(foo PROPERTIES
BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_RPATH_USE_LINK_PATH TRUE
INSTALL_RPATH "\$ORIGIN/../lib:${INSTALL_RPATH}")
在我的系统(以及CMake 3.6.1)上,
INSTALL\u RPATH
似乎是以冒号开头的,但我不会指望它。另外,由于我显然在这里设置了全局安装路径,它可能被过度指定(我没有检查)。如果您对堆栈溢出进行投票,通常情况下其他人会认为答案不明显。