我需要做什么才能使Cocoapods用C ++构建?

时间:2019-10-23 18:34:31

标签: c++ ios xcode cocoapods

我正在尝试建立一个通过Cocoapods分发的库。该库主要用Objective C编写,但包含一些C ++文件。 C ++头文件都不是库的公共API的一部分。该库可以在Xcode中很好地构建,并且我可以作为框架进行分发,但是pod可能更易于其他人使用,对吧?

这是我第一次尝试构建cocoapod,所以我可能做错了明显的事情。

当我运行pod lib lint或尝试构建依赖于pod的演示应用程序时,我收到错误消息,提示构建系统完全不了解C ++。

在C ++头文件中:

class CGuard {
> unknown type name 'class'; did you mean 'Class'?

在另一个C ++头文件中:

template<typename T>
class CContexts {
> unknown type name 'template'

我的podspec文件包括

spec.xcconfig = {
  'CLANG_CXX_LANGUAGE_STANDARD' => 'c++11',
  'CLANG_CXX_LIBRARY' => 'libc++'
}
spec.library = "c++"

我还能做什么来告诉构建系统使用C ++编译器?

1 个答案:

答案 0 :(得分:0)

似乎关键在于添加private_header_files条目以从Cocoapods导出的框架中删除C ++标头。

尽管据记录,Cocoapods仅将public_header_files中的文件包含在生成的模块伞头中,但是如果subspec部分没有包含所有头,则看起来每个subspec部分都包含了所有头没有自己的public_header_files条目。

所有C ++文件都在subspec部分中进行了编译,以允许我使用不同的编译器设置,因此private_header_files项也必须位于该subspec部分中。