gpt4 book ai didi

cmake - 前置到 RPATH

转载 作者:行者123 更新时间:2023-12-01 09:20:22 26 4
gpt4 key购买 nike

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

但是,我想添加 $ORIGIN/../lib:到这个 RPATH。

到目前为止,我只能替换 RPATH,这不是我想要的:我想要 ld.so先看 ../lib .这就是我目前所做的:

set_target_properties(foo PROPERTIES
BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_RPATH "\$ORIGIN/../lib:...")

虽然这有效,但它缺少一些不属于我的构建树的一部分并且不在系统目录中的其他第三方库。

chrpath -l foo给我完全相同的 INSTALL_RPATH以上。如果我不设置这些属性,我会得到一长串 DSO 位置,例如 RPATH=/bar/baz/:/quux/等(我想预先准备的那个)。

我试过使用 get_property(_existing_rpath foo INSTALL_RPATH) ,但这给了我一个空字符串

我已经阅读了 https://cmake.org/Wiki/CMake_RPATH_handling 中的提示并在“CMake Bugs”下注意到

At least on CMake 2.6.4 RHEL5, man cmakecommands for INSTALL_RPATH_USE_LINK_PATH pretends that this setting will append the link path to any CMAKE_INSTALL_RPATH content one specified. However, on this version, enabling INSTALL_RPATH_USE_LINK_PATH will replace it.

Well, not so sure about this any more: just verified this on CMake 2.8.0, and now on both versions it does list correct changes in cmake_install.cmake. This bug may have occurred due to previously not doing per-target install(), or perhaps due to some other changes in CMake RPATH-related variables.



顺便说一句,我只对为构建的文件获取有效的 RPATH 感兴趣,就像在运行安装之前一样。我没有正确配置安装(添加了安装目标等)。我是否需要研究该部分才能使其正常工作?

最佳答案

如果您在 Google 上找不到答案,通常情况下答案是显而易见的。这似乎工作得很好:

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_RPATH以冒号开头,但我不会指望它。另外,因为我显然正在设置全局 INSTALL_RPATH在这里,它可能被过度指定(我没有检查过)。

关于cmake - 前置到 RPATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40079424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com