Вот что я сделал в своих сценариях CMake для загрузки общих библиотек из того же каталога, что и мои двоичные файлы (исполняемые файлы и другие библиотеки):
SET(CMAKE_BUILD_WITH_INSTALL_RPATH true)
SET(CMAKE_INSTALL_RPATH "$ORIGIN/")
(проверено с помощью CMake 3.0+)
Как это работает (насколько я понимаю): вторая строка указывает CMake добавить специальную строку $ORIGIN в папку поиска двоичных файлов (эта специальная строка $ORIGIN «заменяется» ОС во время выполнения папкой, содержащей исполняемый двоичный файл). .Таким образом, нужная библиотека, которая находится рядом с бинарником, содержащим эту строку, будет найдена корректно).
Однако установка этой переменной в CMake влияет только на двоичные файлы установки (например, те, которые развернуты с помощью make install): CMake не меняет путь поиска в двоичных файлах. создаются на этапе сборки, а только при их установке.
Поскольку я не использую функцию установки CMake, а хочу предоставить свое приложение только в свободно перемещаемой папке, я использовал первый вызов, который указывает CMake использовать пути поиска во время установки и во время сборки.
Итак, с помощью этих двух вызовов вызов make (или сборка с помощью XCode, я полагаю) для make-файлов, сгенерированных CMake, создаст двоичные файлы с правильно установленной папкой поиска $ORIGIN.
Пожалуйста, сделайте это перед определением любой другой цели. Вы также можете настроить эти параметры для отдельных целей, используя set_target_property со свойствами BUILD_WITH_INSTALL_RPATH и INSTALL_RPATH.
Я тестировал это только под Linux, но если MacOS X ведет себя так же, все должно быть в порядке.
Надеюсь это поможет
Бенджамин
person
Benjamin Golinvaux
schedule
01.12.2015