Я создаю пакет с помощью cmake
У меня следующая структура
bin/
bin1
lib/
lib1
lib2
Где lib1 и lib2 — внешняя динамическая библиотека. Как я могу установить RPATH, чтобы он автоматически связывался с lib1 и lib2?
Я создаю пакет с помощью cmake
У меня следующая структура
bin/
bin1
lib/
lib1
lib2
Где lib1 и lib2 — внешняя динамическая библиотека. Как я могу установить RPATH, чтобы он автоматически связывался с lib1 и lib2?
Я тоже возился с cmake по этому поводу. Cmake использует CMAKE_SKIP_BUILD_RPATH для связывания во время сборки и CMAKE_INSTALL_RPATH для установки rpath, используемого при сборке цели установки. В cmake есть полезная информация об использовании механизма rpath: http://www.cmake.org/Wiki/CMake_RPATH_handling
Альтернативный метод — использовать ldconfig. Я заметил, что когда вы собираете svn(1.6.17), make install target вызывает ldconfig для установки rpath.
взгляните на $ORIGIN, так как он понадобится вам в вашем rpath, чтобы сохранить его относительно двоичного файла, а не относительно $PWD.
Построение простого (hello- world-esque) пример использования опции ld -rpath с $ORIGIN
CMAKE_INSTALL_RPATH
и INSTALL_RPATH
?
- person BlazePascal; 14.11.2016
Насколько мне известно, CMake автоматически добавляет rpath ко всем целям, которые вы связываете с помощью target_link_libraries().
Для отключения есть опция CMAKE_SKIP_RPATH
.