【问题标题】:why `xcodebuild` building the same application differently为什么`xcodebuild`以不同的方式构建相同的应用程序
【发布时间】:2021-08-11 11:34:27
【问题描述】:

为什么xcodebuildschemetarget 选项构建相同的应用程序?

xcodebuild -target uConnect build

以上命令在 build 文件夹中使用 Release config 构建 项目。

xcodebuild -scheme uConnect build 

在 Xcode 的 DrivedData 文件夹中使用 Debug 配置进行构建。

想了解 -target 和 -scheme 选项在这里有何不同?

据我了解,由于我们在 Project>>Info>Configuration 中选择了 Release,因此应该始终以 Release 模式构建应用程序

使用Release 进行命令行构建

参考:

Screenshot of Scheme Details for reference

【问题讨论】:

    标签: ios xcode build-tools


    【解决方案1】:

    尝试编辑方案。您将看到它在构建时指定了 Debug 配置。它可能看起来像这样:

    但是,正如您所说,当您构建目标时,您已经指定了发布配置。

    【讨论】:

    • 您附加的屏幕截图是方案的“运行”阶段,您可以看到我正在执行的构建 .app 的命令。您还可以在问题描述中看到我在构建目标或使用方案构建时没有传递任何配置。
    • 是的,但该方案必须以某种方式决定如何处理构建。想一想:在现实生活中,您无需运行即可构建。 that 是如何工作的,你应该问问自己。
    • 关于这一点;我同意你的观点,Scheme 必须决定“建造什么”,但我的问题在哪里仍然是一样的?假设我想在我们有 -scheme 的地方更改构建以从调试中发布。当我使用 -target 选项时,您可以从@EmilioPelaez 看到其他答案,我可以使用该下拉菜单将输出从发布更改为调试;他在谈论。
    • 我刚刚验证了你所说的,你是正确的。更改运行阶段的配置(根据您附加的屏幕截图)以从调试中释放;确实将.app从调试中释放出来......我的想法与你的相反;我们可以在不运行的情况下构建。跑步与建筑完全不同。构建应用程序不需要运行它。
    • 看:您必须根据构建设置进行构建,并且需要指定配置。您喜欢或期望什么并不重要。
    【解决方案2】:

    目标描述了 Xcode 将构建的产品,例如您的应用、测试、App Clip 或扩展。当使用-target 时,它将使用屏幕截图底部下拉菜单中指定的配置。

    方案是描述如何在不同情况下构建特定目标的配置。如果您转到方案编辑器,您会看到您可以选择在运行、测试、分析、分析和归档时构建哪个配置。

    【讨论】:

    • @EmillioPelaez 关于“目标”的解释现在对我来说很有意义,但仍然不清楚使用“方案”构建为什么它在调试模式下构建 .app。更新方案截图供参考
    • 您是否进入 Scheme 编辑器查看不同类型的构建类型使用了哪个配置?
    • 感谢@EmilioPelaez;您提供的有关 -target 以及如何处理其配置的信息;有帮助。从@matt 获得有关 -scheme 及其配置的信息。将方案“运行”阶段配置从调试更改为发布...将构建从调试切换到发布...但是为什么“运行”阶段甚至在我“构建”时发挥作用(命令:“xcodebuild -scheme uConnect build ")。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 2020-06-15
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多