我需要做些什么才能使用C++构建茧

What do I need to do to get cocoapods to build with C++?

本文关键字:C++ 构建 做些什么      更新时间:2023-10-16

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

这是我第一次尝试建造茧,所以我可能做了一些明显错误的事情。

当我运行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++编译器?

看起来键是在添加private_header_files条目,以从Cocoapods导出的框架中删除C++标头。

尽管Cocoapods被记录为只在生成的模块伞形标头中包括来自public_header_files的文件,但如果subspec节没有自己的public_header_files条目,则看起来每个subspec节都包含了所有标头。

C++文件都是在subspec节中编译的,这样我就可以使用不同的编译器设置,所以private_header_files条目也需要在subspec节中。