objective-c - 出现错误“在框架模块中包含非模块化标头”
问题描述
我有一个写在CommonCrypto之上的私有 pod,它明确依赖于 CommonCrypto。标头具有 CommonCrypto 声明的类型,例如:
#include <CommonCrypto/CommonDigest.h>
typedef CC_SHA256_CTX qwer_digest_evp;
由于CC_SHA256_CTX
在 CommonCrypto 中声明,我不能简单地将标头导入移动到实现文件中。
我使用 cocoapods 将此 pod 集成到我的项目中,并尝试了下面的安装后挂钩,但它不起作用(从SO中挑选)。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
target.build_settings(config.name)['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES'
end
end
end
解决方案
一个有效的选择可能是构建一个模块版本CommonCrypto
(可能添加了 CocoaPods 魔法)。这可以按照在 Swift 框架中导入 CommonCrypto的答案中的步骤来完成。该解决方案与 Xcode 项目中的 Objective-C 或 C 功能一样好。
引用答案:
我在jjrscott 的回答中添加了一些 CocoaPods 魔法,以防您需要在 CocoaPods 库中使用 CommonCrypto。
推荐阅读
- arrays - MIPS - 无法找到数组中的最小值
- javascript - 我们如何才能在 Ag-grid Tree 数据中显示重复项?
- elasticsearch - Elasticsearch:从查询匹配中计算文档
- android - ResourceType 对于资源条目索引超出类型 entryCount
- reactjs - 如何使用 Material-UI 在 React JS 中对表格中不是数字或文本的项目进行排序?
- php - 进行 Angular 6 php mysql api 调用
- sql - 在将数据添加到访问数据库之前检查重复条目
- ajax - 点跟踪显示在执行多个 ASP.NET MVC 操作时等待 CPU
- web-config - 如何强制 IIS7 立即查看 Web.config 中的更改?
- node.js - 如何使用 Cloud Functions for Firebase 获取子值的键?