These are the steps to follow for a solution using Swift 4.
Create a folder, let's say "TestSPMLibrary":
$ mkdir TestSPMLibrary
$ cd TestSPMLibrary
Create a library package:
$ swift package init --type library
In the "Package.swift" file, add the ".dynamic" library type.
You can also add a dependency such as Alamofire (you need to also add it to the target).
My "Package.swift" example:
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "TestSPMLibrary",
products: [
.library(
name: "TestSPMLibrary",
type: .dynamic,
targets: ["TestSPMLibrary"]),
],
dependencies: [
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.0.0"),
],
targets: [
.target(
name: "TestSPMLibrary",
dependencies: ["Alamofire"]),
.testTarget(
name: "TestSPMLibraryTests",
dependencies: ["TestSPMLibrary"]),
]
)
In this library the code you want to interface with has to be declared public (and objects need a public initializer).
My "TestSPMLibrary.swift" example:
public struct Blah {
public init() {}
public var text = "Hello, World!"
}
Build the library:
$ swift build
Launch the REPL with swift -I .build/debug -L .build/debug -l
and add the library name. In my case:
$ swift -I .build/debug -L .build/debug -lTestSPMLibrary
In the REPL you can now import your library (and its dependencies):
import TestSPMLibrary
import Alamofire
let x = Blah()
print(x.text)