【问题标题】:How to create a PodSpec for a project with a static library target?如何为具有静态库目标的项目创建 PodSpec?
【发布时间】:2013-03-23 22:13:06
【问题描述】:

我有一个 Xcode 项目 (foo),它构建了一个静态库 (libfoo.a),其中包含一些重要的预/后期构建步骤。传统上,当我在另一个项目中使用这个库时,我会在我的主项目中添加 foo.xcodeproj 作为子项目,然后在主项目中连接构建依赖项设置。

我希望使用 CocoaPods 让这一切变得更容易,但我不确定它是为此而设计的。我是否应该将构建设置从 foo 项目复制到一个 pod 规范中,以便 CocoaPods 可以按照它想要的方式构建它?我的构建前/构建后步骤呢?

有关于像 TestFlightSDK 一样为闭源 pre-compiled libraries 创建 Pod 的信息,但我不想预编译我的库。

【问题讨论】:

  • 如果我理解正确,您是否希望仅发送 .a 和 .h 文件而不发送 Xcode 项目?

标签: ios cocoapods


【解决方案1】:

使用pre_install hook(0.17 文档,语法略有变化),您可以执行您需要的任何构建操作。

主存储库不鼓励使用此钩子,但对于私有规范,它是受支持的。

【讨论】:

  • 出于好奇,您期望的干净实现在哪里?
  • 理想情况下,我可以指定一个 xcodeproj 文件和一个目标,Pods 项目会将其作为子项目拉入并将该目标设置为依赖项。这样,当 libPods.a 构建时,它会构建并静态链接到我的目标结果中。我的所有构建步骤都将运行,项目维护者不需要额外的工作。
  • 你想在钩子里写什么?
【解决方案2】:

使用 Cocoapods,您无需担心目标本身。它使用库中的所有源文件创建一个新项目,并创建一个包含所有 Pod 依赖项的 libPods.a。

如果您使用正确的 source_files 和 public_header_files 创建 Podspec,它应该可以正常工作。

【讨论】:

  • 是的,我了解它如何与 libPods.a 等一起工作。我担心的是,构建过程有更多步骤,而不仅仅是使用一些编译器标志编译源文件(例如代码生成) .我希望我的完整构建过程能够运行,而不仅仅是编译。
【解决方案3】:

可以使用prepare_command hook(documentation) 并在其中使用 CocoaPods 使用的 ruby​​ gem xcodeproj(xcodeproj site) 更改您的 Xcode 项目。我不确定,但可能可以使用它添加构建脚本。

不确定公共 repo 中的 podspecs 是否接受这一点。

【讨论】:

    【解决方案4】:

    似乎已经为您提供了答案: Create podspec to ship static library

    有两种方式显示(作为 .a + 标头库,或作为 .framwerork)

    认为 .framework 是一种首选的共享方式。

    【讨论】:

      猜你喜欢
      • 2018-04-05
      • 2011-06-05
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多