Как вы используете один подвид в качестве зависимости другого подспека с cocoapods? - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь создать podspec для steam / core .В нем уже есть файл манифеста Swift Package Manager, поэтому я использую его подспец.

Package.swift :

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "Core",
    products: [
        .library(name: "Async", targets: ["Async"]),
        .library(name: "Bits", targets: ["Bits"]),
        .library(name: "Core", targets: ["Core"]),
        .library(name: "COperatingSystem", targets: ["COperatingSystem"]),
        .library(name: "Debugging", targets: ["Debugging"]),
    ],
    dependencies: [
        /// Event-driven network application framework for high performance protocol servers & clients, non-blocking.
        .package(url: "https://github.com/apple/swift-nio.git", from: "1.8.0"),
    ],
    targets: [
        .target(name: "Async", dependencies: ["NIO"]),
        .testTarget(name: "AsyncTests", dependencies: ["Async"]),
        .target(name: "Bits", dependencies: ["Debugging", "NIO"]),
        .testTarget(name: "BitsTests", dependencies: ["Bits", "NIO"]),
        .target(name: "Core", dependencies: ["Async", "Bits", "COperatingSystem", "Debugging", "NIOFoundationCompat"]),
        .testTarget(name: "CoreTests", dependencies: ["Core"]),
        .target(name: "COperatingSystem"),
        .target(name: "Debugging"),
        .testTarget(name: "DebuggingTests", dependencies: ["Debugging"]),
    ]
)

Я думаю, что хочудля этого нужно создать subspec для каждой не тестовой цели, хотя я не уверен, что это правильно, поэтому, пожалуйста, исправьте меня, если это неправильно.Это то, что у меня есть для Core.podspec:

Pod::Spec.new do |s|

  s.name         = "Core"
  s.version      = "3.4.4"
  s.summary      = "? Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging."

  s.description  = <<-DESC
    Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging.
  DESC

  s.homepage     = "https://github.com/vapor/core"
  s.license      = { :type => "MIT", :file => "LICENSE.txt" }

  s.author             = { "Tanner Nelson" => "" }

  s.ios.deployment_target = "10.0"

  s.source       = { :git => "https://github.com/twof/core.git", :branch => "master" }

  s.source_files = "Sources/**/*.swift"
  s.exclude_files = [
    'Pods/**'
  ]
  s.module_name = "Core"

  s.swift_version = "4.2"

  s.dependency 'SwiftNIO'

  s.subspec 'Debugging' do |debug|
      debug.source_files = 'Sources/Debugging/**/*.swift'
  end

  s.subspec 'Async' do |async|
      async.dependency 'SwiftNIO'

      async.source_files = 'Sources/Async/**/*.swift'
  end

  s.subspec 'Bits' do |bits|
      bits.dependency 'SwiftNIO'
      bits.dependency 'Core/Debugging'

      bits.source_files = 'Sources/Bits/**/*.swift'
  end

  s.subspec 'COperatingSystem' do |os|
      os.source_files = 'Sources/COperatingSystem/**/*.swift'
  end

  s.subspec 'Core' do |core|
      core.source_files = "Sources/Core/**/*.swift"

      core.dependency 'Core/Debugging'
      core.dependency 'Core/Async'
      core.dependency 'Core/Bits'
      core.dependency 'Core/COperatingSystem'
      core.dependency 'SwiftNIOFoundationCompat'
  end
end

Однако вышеприведенное не дает линтинга со следующими ошибками

 -> Core (3.4.4)
    - ERROR | [Core/Bits,Core/Core] xcodebuild: Returned an unsuccessful exit code.
    - ERROR | [Core/Bits,Core/Core] xcodebuild:  Core/Sources/Bits/BitsError.swift:1:8: error: no such module 'Debugging'

Вроде как Core/Debugging не используется как зависимость для Core/Bits и Core/Core, и я не могу сказать, почему это так.Если это поможет, вы можете найти полный вывод pod spec lint Core.podspec --verbose здесь.

...