【发布时间】:2023-03-14 05:10:01
【问题描述】:
我有这个代码库,我决定将它变成一个框架,以便在我未来的应用程序中重用。
所以我继续为 Cocoa Touch 框架创建了一个 Xcode 项目。
为了简单起见(至少在我掌握框架的基础知识之前不考虑工作区),我创建了一个“测试床”iOS 应用程序,它嵌入/依赖/链接到框架作为 附加目标到同一个项目(不是一个单独的项目)。当然,这个想法是在我添加或修改框架时使用这个应用程序来测试我的框架功能。
所以我的项目有两个目标:
- 我的框架
- MyTestApp
...当然还有两个方案(每个构建一个):
我还在修改代码,使其在 iOS 和 macOS 上都可以使用。 警告:找不到目标“MyFramework (macOS)”的伞头,不会生成模块映射。
到目前为止,一切都很好。
此外,我还修改了代码,使其在 iOS 和 macOS 上都可以使用。
所以我又添加了两个目标:
- MyFrameworkMac
- MyTestMacApp
...aslo 设置,以便应用程序目标依赖、链接和嵌入框架。
还是不错的。
接下来,我决定进行一些清理和文件重新排列,以便在文件数量开始进一步增长之前保持整洁和合理。
然后,麻烦就开始了。
经过反复试验,我发现了一些事情:
1) 如果我更改 iOS 框架的目标名称并尝试构建 iOS 应用程序,我会收到以下警告:
/Users/Me/Projects/MyFramework/Code/MyFramework/:1:1: 模块“MyFramework”的伞头不包括标题 'PublicHeaderXX.h'
...对于我的主标头中包含的每个公共标头:
// In this header, you should import all the public headers of your framework
// using statements like #import <MyFramework/PublicHeader.h>
#import <MyFramework/PublicHeader01.h>
#import <MyFramework/PublicHeader02.h>
#import <MyFramework/PublicHeader03.h>
...
2) 如果我在 Build Settings 中更改 iOS 框架的 产品名称,我会收到错误:
词法或预处理器问题 | 'MyFramework/MyFramework.h' 文件未找到
...指向我在应用源代码中导入它的位置:
#import <MyFramework/MyFramework.h>
对于 Mac 框架目标,我可以更改目标名称,但如果我更改产品名称,我会收到警告:
警告:没有为目标“MyFrameworkMacRenamed”找到伞头, 不会生成模块图
所以我问...
有没有办法为每个框架目标设置我想要的目标名称和产品名称?
我确定在某个地方我应该“修改以匹配”并消除一些差异,但我是框架的新手,无法弄清楚......(什么是“伞形标题”无论如何?)
【问题讨论】:
标签: ios objective-c xcode cocoa frameworks