【问题标题】:How can I bundle a dylib within a Mac app bundle in Qt?如何在 Qt 的 Mac 应用程序包中捆绑 dylib?
【发布时间】:2015-10-25 18:51:31
【问题描述】:

我有一个应用程序和一个与之链接的 dylib。我的理解是应用程序包应该包含 dylib。对吗?

有没有办法在构建时将 dylib 复制到应用程序包中?

谢谢, 艾伦

【问题讨论】:

    标签: c++ macos qt bundle dylib


    【解决方案1】:

    有没有办法在构建时将 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 文件。

    【讨论】:

    • 我不确定是否有一种内置的方法可以让我这样做,但这确实可以解决问题。谢谢!
    猜你喜欢
    • 2014-10-08
    • 2015-12-04
    • 2013-05-30
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多