0

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

问题在于该框架具有具有不同行为的 Debug/Release 变体(不仅仅是不同的编译器选项,还可能实际执行不同的代码)。

分发这个以及人们设置他们的 Xcode 项目的最惯用的方式是什么?

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

所以我可以在这样的文件夹中给他们框架:ECLogging/Debug/ECLogging.framework Release/ECLogging.framework

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

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

在 Copy Files 阶段(进行嵌入的正常方式),Xcode 想知道它到底在哪里,我认为我无法以某种方式使用环境变量来告诉它。

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

有没有更好的办法?

4

1 回答 1

1

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

#if DEBUG
[ECLogging setDebugModeEnabled:YES];
#endif
于 2013-04-02T15:20:39.647 回答