Basic Swift Package Manager Вопросы о многоплатформенных библиотеках - PullRequest
0 голосов
/ 03 ноября 2018

У меня дьявол времени, чтобы понять это. Я знаю, как сделать это с 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

1 Ответ

0 голосов
/ 04 ноября 2018

В настоящее время SPM не поддерживает iOS целей.

В настоящее время нет явной поддержки зависимости от UIKit, AppKit и т. Д., Хотя импорт этих модулей должен работать, если они присутствует в правильном системном расположении. Мы добавим явную поддержку для системных зависимостей в будущем. Обратите внимание, что в это время Диспетчер пакетов не поддерживает платформы iOS, watchOS или tvOS .

В зависимости от модулей Apple

...