Моя главная цель - создать быстрый пакет с двумя состояниями, которые включаются и выключаются флагом.
Одно из состояний включает код, который ссылается на классы и переменные, определенные в другом моем проекте, который импортирует этот пакет. Эти разделы кода являются моей личной версией библиотеки со специальной функциональностью, определяемой c для моего проекта. Другое состояние отключает эти разделы кода и включает код, который позволяет использовать пакет в качестве библиотеки для общих публикаций c.
. Я пытался сделать это с помощью макросов препроцессора для поворота разделов. кода вкл и выкл. Следующий флаг определен в пользовательской ветви моего пакета, которую я использую, когда добавляю этот пакет в другой проект:
(файл Package.swift в моем пакете swift)
swiftSettings: [
.define("FULL_WEEKDAY_PICKER"),
]),
(код в моем быстром пакете)
#if FULL_WEEKDAY_PICKER
// use code referenced in my other project
#else
// do other thing
#endif
Однако это не работает, и я получаю ошибки, потому что мой пакет не знает код в моем другом проекте. Моей первой идеей было добавить его в качестве локальной зависимости к этому пакету. В моем проекте есть репозиторий git.
dependencies: [
// Dependencies declare other packages that this package depends on.
.package(path: "../HueCircadianSchedule"), // <--- name of my other project
],
.target(
name: "DayOfWeekCollectionView",
dependencies: ["Sol"], //<--- target of my other project
Но даже добавление этих настроек приводит к сбою Xcode для меня, поэтому я не думаю, что это правильный шаг.
В качестве альтернативы, Я попытался перетащить пакет в другой проект. Я не получаю никаких ошибок в своем пакете, но проект не знает о коде в пакете, который я только что добавил.
Как мне ссылаться на код, определенный в моем проекте, в моем пакете, а затем использовать это пакет в моем проекте? Нужен ли мне Package.swift в моем проекте? Должен ли я использовать другой подход к выполнению sh того, что я пытаюсь сделать? Вы можете посмотреть мои проекты здесь:
Мой проект
Мой быстрый пакет