Как устранить ошибку перекрывающихся источников в Swift Package Manager - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть репозиторий GitHub, представляющий собой проект Objective- C, который определяет несколько целей (по одной на каждую целевую ОС: macOS, iOS, tvOS и т. Д. c.). Эти цели разделяют большую часть файлов исходного кода проекта.

Я пытаюсь добавить поддержку SPM в проект, и в файле Package.swift я определяю совпадающие цели с исходным кодом path, ссылаясь на ту же папку, в которой находятся файлы исходного кода, общие для целей.

Когда я добавляю этот «включенный» SPM проект / пакет в тестовый проект, который пытается использовать его в качестве зависимости через SPM, я получаю сообщение об ошибке, говорящее о том, что вторая цель в пакете зависимостей имеет перекрывающиеся источники с другой целью (первый, который использует те же файлы с общим исходным кодом).

Есть идеи о том, как решить проблему? Я бы предположил, что моя многоцелевая конфигурация над файлами общего исходного кода не такая уж уникальная ...

1 Ответ

0 голосов
/ 07 февраля 2020

Я наконец-то понял, в чем была проблема и как ее решить.

Моя ошибка заключалась в том, что я думал о целях СЗМ так же, как Xcode думает о них. В действительности цели SPM - это, по сути, именуемая папка, содержащая файлы исходного кода, которые необходимо создать для создания продукта или продуктов. Они не предполагают определение рецепта относительно того, как строить (как это делают цели Xcode). Тем не менее, кодовая база, которая зависит от данного пакета SPM, применяет свои цели Xcode для построения себя и зависимости (до создания своей собственной кодовой базы). Цели SPM полностью привязаны c к целевому устройству.

Следовательно, когда я пытался отобразить все свои цели Xcode как похожие цели SPM (в то же время ссылаясь на одни и те же файлы исходного кода из нескольких SPM) целей) это было неправильно с точки зрения SPM.

Правильное решение было заменено определением единственной цели SPM в одном месте (пути) кодовой базы, и с этого все прошло хорошо.

Вот хорошее видео, которое хорошо объясняет концепции SPM и впоследствии привело меня к рабочему решению: Создание пакетов Swift

...