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

时间:2014-03-05 21:04:25

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

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

简而言之,我需要将文件下载到Pods目录中,但不要将其包含在库的目标中。据我所知,source_files podspec同时控制两者。有没有办法在库方面实现这一点,而不需要在客户端项目的Podfile中使用某些钩子?

1 个答案:

答案 0 :(得分:2)

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

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",
                     ...