Вы на правильном пути.
Это происходит потому, что в OS X "имя_установки"
записывается в библиотеке при ее создании. Это имя_установки затем копируется в любое приложение, которое связывается с ним.
«Лучший» способ решить проблему - изменить исходный код фреймворка, чтобы флаг компоновщика - имя_установки
устанавливался, когда фреймворк построен.
Однако это часто невозможно, либо потому, что у вас нет исходных текстов, либо потому, что во фреймворке огромное количество вещей autoconf, что делает это практически невозможным. В этом случае используйте install_name_tool с флагом -id, чтобы изменить записанное имя_установки
в библиотеке.
Итак, с учетом всего сказанного, что вы измените на?
@ executable_path /. ./Frameworks/Foo. framework / Foo (или другое имя)
Итак, из каталога, содержащего Foo.framework:
install_name_tool -id @executable_path/../Frameworks/Foo.framework/Foo Foo.framework/Foo
Во время выполнения загрузчик разрешит @executable_path путь к исполняемому файлу приложения. Очевидно, вам также необходимо настроить этап сборки Copy Files, чтобы скопировать фреймворк в папку Framework пакета приложений.
Вы также можете использовать install_name_tool
с флагом -change, чтобы изменить имя_установки библиотеки после того, как он уже был связан с приложением, но это явно неоптимально. Исправьте это перед установкой ссылки.
Вы также можете использовать install_name_tool
с флагом -change, чтобы изменить имя_установки библиотеки после того, как он уже был связан с приложением, но это явно неоптимально. Исправьте это перед установкой ссылки.
Вы также можете использовать install_name_tool
с флагом -change, чтобы изменить имя_установки библиотеки после того, как он уже был связан с приложением, но это явно неоптимально. Исправьте это перед установкой ссылки.