#macos #cmake
Вопрос:
Я импортирую внешнюю динамическую библиотеку в свой проект CMake. Библиотека содержит следующее содержимое в LC_ID_DYLIB
поле:
libftd2xx.dylib
У него нет никакого набора rpath. Поэтому я импортирую библиотеку следующим образом:
add_library(LibFTd2xx::LibFTD2xx SHARED IMPORTED GLOBAL) set_target_properties(LibFTD2xx::LibFTD2xx PROPERTIES IMPORTED_SONAME "@rpath/libftd2xx.dylib" )
Я ожидал увидеть @rpath/libftd2xx.dylib
в поле каждого зависимого исполняемого LC_LOAD_DYLIB
файла, но, к сожалению, я все еще вижу:
LC 15: LC_LOAD_DYLIB libftd2xx.dylib
Запуск исполняемого файла, конечно, завершается неудачей. Все остальные библиотеки в проекте имеют соответствующие пути rpath. Как я могу заставить CMake использовать IMPORTED_SONAME
во всех зависимых библиотеках и исполняемых файлах вместо значения из LC_ID_DYLIB
?
К сожалению, я не могу изменить LC_ID_DYLIB
, потому что библиотека подписана Apple, и изменение идентификатора уничтожает подпись.