从包含iOS应用程序修改框架构建设置

时间:2016-10-04 14:34:18

标签: ios xcode build-settings xcconfig

我们开发了一个开源框架,可以使用各种预处理器标志构建,以启用/禁用某些功能。至关重要的是,这些功能仅在实际需要时(由框架用户)编译,因为它们可能具有App Store提交含义。它不是在运行时配置功能的选项。

该框架是一个标准的iOS框架,即它动态链接并嵌入在主机应用程序中,因此它有自己的构建设置,与主机应用程序分开。

为了允许上述配置,框架项目使用其根目录中的xcconfig文件,该文件包含到框架目录之外的可选文件的钩子:

#include? "../FrameWorkConfigurationFlags.xcconfig"

这允许用户在框架目录之外提供配置文件,这对于使用git子模块很重要。

我们还提供了一个链接/嵌入框架的示例应用程序(通过Xcode子项目)并且需要提供配置,但它与框架位于同一目录/存储库中,因此无法使用钩子。

HostAppDir
|-- FrameWorkConfigurationFlags.xcconfig
`-- Framework
    |-- ConfigurationWithHook.xcconfig
    `-- SampleApp
        `-- SampleConfigurationFlags.xcconfig

任何创意如何解决这个问题?我们考虑过的一些事情:

  • 在框架目录/存储库中的路径中添加第二个挂钩,这不起作用,因为如果用户签出包含示例应用程序的框架,将始终使用示例应用程序的配置

    < / LI>
  • 也许有一个环境变量可以用来检测主机应用程序的源目录?类似#include? "$(SRCROOT)/FrameWorkConfigurationFlags.xcconfig"的内容,但$(SRCROOT)不是框架的目录,而是主机应用程序。 It seems<DEVELOPER_DIR>有特殊处理,但我也无法在包含路径中使用常规环境变量。

  • 我们可以重构我们的示例应用程序以使用CocoaPods检出并嵌入框架,并忽略已经存在的本地副本,但我们不希望使用任何其他技术来使用示例应用程序

  • 编写自定义构建脚本阶段...

0 个答案:

没有答案