Swift 5
Менеджер пакетов Swift 5 теперь позволяет указывать минимально необходимую целевую платформу с помощью platforms
в Package.swift
. ... см. ответ Клааса.
Swift 4
В итоге я создал псевдонимы swiftxcode
, swiftbuild
и swifttest
bash в качестве обходного пути для упрощения:
- установка цели macOS с помощью
swift package generate-xcodeproj
и
- скрытие
swift build -Xswiftc "-target" -Xswiftc "x86_64-…"
Настройка
Отредактируйте и source
~/.bash_profile
, чтобы добавить псевдонимы swiftxcode
, swiftbuild
и swifttest
в командную строку.
###################################
### Swift Package Manager (SPM) ###
###################################
alias swiftxcode="swift package generate-xcodeproj --xcconfig-overrides Package.xcconfig"
alias swiftbuild='swift build -Xswiftc "-target" -Xswiftc "x86_64-apple-macosx10.12"'
alias swifttest='swift test -Xswiftc "-target" -Xswiftc "x86_64-apple-macosx10.12"'
Отредактируйте Package.swift
в проекте, чтобы указать, используя инструменты Swift Package Manager версии 4:
// swift-tools-version:4.0
import PackageDescription
let package = Package(…
Добавьте Package.xcconfig
в папку проекта:
/// Package.xcconfig
/// macOS Deployment Target
///
/// Code will load on this and later versions of macOS.
/// Framework APIs that are unavailable in earlier versions will be weak-linked;
/// your code should check for `null` function pointers
/// or specific system versions before calling newer APIs.
MACOSX_DEPLOYMENT_TARGET=10.12
Примечание. Необязательно, BuildSettingExtractor (xcodeproj → xcconfig), созданный Джеймс Демпси может быть полезным чтобы изучить другие настройки, которые можно добавить в Package.xcconfig
файл.
Использование
cd to/some_project_folder/
swiftxcode # create Xcode project
swiftbuild # build from command line
swifttest # build and run tests from command line
Предостережения
Package.xcconfig
устанавливает значения параметров сборки только на целевом уровне в проекте Xcode. Общий уровень проекта Значения параметров сборки остаются неизменными.
Package.xcconfig
значения проекта установлены одинаковыми для всех целей. В настоящее время не существует механизма для xcconfig для каждой цели.
- Некоторые значения
xcconfig
, такие как SKIP_INSTALL
, может потребоваться установить вручную в проекте Xcode.
Дорожная карта
Будем надеяться, что текущий ограниченный xcconfig
подход, показанный выше, будет заменен возможностью указывать настраиваемые параметры сборки в манифесте пакета, как описано в План развития диспетчера пакетов Swift 4.
Поддержка файла конфигурации
Мы рассматриваем возможность добавления механизма файла конфигурации, который может зависеть от пользователя или пакета, чтобы можно было настраивать определенные поведения диспетчера пакетов. Одним из непосредственных вариантов использования этого может быть временный механизм для передачи переопределяющих флагов компилятора для пакета, хотя мы надеемся решить эту проблему с помощью реальной модели настроек сборки. Другие варианты использования файла конфигурации находятся на рассмотрении.
Также стоит отметить, что Apple «New Build System (Preview)», написанная на Swift и выпущенная с Xcode 9, может использовать xcconfig
файлы для определения настроек сборки.
Ресурсы
person
l --marc l
schedule
08.01.2018
swift package generate-xcodeproj
и…-Xswiftc "-target" -Xswiftc "x86_64…
здесь - person l --marc l   schedule 09.01.2018