Xcode компилируется для Ma c, даже если он не находится в поле платформ в Swift.package - PullRequest
1 голос
/ 14 апреля 2020

Я хотел бы создать пакет библиотеки Swift только для iOS, а не для Ma c. Поэтому у меня есть файл пакета следующим образом:

let package = Package(
    name: "Example",
    platforms: [
      .iOS(.v11)],
    products: [
        .library(
            name: "Example",
            targets: ["Example"]
        )
    ],
    targets: [
        .target(name: "Example",
                path: "Example/Example")
    ]
)

Как видите, я не включаю Ma c в платформы. Однако, когда я пытаюсь собрать из пакета, он терпит неудачу с:

ReplayKit is not available when building for macOS. Consider using `#if !os(macOS)` to conditionally import this framework.

И то же самое для любого типа, недоступного для Ma c. Как я могу решить это?

1 Ответ

1 голос
/ 15 апреля 2020

Раздел platforms пакета - это минимальные цели развертывания указанных платформ, а не список платформ, поддерживаемых пакетом. Так что, если вы не укажете .macOS(...), тогда вы получите значение по умолчанию, которое, как полагают, будет .v10_10.

К сожалению, это означает, что вы должны определить, что доступно, и поместить int внутри #if !os(macOS) блоков, таких как ошибка сборки говорит.

...