Как создать графическое приложение Cocoa с помощью SwiftPM

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

Но все примеры, которые мне удалось найти, показывают создание консольного приложения с помощью swift package init --type executable.

Я хочу знать, как создать скелет для приложения MacOS Cocoa со всеми предварительно сгенерированными вещами, такими как активы, раскадровка и так далее?

Было бы здорово иметь доступ к такой полезной вещи, как:

swift package build
swift package test
swift package update
...

Любые идеи?

Благодарю вас!


person Andrew    schedule 09.07.2017    source источник


Ответы (1)


Это мое рабочее решение для создания приложений какао с помощью SPM.

  1. Создайте свою исполняемую версию приложения: swift package init --type executable
  2. Включите свои пакеты в Package.swift
  3. Обновить/получить их: swift package updateили swift package fetch
  4. Создайте свой .xcodeproj: swift package generate-xcodeproj
  5. Откройте свой .xcodeproj с помощью Xcode; вы увидите его как консольное приложение.
  6. Создайте свое решение (эта сборка создаст зависимости: .frameworks в разделе «Продукты»).
  7. Нажмите на название проекта, чтобы увидеть цели
  8. Добавьте новую цель, нажав кнопку + под списком, и создайте свое приложение какао/графический интерфейс.
  9. После добавления приложения щелкните имя приложения в списке целей.
  10. На вкладке General найдите раздел Embedded Binaries.
  11. Нажмите +, чтобы добавить двоичные файлы, и выберите библиотеки, на которые вы ссылаетесь.
  12. Работайте над своим приложением какао.
  13. При сборке .frameworks будет встроен в .app

Если вы обновите свой packages.swift, вам следует повторить вышеописанное, за исключением создания новой цели; вам просто нужно добавить его в проект.

person ANSerpen    schedule 17.07.2017
comment
Спасибо за ваш ответ! Одно исправление: swift init --type executable -> swift package init --type executable. И один вопрос: если вы добавите пакет в «Package.swift» и выполните команду swift package generate-xcodeproj, весь проект будет перегенерирован, а приложение какао/gui исчезнет из списка целей. Как добавить новый пакет в «Package.swift», не удаляя приложение с графическим интерфейсом из целей? - person Andrew; 17.07.2017
comment
Привет. Для этого нет простого пути. Сделайте резервную копию вашего приложения; сгенерировать xcodeproj; снова добавить цель; заменить код. К сожалению, использование SPM + Xcode ограничено. Исполняемый файл SPM + решение Xcode является обходным путем. Приложение SPM + Xcode Cocoa является обходным путем. - person ANSerpen; 18.07.2017
comment
@Andrew создайте отдельный проект (OSX или iOS) и укажите проект, созданный SPM, как подпроект. Цели структуры проекта, сгенерированные SPM, необходимо немного изменить вручную (путь поиска... и т. д.). Таким образом, я создаю свой интерфейс командной строки с SPM и приложением для OSX и iOS с Xcode. Следующее обновление моих пакетов означает лишь небольшую модификацию проекта, сгенерированного SPM. Это не идеально, но это работает для меня. Для приложения iOS необходимо изменить Frameworks SDK на iOS SDK, в противном случае у вас возникнут проблемы при архивировании приложения (нет поддержки битового кода для OSX SDK) - person user3441734; 04.08.2017
comment
Не могли бы вы объяснить немного подробнее, что делать, если я обновлю свой packages.swift, он у меня не работает. Если я запускаю swift package generate-xcodeproj во второй раз, обновленные модули не добавляются в папку зависимостей. Также папки в моем проекте Xcode становятся синими после запуска этой команды во второй раз. - person p0fi; 03.02.2018
comment
@ p0fi Вы не забыли запустить swift package resolve после обновления Package.swift, но перед запуском swift package generate-xcodeproj? - person Garrett Albright; 04.06.2018