【问题标题】:Create multiple modules in CocoaPods like in SPM像在 SPM 中一样在 CocoaPods 中创建多个模块
【发布时间】:2020-11-16 17:14:05
【问题描述】:

我的库由两个模块组成:

  • Swift 中的库核心
  • 包含 CHTMLSAXParser 的 C 语言模块

这是结构

现在为了在 SPM 中编译它,我需​​要创建两个目标:

import PackageDescription

let package = Package(
    name: "MyLib",
    products: [
        // Products define the executables and libraries a package produces, and make them visible to other packages.
        .library(
            name: "MyLib",
            targets: ["MyLib"]),
    ],
    dependencies: [],
    targets: [
        .target(
            name: "CHTMLSAXParser",
            dependencies: []),
        .target(
            name: "MyLib",
            dependencies: ["CHTMLSAXParser"])
    ]
)

这很简单:在 MyLib 中,一个源 swift 文件调用 import CHTMLSAXParser 并且一切正常。

但是我不知道用 CocoaPods podspec 文件复制相同行为的正确方法是什么。

有什么想法吗?

【问题讨论】:

  • 你想要一个 podspec 和一个 subpodspec。你试过什么?
  • 我尝试过使用 subpodspec 但它不起作用gist.github.com/malcommac/31aea9a80bd5670ae0a8f606681003ea 它只是无法识别我的主库中的模块:` - 错误 | [MyLib/Core] xcodebuild: /.../EscapeSpecialCharacters.swift:22:8: 错误:没有这样的模块'CHTMLSAXParser'`

标签: cocoapods podspec


【解决方案1】:

我发现混合 Swift/ObjC 模块的限制不适用于 CocoaPods。所以为了解决问题:

  1. 我创建了一个包含 C 和 Swift 文件的 podspec 包
  2. 使用#if canImport(CHTMLSAXParser)? 避免在没有必要时(在cocoapods 下)导入它而不会产生编译器错误。

更多信息here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多