Skip to content

Instantly share code, notes, and snippets.

@norman784
Created January 2, 2018 14:22
Show Gist options
  • Save norman784/6e23b2b8de81b28bfcf45e922b4103fb to your computer and use it in GitHub Desktop.
Save norman784/6e23b2b8de81b28bfcf45e922b4103fb to your computer and use it in GitHub Desktop.
Support platform specific implementations
// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "CLI",
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.executable(
name: "CLI",
targets: ["CLI"]
)
],
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: "CLI",
dependencies: []
),
.target(
name: "UnzipLinux",
dependencies: []
),
.target(
name: "UnzipMacOS",
dependencies: []
),
.target(
name: "UnzipWin32",
dependencies: []
),
]
)
#if os(Linux)
for target in package.targets {
switch target.name {
case "CLI":
target.dependencies.append(.target(name: "UnzipLinux"))
default: break
}
}
#elseif os(OSX)
for target in package.targets {
switch target.name {
case "CLI":
target.dependencies.append(.target(name: "UnzipMacOS"))
default: break
}
}
#elseif os(Windows)
for target in package.targets {
switch target.name {
case "CLI":
target.dependencies.append(.target(name: "UnzipWin32"))
default: break
}
}
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment