c++ - 从 CocoaPods 库中的编译中排除源文件

标签 c++ objective-c xcode shared-libraries cocoapods

我正在转换一个库 ( Unrar4iOS ) 以使用 CocoaPods,但我遇到了编译问题。大多数源文件都是 C++ 文件,其中一些文件没有直接添加到项目“编译源”列表中,而是通过 #include 编译的。当其中一个被自己编译时,它失败了,因为它取决于 #include 的文件(我知道有点奇怪)。

简而言之,我需要将文件下载到 Pods 目录中,但不将其包含在库的目标中。据我所知,source_files podspec 同时控制两者。有没有一种方法可以完全在库端实现这一点,而无需借助客户端项目的 Podfile 中的某些 Hook ?

最佳答案

我必须在 source_files 中列出每个需要显式编译的文件属性,并列出需要在 preserve_paths 中隐式构建的文件属性(property)。像这样:

Pod::Spec.new do |s|
  s.name          = "UnrarKit"
  ...
  s.source_files = "Classes/*.{mm,m,h}",
                   "Libraries/unrar/*.hpp",
                   "Libraries/unrar/archive.cpp",
                   "Libraries/unrar/arcread.cpp",
                   "Libraries/unrar/cmddata.cpp",
                   ...
                     # These files are built implicitly as dependencies
  s.preserve_paths = "Libraries/unrar/arccmt.cpp",
                     "Libraries/unrar/coder.cpp",
                     "Libraries/unrar/log.cpp",
                     ...

关于c++ - 从 CocoaPods 库中的编译中排除源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22209215/

相关文章:

iOS - CGContextStrokePath/CGContextDrawPath 删除黑色背景颜色

objective-c - typedef NS_ENUM 与 typedef 枚举

ios - Bitcast 要求两个操作数都是指针,或者 Swift 编译器都不会出错

c++ - 使用 boost.accumulators 来计算将某个属性设置为某个值的对象

c++ - 将模板函数声明为非模板函数的参数

c++ - 在c++中相对保存文件

c++ - C++ 中两个非常相似的类,只有一种不同的方法 : how to implement?

ios - 解析 : Using PFObject subclasses with PFCloud calls

iphone - 从格式为 "4/26/1980"的 NSString 中检索日或月 int

xcode - 如何在 xcode 中捆绑 openframeworks 应用程序(相对资源链接?)