【发布时间】:2015-10-25 18:51:31
【问题描述】:
我有一个应用程序和一个与之链接的 dylib。我的理解是应用程序包应该包含 dylib。对吗?
有没有办法在构建时将 dylib 复制到应用程序包中?
谢谢, 艾伦
【问题讨论】:
我有一个应用程序和一个与之链接的 dylib。我的理解是应用程序包应该包含 dylib。对吗?
有没有办法在构建时将 dylib 复制到应用程序包中?
谢谢, 艾伦
【问题讨论】:
有没有办法在构建时将 dylib 复制到应用程序包中?
嗯,当然——只要有一点 shell 脚本,一切皆有可能。 :)
在您的构建脚本中,在您调用 macdeployqt 之后,但在您完成任何代码签名之前,您需要将 .dylib 文件复制到您的 .app 文件夹内的 Contents/Frameworks 中。
之后的技巧是说服可执行文件在其新位置而不是在链接可执行文件时所在的位置查找库。 (如果您执行“otool -L ./MyProgram.app/Contents/MacOS/MyProgram”,您将看到程序正在查找共享库的位置,并且您会看到它不是在查找您的 .dylib 文件框架文件夹,但)
为此,您使用 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”,以确认可执行文件现在已设置为在 Frameworks 文件夹中查找 .dylib 文件。
【讨论】: