如何使用不同的构建配置设置Xcode项目依赖项?

alg*_*gal 12 xcode cocoa-touch buildconfiguration xcode7

我有一个Xcode 7.3工作区,有三个项目,App,FrameworkA和FrameworkB.每个项目都有一个目标.这是iOS,因此框架目标是Cocoa Touch Frameworks,这意味着包含动态链接共享库的框架.

应用程序依赖于依赖于框架B的框架A.这些依赖关系正在工作,只要A正确链接到B的构建产品,并且应用程序正确链接并嵌入框架A和B(因为您不能有一个框架嵌入另一个框架,似乎应用程序包需要链接和嵌入直接和传递依赖.)

但这是我的问题.框架A和B具有通常的构建配置,即调试和发布.App有一个额外的构建配置LocalRelease,它由Run构建操作触发,用于构建优化的构建(如Release),但代码用开发者身份(如Debug)签名.

当我尝试用这个LocalRelease构建配置构建App时,这打破了构建,因为它打破了框架A和B的依赖关系.我相信这是因为这些框架没有LocalRelease构建配置,所以Xcode从不将它们的构建产品放入LocalRelease-iphoneos文件夹,与App一样.

所以我的狭隘问题是,如何配置构建设置,以便具有非标准构建配置名称的项目(如LocalRelease)可以依赖于仅使用标准构建配置名称的其他项目?我希望有一个简单的方法可以做到这一点,不需要添加脚本或xcconfig文件,但如果有必要,我很乐意理解为什么.

我的更广泛的问题是,引入额外的构建配置通常是一个坏主意,因为它们不允许共享工作区中项目之间的依赖项的平滑交互?我被引导定义第三个配置,因为我想要一个优化的本地构建,我不想定义一个新的方案,我希望构建类型的选择由各种构建操作(运行,配置文件,发布)表示单一计划.

但也许这是错误的做法.只要构建配置名称驱动构建产品目录路径,并且依赖项目需要在共享目录中找到彼此的构建产品,似乎向项目引入非标准构建配置名称将破坏与之的互操作依赖于其他项目.

alg*_*gal 5

我就此向 Apple 提出了开发人员技术支持票,并与 WWDC 的 Xcode 工程师进行了交谈。

回答我自己的问题

如何配置构建设置,以便具有非标准构建配置名称(如 LocalRelease)的项目可以依赖于仅使用标准构建配置名称的其他项目?

答:做不到。

引入额外的构建配置通常是一个坏主意,因为它们不允许共享工作区中项目之间的依赖项的平滑交互?

回答:是的,这是一个坏主意。

因此,创建一个新的命名构建配置并不是做我想做的事情的聪明方法。不幸的是,似乎“最简单”的解决方案是包含 xcconfig 文件并为此类事情手动更改配置文件。

  • 为什么不能为 LocalRelease 配置设置 CONFIGURATION_BUILD_DIR 设置以匹配 Release 配置?这样,我认为应该在与 localrelease 配置相同的地方找到框架项目。 (2认同)