我想将另一个目录添加到目标的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}
副本。