【问题标题】:Archive file generated by Xcode missing dylibsXcode 生成的存档文件缺少 dylibs
【发布时间】:2019-04-09 14:39:36
【问题描述】:

我正在开发一个 iOS 应用程序,使用 CMake 生成一个 Xcode 项目,该项目为我提供了一个应用程序目标和几个 C++ 动态库。

问题是当我通过 Xcode 归档它时,归档文件中的应用程序没有任何 dylib 文件或我在常规构建树中拥有的其他资源。我在 CMake 中缺少什么?对于我的常规构建,我使用 CMake install 来获取应用程序文件夹中的 dylib。我错过了什么?

【问题讨论】:

  • 我认为 iOS 不支持裸 dylib-s。要么将它们编译为静态库 (.a),要么尝试包装为框架。

标签: c++ ios xcode cmake


【解决方案1】:

正如 battlmonstr 所提到的,iOS 不支持原始 dylib,因此我将它们重新制作为框架。我还必须将框架的安装目录框架>构建设置>部署)设置为正确的路径。例如,我的归档文件最终位于 /User//Library/Developer/Xcode/Archive/。在存档文件中,我有一个 Product > Applications 文件夹,这是我的存档应用程序的存储位置。因此,在我的 Installation Directory 路径中,我会将路径设置为:/Applications/.app/Frameworks,以便在存档时将我的框架放在那里。通过 CMake,我为我的框架设置了以下属性:

XCODE_ATTRIBUTE_INSTALL_PATH "/Applications/${PROJECT_NAME}.app/Frameworks"

但是,这改变了框架的 Dynamic Library Install Name Base 构建设置(Framework > Build Settings > Dynamic Library Install Name Base)。这导致通过 rpaths 查找我的框架时出现问题,因此我还必须在 CMake 中使用以下内容设置此属性:

XCODE_ATTRIBUTE_DYLIB_INSTALL_NAME_BASE "@rpath"

至于资源,我发现将它们部署到存档文件中正确位置的最简单方法是在 CMake 中使用 MACOSX_PACKAGE_LOCATION

set_property(SOURCE ${MY_RESOURCES} PROPERTY MACOSX_PACKAGE_LOCATION ${MY_RESOURCES_DEST_DIR})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2012-02-17
    • 2012-05-21
    • 1970-01-01
    • 2016-10-11
    相关资源
    最近更新 更多