Xcode缺少dylib生成的存档文件

时间:2019-04-09 14:39:37

标签: c++ ios xcode cmake

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

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

1 个答案:

答案 0 :(得分:0)

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

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

但是,这更改了框架的动态库安装名称库构建设置(框架>构建设置>动态库安装名称库)。这导致通过 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})