Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让cmake将目录附加到生成路径_Cmake_Rpath - Fatal编程技术网

让cmake将目录附加到生成路径

让cmake将目录附加到生成路径,cmake,rpath,Cmake,Rpath,我想将另一个目录添加到目标的BUILD\u RPATH属性中,但我希望它位于列表的末尾,因此它是在cmake自动添加到目标的BUILD\u RPATH的其他目录之后最后搜索的。但似乎没有办法在自动RPATH目录之后添加到属性中 在构建时,我的系统库不在正常位置,而是在临时区域中。为了运行已卸载的内置二进制文件,我需要将此暂存区域添加到二进制文件的RPATH中。这部分操作简单,效果良好,如下所示: add_executable(mybinary ${BINARY_SOURCES}) set_pro

我想将另一个目录添加到目标的
BUILD\u RPATH
属性中,但我希望它位于列表的末尾,因此它是在cmake自动添加到目标的
BUILD\u RPATH
的其他目录之后最后搜索的。但似乎没有办法在自动RPATH目录之后添加到属性中

在构建时,我的系统库不在正常位置,而是在临时区域中。为了运行已卸载的内置二进制文件,我需要将此暂存区域添加到二进制文件的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\u CURRENT\u BINARY\u DIR}
中,而不是其他地方的另一个副本,可能是上次运行
make install
时的系统库目录中。或者,在我的例子中,是
${STAGING_LIB_DIR}
中库的副本

cmake将自动将非系统库的
${cmake\u CURRENT\u BINARY\u DIR}
添加到生成的二进制文件的构建路径。因此,当从构建目录运行
mybinary
时,它将在构建目录中搜索
mylib

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