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并不好: 它不会在系统范围内进行任何更改,但它将用于当前的shell,当前的构建过程. CI构建也是如此.您可以保存变量并在cmake调用后恢复它: MY_LD=$LD_LIBRARY_PATH export LD_LIBRARY_PATH=... cmake... export LD_LIBRARY_PATH=$MY_LD (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |