Der Swift Package Manager (SwiftPM) ist ein Werkzeug für die Erstellung Ihrer Swift-Anwendungen. Genau wie andere Build-Tools wie Maven oder
SwiftPM bietet eine Standardmethode zum Erstellen von Swift-Anwendungen und ist ein Ersatz für Build-Tools wie
Apple hat ein Einführungsvideo
In diesem Blog werden wir ein neues Anwendungsprojekt erstellen und eine kleine Anwendung erstellen. Sie müssen keine Swift-Kenntnisse haben, um mitzumachen.
Einige Annahmen
Bevor wir weitermachen, gehe ich davon aus, dass Sie einen Mac besitzen und etwas Erfahrung mit Programmiersprachen haben,
Installation
Um Swift und SwiftPM auf einem Mac zu installieren, öffnen Sie den App Store, suchen Sie nach Xcode, das kostenlos ist, und installieren Sie es.
$ swift --version
Apple Swift version 4.2.1 (swiftlang-1000.0.42 clang-1000.10.45.1)
Target: x86_64-apple-darwin18.2.0
Befehle
SwiftPM bietet die folgenden Befehle:
# Build sources into binary products
$ swift build
# Build and run tests
$ swift test
# Build and run an executable product
$ swift run
# Initialize a new package
$ swift package init
# Perform operations on Swift packages
$ swift package
# fetch Packages from Package.swift
$ swift package fetch
# update package source code
$ swift package update
# Generate Xcode Project
$ swift package generate-xcodeproj
Hello World Paket erstellen
$ pwd
~/projects
$ mkdir helloworld
$ cd helloworld
$ swift package init --type executable
SwiftPM hat die folgende Paketstruktur erstellt. Die Quelldateien werden in 'Sources' und die Testdateien in 'Tests' abgelegt.
.
├── Package.swift
├── README.md
├── Sources
│ └── helloworld
│ └── main.swift
└── Tests
├── LinuxMain.swift
└── helloworldTests
├── XCTestManifests.swift
└── helloworldTests.swift
Schnelles Paket
Die wichtigste Datei ist 'Package.swift', die das Paket beschreibt und aus Abhängigkeiten, Zielen und Produkten besteht und mit der Swift-Syntax deklariert wird.
/ swift-tools-version:4.2
// The swift-tools-version declares the minimum
// version of Swift required to build this package.
import Packagecontent
let package = Package(
name: "helloworld",
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
targets: [
// Targets are the basic building blocks of a package.
// A target can define a module or a test suite.
// Targets can depend on other targets in this package,
// and on products in packages which this package depends on.
.target(
name: "helloworld",
dependencies: []),
.testTarget(
name: "helloworldTests",
dependencies: ["helloworld"]),
]
)
Die ausführbare Datei
Das Hauptprogramm ist in 'Sources/helloworld/main.swift' gespeichert und enthält eine einzige Druckanweisung.
print("Hello, world!")
Um die Anwendung auszuführen, geben Sie ein:
$ swift run
Compile Swift Module 'helloworld' (1 sources)
Linking ./.build/x86_64-apple-macosx10.10/debug/helloworld
Hello, world!
Wenn Sie den folgenden Fehler erhalten, können Sie ihn wie folgt beheben:
$ swift run
error: terminated(72): xcrun --sdk macosx --find xctest output:
# fix the error
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
$ swift run
Compile Swift Module 'helloworld' (1 sources)
Linking ./.build/x86_64-apple-macosx10.10/debug/helloworld
Hello, world!
Erzeugen Sie ein Xcode-Projekt
Um einen Xcode-Projekttyp zu erzeugen:
# create xcode project
$ swift package generate-xcodeproj
# open project in xcode
$ open helloworld.xcodeproj/
Wenn das Projekt von xcode geladen wurde, drücken Sie CMD+R, um Hallo Welt zu starten.
Abhängigkeiten
Abhängigkeiten sind Module, die für den Code im Paket erforderlich sind. Eine Abhängigkeit stellt Produkte in Form von Bibliotheken bereit. Eine Abhängigkeit besteht aus einer relativen oder absoluten URL zur Quelle des Pakets und der Version. SwiftPM lädt alles herunter und erstellt alles, was benötigt wird, um den gesamten Abhängigkeitsgraph der Anwendung zu erfüllen.
Ziel
Targets sind die grundlegenden Bausteine von Paketen. Ein Ziel beschreibt, wie eine Reihe von Quelldateien entweder in ein Modul oder eine Testsuite eingebaut werden soll. Targets können von anderen Targets desselben Pakets und von Produkten abhängen, die von anderen Paketen exportiert werden und als Abhängigkeiten deklariert sind.
Produkt
Produkte sind ausführbare Dateien oder Bibliotheken. Produkte werden aus den Build-Artefakten von einem oder mehreren Zielen zusammengestellt.
Pakete
Pakete stellen Bibliotheken für andere Pakete bereit, indem sie Produkte definieren. Pakete werden in Git-Repositories gespeichert und ihre Versionen werden durch Git-Tags dargestellt.
Fazit
In diesem Blog haben wir Xcode installiert, das mit SwiftPM geliefert wird. Wir haben eine einfache Helloworld-Anwendung erstellt und ein Xcode-Projekt angelegt. Dann haben wir das helloworld Projekt von der Konsole und von Xcode aus gestartet.
Verfasst von
Dennis Vriend
Contact
