У меня дьявол времени, чтобы понять это. Я знаю, как сделать это с CocoaPods, но SPM, кажется, становится лучше меня.
Я не смог ничего выяснить из официальных документов SPM относительно этой конкретной проблемы.
Я занимаюсь разработкой Swift Framework, предназначенного для встраивания в приложения и приложения (iOS и OSX). У меня есть несколько целей в xcodeproj, с целями для каждой платформы. Я могу запустить xcodebuild и сделать это по отдельности или использовать CocoaPods для их генерации по требованию.
Я не могу заставить СЗМ сделать то же самое. Он упрямо строит только версию OSX, и я не вижу никаких команд для перенацеливания на те же исходные файлы.
Очень важно использовать одни и те же исходные файлы, а не две копии одинаковых файлов, поэтому все мои цели должны будут указывать на одни и те же каталоги.
Вот как выглядит файл Package.swift:
// swift-tools-version:4.2
import PackageDescription
let package = Package(
name: "WhiteDragon",
products: [
.library(
name: "WhiteDragon",
targets: ["WhiteDragon"]
),
],
targets: [
.target(
name: "WhiteDragon",
dependencies: [],
path: "WhiteDragon/Classes"
),
.testTarget(
name: "WhiteDragonTests",
dependencies: ["WhiteDragon"],
path: "WhiteDragonTests"
),
],
swiftLanguageVersions: [.v4_2]
)
Я продолжаю копать и пробую всевозможные дикие идеи, но у меня их пока нет. Я довольно новичок в SPM, и я обнаружил, что почти все либо обсуждают только его использование для извлечения зависимостей, либо используют ту же примитивную небольшую структуру, которую вы получаете с init.
Я бы с радостью принял RTFM, но пока что был немного разочарован и был бы рад, если бы меня направили на букву "М", которая могла бы дать мне ответ.
Большое спасибо!
ОБНОВЛЕНИЕ: Вот подспек, который дает мне то, что мне нужно (с некоторыми изменениями сэра Терри):
Pod::Spec.new do |spec|
spec.name = 'WhiteDragon'
spec.summary = 'A Cocoa Framework that Provides an Application-Level Interaction With a BAOBAB Server.'
spec.description = 'The White Dragon Cocoa Framework is a Swift shared framework designed to allow easy development of iOS/MacOS RVP apps. It completely abstracts the connection to BAOBAB Servers, including administration functions.'
spec.version = '1.0.0.1000'
spec.ios.deployment_target = '11.0'
spec.osx.deployment_target = '10.11'
spec.homepage = '<MILLENIUM HAND AND SHRIMP>'
spec.social_media_url = 'https://twitter.com/BUGRIT'
spec.author = { '<MUMBLE, MUMBLE>' }
spec.documentation_url = '<BUGRIT>'
spec.license = { :type => 'MIT', :file => 'LICENSE.txt' }
spec.source = { :git => '<GASPODE!>', :tag => spec.version.to_s }
spec.source_files = 'WhiteDragon/Classes/**/*'
end