Я использую кросс-компиляцию с использованием CMake.CMake cross compile target rpath
В моей 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 расположен в /путь/to/sysroot/usr/local/lib/foo.so, когда я перекрестно скомпилирую путь выполнения для mylib is /path/to/sysroot/usr/local/lib
Я хочу, чтобы путь выполнения был /usr/local/lib, чтобы отразить мою целевую файловую систему.
Как я могу это сделать без определения переменной CMAKE_INSTALL_RPATH в моем файле CMakelists.txt?
EDIT: Я использовал/USR/местные/Библиотека для примера, но Foo Lib расположены в определенной папке, которая не является частью системы директорий:/путь/к/SYSROOT/USR/местные/доли /mypackage/lib/foo.so
Идея не может быть используется в моем случае, потому что моя библиотека связана с другими библиотеками, расположенными в нестандартном местоположении. Итак, мне нужно, чтобы rpath был настроен на дополнительное место в дополнение к/usr/local/lib. – explo91
Поскольку это нестандартное местоположение, вам нужно будет установить путь к библиотеке * где-то *. Установка LD_LIBRARY_PATH в целевой системе может быть одним из решений. – benf
Я думаю, что вы правы! – explo91