Blog

SwiftPM lernen - Der Swift-Paketmanager

Dennis Vriend

Aktualisiert Oktober 21, 2025
4 Minuten

Der Swift Package Manager (SwiftPM) ist ein Werkzeug für die Erstellung Ihrer Swift-Anwendungen. Genau wie andere Build-Tools wie Maven oder Gradle verwaltet SwiftPM Projektabhängigkeiten und kann Pakete erstellen, testen und veröffentlichen.
SwiftPM bietet eine Standardmethode zum Erstellen von Swift-Anwendungen und ist ein Ersatz für Build-Tools wie CocoaPods und Carthage. SwiftPM ist ein plattformübergreifendes Build-System, das für MacOS und Linux verfügbar ist.
Apple hat ein Einführungsvideo Getting to Know Swift Package Manager - Apple WWDC 2018 veröffentlicht und SwiftPM wurde dokumentiert.
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

Let’s discuss how we can support your journey.