linux 工具链路径,linux – 在CMake中设置构建的链接器搜索路径

似乎这个问题在很久以前就被提出过,但似乎没有一个解决方案适用于我的案例.

我在CMake / Linux环境中,必须在构建步骤(特别是protoc)中运行可执行二进制文件.

这个二进制文件需要一个库,但它没有安装(也不能)在/ usr这样的标准目录中,因此无法找到库.

不幸的是,我无法操纵protoc调用,因为它嵌入在第三方脚本中.

我现在可以在每次制作之前设置LD_LIBRARY_PATH或在系统范围内设置它,但这非常不方便,特别是涉及构建发生的IDE或具有连续构建环境的分布式构建方案.

我尝试通过设置LD_LIBRARY_PATH

set(ENV{LD_LIBRARY_PATH} "/path/to/library/dir")

但这似乎在构建步骤中没有任何效果.

所以我的问题是:我可以在构建过程中使用的CMake中设置库搜索路径吗?

解决方法:

试试这个

SET(ENV{LD_LIBRARY_PATH} "/path/to/library/dir:$ENV{LD_LIBRARY_PATH}")

我还使用这个脏技巧来临时更改一些环境变量:

LD_LIBRARY_PATH="/path/to/library/dir:$LD_LIBRARY_PATH" cmake ...

执行此行后,当前shell中的LD_LIBRARY_PATH未更改.

另外,我发现在调用cmake之前更改LD_LIBRARY_PATH并不好:

export LD_LIBRARY_PATH = …

它不会在系统范围内进行任何更改,但它将用于当前的shell,当前的构建过程. CI构建也是如此.您可以保存变量并在cmake调用后恢复它:

MY_LD=$LD_LIBRARY_PATH

export LD_LIBRARY_PATH=...

cmake...

export LD_LIBRARY_PATH=$MY_LD

标签:linux,linker,cmake,executable

来源: https://codeday.me/bug/20190711/1431660.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值