xcode - 在 Xcode 4 工作区中,如何将build设置和配置级联到子项目

标签 xcode xcode4 xcodebuild

概述
我正在使用静态库和 Xcode 4 工作区来实现 iOS 开发中的模块化,这是一种越来越普遍的技术。例如,我可能有一个包含 App 项目和 Library 项目的工作区,例如 so1:
Workspace with App & Library
然后,您将有一个计划来构建这些看起来像这样的东西:
Scheme
我想做的是让“App build”控制它启动的“Library build”,至少有两种方式:

  • 将 App 配置(例如 Debug、AdHoc)映射到任意库配置
  • 传递 -D 定义的某些子集,和/或为库构建指定这些。

  • 我将在各自的部分中处理每一个,但值得做一些澄清。
    澄清
  • 我在这里使用 App/Library 作为您可能拥有的任何 super 项目/子项目关系的简单代理。
  • 据我所见,Xcode 3 风格的嵌入式子项目在 Xcode 4 中的工作方式似乎与工作区“对等方”没有任何不同。我很想在这件事上犯错。
  • 我知道我几乎可以用“运行构建脚本”构建阶段和 xcodebuild 来做任何事情。但我试图在这里的系统内工作,其中依赖项在方案中指定,否则有些松散耦合。
  • 该库的存在不仅仅用于此项目,因此您不能随意使用特定于该应用程序构建的垃圾加载它,或引用任何特定于应用程序或工作区的内容。对于一般情况,这排除了在 App 项目中包含静态 .xcconfig 作为将构建信息从 App 传送到库的一种方式。
  • 在工作区之外建立图书馆牺牲太多,不是一种选择。

  • 配置映射
    据我了解,构建特定的应用程序配置将:
  • 如果库中存在同名配置,它将使用该配置构建库。
  • 否则,它将构建库的事件配置,如库的项目文件中指定的那样。

  • 据我所知,在不诉诸上述 run-build-script hack 的情况下,这就是人们对子项目构建配置的控制程度。请告诉我不同​​的。
    理想情况下,我可以指定(大概在方案中):
    AppConfigA -> LibConfig1
    AppConfigB -> LibConfig2
    
    虽然 Debug、AdHoc 和 Release 可能是某些人曾经使用的唯一配置,但复杂的项目通常会超出这些配置。
    定义
    我还没有找到将 -D 定义从 App 构建传递到库的方法,而无需借助 xcodebuild,它可以采用例如 .xcconfig 文件。
    可以在 Library build run-build-script 阶段访问应用程序的build设置。但是,这样做会在库中引入对 App 项目的依赖关系,这有充分的理由被禁止(参见 Clarifications)。但即便如此,我还没有找到一种方法来使用这些设置来直接控制库的构建(much2)。
    太疯狂了,可能...
    我在写这篇文章时想出的一个方案是:
  • 库的构建配置基于一个空(虚拟)LibraryExternals.xcconfig文件在它自己的项目中。
  • 清理库会删除该文件。如果图书馆的独立版本不存在,它将创建一个空的。
  • 该文件被 App Build run-build-script 阶段覆盖,并包含应用程序想要与 Library 构建通信的任何内容。

  • 看起来有点复杂,但我现在正在寻找任何东西。如果没有更好的结果出现,我会提出这个答案。

    1 显示的应用程序是 Max OS X。我发现命令行应用程序可以进行更简单的测试。同样适用。
    2 参照。 Info.plist 预处理,这是我在这次调查中了解到的。

    最佳答案

    如果您修改项目结构以使用具有多个目标的单个项目,则每个目标的build设置将自动从项目继承。从那里,您可以修改您想要不同的设置,或者选择一个单独的设置并按删除键将其设置为项目指定的默认值。

    关于xcode - 在 Xcode 4 工作区中,如何将build设置和配置级联到子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8509368/

    相关文章:

    iphone - 如何在我的 iOS 应用程序中链接到网站或 Safari

    c++ - 无法在 Xcode 4 c++ 工具中打开文本文件资源?

    iphone - 如何在 Xcode 中动态填充 Info.plist 值?

    ios - 如何确定构建是调试还是发布

    xcode - 从命令行将文件添加到xcodeproj

    xcodebuild -exportArchive 命令返回错误 "... ' 方法': expected one of {}, 但找到应用程序商店"

    ios - Swift:通过单击按钮修改数据格式

    ios - 如何更改我的 iOS 应用程序的权利?

    ios - 我收到信号 SIGABRT 和日志消息

    c - 如何在 Xcode 4 中创建一个新的 C 文件?