如何分发cocoa框架的多个变体

时间:2013-03-21 20:27:37

标签: objective-c xcode cocoa frameworks

我有一个我想分发的Cocoa框架。对于那些不想把它作为一个子模块并自己构建的人,我想提供一个预建版本:ECLogging.framework。

皱纹是框架具有不同行为的调试/发布变体(不仅仅是不同的编译器选项,但可能实际执行不同的代码)。

分发此内容以及人们设置Xcode项目的最常用方法是什么?

我希望人们能够#import,所以我不能将框架的调试版本重命名为ECLoggingDebug.framework(例如)。

所以我可以在这样的文件夹中给它们框架: ECLogging /   调试/     ECLogging.framework   发布/     ECLogging.framework

人们很容易设置一个框架搜索路径ECLogging / $(CONFIGURATION)/,它会选择正确的。

这在编译和链接期间工作正常,但您还需要将正确的版本嵌入到构建的应用程序中。

在复制文件阶段(执行嵌入的常规方式),Xcode想知道它到底在哪里,我认为我不能以某种方式使用环境变量来告诉它。

我当然可以编写一个脚本,只是复制它。我对此很好,但是要让框架的用户这样做似乎很笨拙。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

假设我正确理解了这个场景,这就是我要做的。我只做了一个版本的框架。而不是使框架的行为依赖于编译时调试/发布配置(可能使用#ifdefs等),我使用(Framework)全局变量来指示调试与发布模式。我将添加一个简单的方法来打开调试模式(例如[ECLogging setDebugModeEnabled:YES]),用户可以在启动时调用它来更改框架的行为。然后,对他们来说很容易:

#if DEBUG
[ECLogging setDebugModeEnabled:YES];
#endif