CMake中RPATH的处理

CMake默认不会对安装之后的目标,在头部加上RPATH信息。而对构建产生的中间文件,是会加上RAPTH信息的。RPATH中的路径信息,来自link_directories()中指定的库所在路径,不管这些路径,是属于工程的构建路径(CMAKE_BINARY_DIR),还是外部路径。然后在make install之后,安装目标的头部不会增加RPATH。如果恰好那些路径,不在系统的标准库查找范围,这时运行会出现

error while loading shared libraries: xxx

这样的错误信息。

这时,可以通过设置LD_LIBRARY_PATH的环境变量,来告知系统额外的库查找路径。

也可以加上

SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

来让CMake在安装的目标中加入RPATH信息,但是注意即便加了这个,对于位于工程构建路径的那些PATH,还是不会加入到最终的RPATH当中的。

另外,也可以手动指定添加的RPATH:

SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")

对于这种情况,默认情况下,这个PATH在构建产生的中间文件,是不增加的;而是只对安装的目标有效。如果你想针对构建的中间文件也有效果,可以加上

SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)

参考:https://cmake.org/Wiki/CMake_RPATH_handling

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值