我正在转换一个库 ( 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/