Cocoapods规范使用C ++并编译为框架

时间:2015-04-07 20:55:56

标签: c++ swift cocoapods podspec audiokit

快速摘要:如何将包含Xcode的标头的包含路径添加到.podspec.json文件?

我正在开发一个Swift项目,我希望将AudioKit作为依赖项。对于这个项目,我必须添加' use_frameworks!'在我的Podfile中

所以我在Pod文件中添加了我的Pod(主要的repo还没有更新,这就是我直接指向github repo的原因)

pod 'AudioKit', :git => 'https://github.com/niklassaers/AudioKit.git'

并添加我的一个Swift文件

import AudioKit

然后我的编译器会警告我CsoundFile.hpp引用了无法找到的iostreamiostream.h位于:

  

/Applications/Xcode62.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/c ++ / 4.2.1 /后退/ iostream.h

与stdlib.h相比:

  

/Applications/Xcode62.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdlib.h

如何将此标题目录添加到AudioKit.podspec.json(我已经分叉)的搜索路径中。

我已经制作了一个示例项目,演示了我在上面写的内容:https://github.com/niklassaers/AudioKitSwiftFrameworkError - 您可以下载并编译它,然后您就会看到错误消息。

1 个答案:

答案 0 :(得分:5)

这里的主要问题是AudioKit.podspec.json缺少公共标头定义。因此,所有标头都被认为是公共的,包括C ++标头。

由于没有来自Objective-C类头的传递导入,如果只将那些声明为public,它仍然可以工作:

"public_header_files": [
  "AudioKit/Core Classes/**/*.h",
  "AudioKit/Instruments/**/*.h",
  "AudioKit/Notes/**/*.h",
  "AudioKit/Operations/**/*.h",
  "AudioKit/Parameters/**/*.h",
  "AudioKit/Sequencing/**/*.h",
  "AudioKit/Tables/**/*.h",
  "AudioKit/Utilities/**/*.h"
],
…
"osx": {
   …
   "public_header_files": ["AudioKit/Platforms/OSX/classes/*.h"]
}
"ios": {
   …
   "public_header_files": ["AudioKit/Platforms/iOS/classes/*.h"]
}