Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 预结束到RPATH_Cmake - Fatal编程技术网

Cmake 预结束到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:...") 虽然这样

在Linux上使用CMake构建之后(但在安装之前),所有链接库都添加到最终可执行文件的RPATH中

但是,我想在这个RPATH前面加上
$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
似乎是以冒号开头的,但我不会指望它。另外,由于我显然在这里设置了全局
安装路径,它可能被过度指定(我没有检查)。

如果您对堆栈溢出进行投票,通常情况下其他人会认为答案不明显。