Две практически идентичные цели в проекте Vapor Xcode - PullRequest
3 голосов
/ 08 января 2020

Я хочу настроить Package.swift так, чтобы одна цель была расширением другой, они оба должны использовать один и тот же код из одной папки, но для «расширенной» версии есть дополнительная подпапка. Но конфигурация, которую я пробую с path, терпит неудачу с ошибкой «перекрывающихся источников». Итак, как мне сделать две цели с одной и той же исходной папкой?

.target(name: "App", dependencies: [ "Vapor" ... ], exclude: [ "Subfolder" ])
.target(name: "Extended", dependencies: [ "Vapor", ... ], path: "./Sources/App")

swift build ... error: target 'Extended' has sources overlapping sources...

1 Ответ

3 голосов
/ 10 января 2020

SwiftPM строго относится к одной цели, которая владеет файлами. Поэтому вам нужно будет настроить правильную цепочку зависимостей для ваших файлов.

Похоже, Extended добавляет больше функциональности к App в этом случае. Если это так, вы хотите иметь App все вещи, которые есть на данный момент. Затем Extended зависит от App и создайте все исключительные элементы.

Это позволяет 1 цели владеть исходными файлами и позволяет Extended использовать одну реализацию этих файлов.

...