У меня есть приложение и dylib, на которые оно ссылается. Насколько я понимаю, пакет приложений должен содержать dylib. Это верно?
Есть ли способ скопировать dylib в комплект приложений при сборке?
Спасибо,
Алан
Есть ли способ скопировать dylib в комплект приложений при сборке?
Ну, конечно — с небольшим сценарием оболочки все возможно. 🙂
В вашем скрипте сборки после того, как вы вызвали macdeployqt, но до того, как вы сделали какую-либо подпись кода, вы должны скопировать файл .dylib в Contents / Frameworks внутри вашей папки .app.
Хитрость после этого заключается в том, чтобы убедить исполняемый файл искать библиотеку в ее новом расположении, а не в том месте, в котором она находилась, когда вы связывали исполняемый файл. (Если вы сделаете «otool -L ./MyProgram.app/Contents/MacOS/MyProgram», вы увидите места, где программа ищет общие библиотеки, и вы увидите, что она не ищет ваш файл .dylib в папка Frameworks, пока что)
Для этого вы используете команду install_name_tool, например:
install_name_tool -change /the/old/path/to/the_library_name.dylib "@executable_path/../Frameworks/the_library_name.dylib" ./MyProgram.app/Contents/MacOS/MyProgram
После этого вы можете снова запустить «otool -L» в своем исполняемом файле, чтобы убедиться, что исполняемый файл теперь настроен на поиск файла .dylib в папке Frameworks.
Других решений пока нет …