Objective c 组织客户机、服务器和插件的框架

Objective c 组织客户机、服务器和插件的框架,objective-c,xcode,macos,frameworks,mac-frameworks,Objective C,Xcode,Macos,Frameworks,Mac Frameworks,我正在从事一个大型项目,该项目包括一个服务器、一些用于控制可加载到服务器进程中的设备的插件,以及可以连接到服务器的客户端。我正在寻找构建最终需要存在的框架的最佳实践 有在客户端、服务器和插件之间共享的头文件,以及一些特定于系统各个方面的头文件。有时头文件只在客户端和服务器之间共享,或者服务器和插件之间共享。类似地,项目的所有三个方面都可以共享公共代码,并且只有一个特定方面需要这些代码 项目完成后,我们需要发布一个客户端应用程序和插件开发人员API,供第三方开发 我不知道如何正确构建支持这一点所需

我正在从事一个大型项目,该项目包括一个服务器、一些用于控制可加载到服务器进程中的设备的插件,以及可以连接到服务器的客户端。我正在寻找构建最终需要存在的框架的最佳实践

有在客户端、服务器和插件之间共享的头文件,以及一些特定于系统各个方面的头文件。有时头文件只在客户端和服务器之间共享,或者服务器和插件之间共享。类似地,项目的所有三个方面都可以共享公共代码,并且只有一个特定方面需要这些代码

项目完成后,我们需要发布一个客户端应用程序和插件开发人员API,供第三方开发

我不知道如何正确构建支持这一点所需的框架

我需要有两个独立的框架吗?或者我可以有一个包含所有头并提供两个单独的dylib的框架吗

如果我需要两个独立的框架,那么如何处理在系统所有方面之间共享的头文件?我不想将它们复制到每个框架中以避免版本控制可能出现的问题

第三个仅标题的框架是合理的选择吗


有谁能推荐一种在OS X上使用框架构建此类内容的最佳实践吗?

该库的Framework=library+headers

每个框架只需要包含要公开的接口的头文件。即使使用公共头构建所有三个框架,您也不必捆绑它们

即使其中一个框架只绑定公共头而根本没有库,3框架方法也可以。示例:如果您在Mac上安装Qt,您将看到它在许多框架中被拆分,但它们之间的头文件永远不会重复。还有一些框架只包含头而不包含代码(例如QtScript.framework)