Я пытаюсь создать 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
здесь.