我正在使用 CMake 进行交叉编译。
在我的 CMakeLists.txt 中(用于编译和交叉编译):
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
find_package(foo REQUIRED)
add_library(mylib SHARED ${SRCS})
target_link_libraries(mylib ${FOO_LIBRARIES)
在我的 toolchain.cmake 中:
set(CMAKE_CXX_FLAGS "... --sysroot=/path/to/sysroot/ ... ")
set(CMAKE_CXX_LINK_FLAGS "... --sysroot=/path/to/sysroot/ ... )
...
set(CMAKE_FIND_ROOT_PATH /path/to/sysroot)
考虑foo位于/path/to/sysroot/usr/local/lib/foo.so,当我交叉编译mylib的运行时路径是/path/to/sysroot/usr/local/lib
我希望运行时路径是/usr/local/lib以反映我的目标文件系统。
如果不在我的 CMakelists.txt 中定义硬编码的CMAKE_INSTALL_RPATH变量,我怎么能做到这一点?
编辑:我使用 /usr/local/lib 作为示例,但foo lib 位于不属于系统目录的特定文件夹中:/path/to/sysroot/usr/local/share/mypackage/lib/foo 。所以