我有一个应用程序和它链接的dylib。我的理解是应用程序包应该包含dylib。这是对的吗?
有没有办法在构建时将dylib复制到应用程序包?
谢谢, 艾伦
答案 0 :(得分:7)
有没有办法在构建时将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文件。