Я делаю кросс-компиляцию с помощью 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< /em> — это /path/to/sysroot/usr/local/lib
Я хочу, чтобы путь среды выполнения был /usr/local/lib, чтобы отражать мою целевую файловую систему.
Как я могу сделать это, не определяя жестко закодированную переменную CMAKE_INSTALL_RPATH в моем CMakelists.txt?
РЕДАКТИРОВАТЬ: я использовал /usr/local/lib для примера, но foo lib находится в определенной папке, которая не является частью системных каталогов: /path/to/sysroot/usr/local/ поделиться/мой пакет/lib/foo.so