加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 23:19:52 所属栏目:Linux 来源:网络整理
导读:似乎这个问题在很久以前就被提出过,但似乎没有一个解决方案适用于我的案例. 我在CMake / Linux环境中,必须在构建步骤(特别是protoc)中运行可执行二进制文件. 这个二进制文件需要一个库,但它没有安装(也不能)在/ usr这样的标准目录中,因此无法找到库. 不幸的
似乎这个问题在很久以前就被提出过,但似乎没有一个解决方案适用于我的案例.

我在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读