来自也使用CocoaPods

时间:2018-01-06 06:30:22

标签: cocoapods podspec

摘要:如何使用Podfile制作包含项目本身的podspec?

我构建了一个Mac框架,作为工作区的一部分,我使用了一个cocoapod库OpenSSL-Universal。链接库全部用C语言编写,而我的项目是在Swift中,所以我创建了一个名为SwiftSSL的目录,并在其中放置了一个module.modulemap文件:

  

模块SwiftSSL {
    标题“../Pods/Headers/Public/OpenSSL-Universal/openssl/ssl.h”
    标题“../Pods/Headers/Public/OpenSSL-Universal/openssl/crypto.h”
    出口*
  }

在我的项目中让我import SwiftSSL,而不是使用桥接头文件。

通过我的单元测试似乎工作正常。现在我想将整个事情变成一个自己的pod,但我不能为我的生活弄清楚如何编写podfile以便调用项目不需要在他们的安装中包含OpenSSL-Universal

我尝试将这些行添加到我的podspec:

  

s.source_files =“** / *。{h,swift}”
    s.exclude_files =“类/排除”
    s.preserve_paths =“SwiftSSL / module.modulemap”
    s.xcconfig = {
      “SWIFT_INCLUDE_PATHS”=> “$(SRCROOT)/ SwiftSSL / **”,
      'HEADER_SEARCH_PATHS'=> “$(SRCROOT)/荚/头/公/ OpenSSL的通用型”,
      'LIBRARY_SEARCH_PATHS'=> “$(SRCROOT)/豆荚/ OpenSSL的通用型/ lib下的宏”
    }

但是当我pod spec lint我的文件时,我遇到了大量的构建错误:

  

- > SwiftHttp2(0.0.1)
       - 错误| [OSX] xcodebuild:返回不成功的退出代码。您可以使用--verbose获取更多信息        - 注意| [OSX] xcodebuild :: 1:9:注意:包含在文件中:1:
       - 注意| [OSX] xcodebuild:目标支持文件/ SwiftHttp2 / SwiftHttp2-umbrella.h:13:9:注意:目标支持文件中包含的文件/ SwiftHttp2 / SwiftHttp2-umbrella.h:13:
       - 错误| [OSX] xcodebuild:SwiftHttp2 / Pods / OpenSSL-Universal / include-macos / openssl / aes.h:55:11:错误:找不到'openssl / opensslconf.h'文件
       - 注意| [OSX] xcodebuild :: 0:错误:无法构建Objective-C模块'SwiftHttp2'
       - 注意| [OSX] xcodebuild:ld:warning:找不到选项'-LPods / OpenSSL-Universal / lib-macros'的目录        - 注意| xcodebuild:clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
       - 注意| [OSX] xcodebuild:错误:无法解析调试映射“/Users/scott/Library/Developer/Xcode/DerivedData/App-cwmkyklahssytecgweyweofvxvis/Build/Products/Release/SwiftHttp2/SwiftHttp2.framework/Versions/A/SwiftHttp2”:没有这样的文件或目录
       - 错误| [OSX] xcodebuild:/Users/scott/Library/Developer/Xcode/DerivedData/App-cwmkyklahssytecgweyweofvxvis/Build/Products/Release/SwiftHttp2/SwiftHttp2.framework/Modules/module.modulemap:9:12:错误:标题'SwiftHttp2-没有找到Swift.h        - 错误| [OSX] xcodebuild:/var/folders/vn/nlxdstyj57q667x6_c5kl72m0000gp/T/CocoaPods-Lint-20180105-63782-3kwgth-SwiftHttp2/App/main.swift:1:8:错误:无法构建Objective-C模块'SwiftHttp2'
       - 注意| [OSX] xcodebuild:ld:warning:找不到选项'-LOpenSSL-Universal / lib-macros'的目录
       - 注意| [OSX] xcodebuild:错误:无法解析调试映射“/Users/scott/Library/Developer/Xcode/DerivedData/App-cwmkyklahssytecgweyweofvxvis/Build/Products/Release/App.app/Contents/MacOS/App”:没有这样的文件或目录

1 个答案:

答案 0 :(得分:0)

在podspec中用一个额外的行定义依赖关系应该足够了:

s.dependency 'OpenSSL-Universal'

详细了解如何创建CocoaPods herehere