得到错误“在框架模块中包含非模块化头”

时间:2018-06-28 10:13:38

标签: objective-c frameworks cocoapods commoncrypto

我在CommonCrypto上方写了一个私有pod,该私有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

1 个答案:

答案 0 :(得分:0)

一个有效的选择可能是构建CommonCrypto的模块版本(也许添加了CocoaPods魔术)。可以按照Importing CommonCrypto in a Swift framework的答案中的步骤进行操作。该解决方案与Xcode项目中的Objective-C或C一样好用。

引用答案:

  

如果您需要在CocoaPods库中使用CommonCrypto,我已经在jjrscott's answer中添加了一些CocoaPods魔术。