我应该如何处理包中的头文件?

Posted

技术标签:

【中文标题】我应该如何处理包中的头文件?【英文标题】:How should I handle header files in a bundle? 【发布时间】:2012-07-06 17:26:07 【问题描述】:

我想开发一个依赖插件(这里:可加载包)工作的程序。要求多个插件使用相同的AFNetworking 资源来发出网络请求。但是,我不知道将AFNetworkingCustomPluginProtocol 标头放在哪里。

这是我的程序结构现在的样子:

MyApp.xcodeproj
  - AFNetworking
    - Header.h
  - Plugins
    - Plugin1.xcodeproj
      - PrincipalClass.m
    - Plugin2.xcodeproj
      - PrincipalClass.m
  - Classes
    - CustomPluginProtocol.h
    - MainClass.m

当然,PluginN 中的每个principalClass 都符合CustomPluginProtocol

是否必须在每个包中复制标头? 我可以只在我的插件中包含主程序AFNetworking 标头吗?如果是这样(这就是我现在所做的),我没有任何完成。我怎样才能得到它?

编辑

好的,所以我的问题可能不清楚。

我希望我的插件使用来自主应用程序的资源,比如CommonClass.mCommonClass.h。插件在它们的包中是否需要CommonClass.h,如果不需要,当我在插件范围内时如何启用完成?

【问题讨论】:

头文件不会被添加到包中。除非您将文件添加为资源。 每个需要 AFNetworking 的插件项目都会链接到该库。 AFNetworking 不是真正的库,因为它没有与我的主应用程序分开编译。它只是一个文件夹中的一堆文件。如何使PluginN 正确看到AFNetworking 标头? 【参考方案1】:

你有两个选择:

1) 生成一个框架,其中包含 <Your Framework>/Headers/ 中的标头

2) 只需将标题提供给开发人员

我更喜欢选项 1,因为它更容易理解和跟踪所有内容,但是像 Photoshop 这样的应用程序一直使用选项 2,所以它完全可行。使用选项 1,开发人员会将您制作的框架添加到他们的 Xcode 项目中,而 #include <FrameworkName/HeaderName.h>。使用选项 2,您将为他们提供一个标题文件夹,他们会将其放在对他们方便的地方,然后将其添加到他们的标题搜索路径和 #include "FolderName/HeaderName.h"

【讨论】:

以上是关于我应该如何处理包中的头文件?的主要内容,如果未能解决你的问题,请参考以下文章

将Rcpp头文件导入NAMESPACE中的R包中

C++中CTime的头文件

老旧的API,你应该如何处理?

VS c++2005中头文件有的为啥必须加.h比如malloc

我应该从哪里获得 STM32 微控制器的头文件?

windows与linux 头文件对照