Mac Catalyst 构建失败,"building for Mac Catalyst-x86_64 but attempting to link with file built for Mac C



更新到Xcode 12.2后,由于Apple Silicon相关的链接错误,我的项目开始无法编译。我似乎已经修复了其中的大部分,但有一个构建静态链接框架的子项目给我带来了问题。然而,具有明显相同构建设置的同级子项目却没有。

在链接过程中,我收到了关于一个框架的警告:

ld:警告:正在忽略文件。。。构建/产品/调试maccatalyst/TCSiOSC.framework/TCSiOSC,为Mac Catalyst-x86_64构建,但试图与为Mac Catolyst-arm64 构建的文件链接

我在英特尔Mac上构建,以启动(所以"仅构建活动体系结构"不是一个因素(。我找不到任何能解决这个问题的构建设置,而且Web搜索也没有发现这个确切的错误。任何想法都值得赞赏!

我咨询了苹果公司,他们的工程师推荐了一些东西:

  1. 将任何Swift子项目转换为Swift包,而不是嵌入的Xcode项目。因此,我从父项目中删除了一个库的Xcode项目,并将其顶层目录拖到父项目中,将其作为Swift包包含在内。现在这个特殊的子项目(SQLite.swift(已经定义了swift包。我以前还没有自己生成过Swift包,所以我没办法。此外,不要忘记将其添加到应用程序目标上的Frameworks、Libraries和Embedded Content列表中。

  2. 进入您的项目的构建设置并删除;支持的平台";背景如果你点击";"水平";按钮,您可以看到每个设置的来源"支持的平台";应为非粗体。高亮显示该行,如果该行为粗体,请按Delete。然后进入你的目标并做同样的事情:删除";支持的平台">

  3. 将项目(顶级(级别的Base SDK设置为iOS;这是必须的。从目标级别删除它,因此它继承自项目;我不知道这是否适用于多种目标或所有项目,但它对我有效

  4. 从所有目标中删除VALID_ARCHS生成设置(如果存在(。该设置已弃用。

;构建主动体系结构";在我的情况下,经过这些更改后,设置没有任何区别。该项目现在在Catalyst下构建和运行得很好。

我遇到了同样的问题,发现了这个问题。在我的案例中,在Debug上构建成功,但在Release上构建失败。原因正是";仅构建活动体系结构";选项这是一个选项,可以在您的PROJECT中找到-";构建设置";选项卡然后";建筑学;部分存在用于";仅构建活动体系结构";。默认情况下,调试模式为是,而发布模式为否。这导致我的构建在发布中失败。

相关内容

最新更新