我正在尝试建立一个通过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 ++编译器?
答案 0 :(得分:0)
似乎关键在于添加private_header_files
条目以从Cocoapods导出的框架中删除C ++标头。
尽管据记录,Cocoapods仅将public_header_files
中的文件包含在生成的模块伞头中,但是如果subspec
部分没有包含所有头,则看起来每个subspec
部分都包含了所有头没有自己的public_header_files
条目。
所有C ++文件都在subspec
部分中进行了编译,以允许我使用不同的编译器设置,因此private_header_files
项也必须位于该subspec
部分中。