让cmake将目录附加到构建RPATH

时间:2018-07-10 18:02:09

标签: cmake rpath

我想将另一个目录添加到目标的BUILD_RPATH属性中,但是我想在列表的末尾添加它,因此在cmake自动将其他目录添加到目标的{ {1}}。但是似乎没有办法在自动RPATH目录之后添加到属性。

在构建时,我的系统库不在正常位置,而是在暂存区中。为了运行已卸载的内置二进制文件,我需要将此暂存区添加到二进制文件的RPATH中。而且这部分操作简单易行,就像这样:

BUILD_RPATH

但是add_executable(mybinary ${BINARY_SOURCES}) set_property(TARGET mybinary APPEND PROPERTY BUILD_RPATH ${STAGING_LIB_DIR}) 也使用它作为同一项目的一部分构建的库:

mybinary

运行add_library(mylib SHARED ${LIB_SOURCES}) target_link_libraries(mybinary PRIVATE mylib) 时,我希望它使用刚刚构建的mybinary中的mylib,而不是其他地方的另一个副本,也许在系统库目录中从上次运行${CMAKE_CURRENT_BINARY_DIR}来安装项目开始。或者,就我而言,是make install中库的副本。

对于任何非系统库,

cmake会自动将${STAGING_LIB_DIR}或任何适当的库添加到生成的二进制文件的构建RPATH中。因此,当从构建目录运行${CMAKE_CURRENT_BINARY_DIR}时,它将在构建目录中搜索mybinary

但是问题是它将这些自动库目录附加到我设置的mylib上。因此,最终的RPATH为BUILD_RPATH,并且使用了错误的${STAGING_LIB_DIR}:${CMAKE_CURRENT_BINARY_DIR}副本。

0 个答案:

没有答案