㊗

😘
import PackageDescription
let package = Package(
name: "SwiftPM",
dependencies: [
.Package(
url: "https://github.com/ikesyo/Himotoki",
majorVersion: 3, minor: 1
)
]
)
// 少し長くなるので
// 次ページ以降のスライドでコードを紹介
import Foundation
let environment = ProcessInfo.processInfo.environment
let buildRoot = environment["BUILD_ROOT"]!
let configuration = environment["CONFIGURATION"]!
let configurationBuildDir = environment["CONFIGURATION_BUILD_DIR"]!
Process.launchedProcess(launchPath: "/usr/bin/swift", arguments:
["package", "--build-path", buildRoot, "resolve"]).waitUntilExit()
Process.launchedProcess(launchPath: "/usr/bin/swift", arguments:
["build", "--build-path", buildRoot, "-c",
configuration.lowercased()]).waitUntilExit()
for buildPath in try! FileManager.default
.contentsOfDirectory(atPath: configurationBuildDir)
where buildPath.hasSuffix(".build") {
// ここでパッケージ単位で、
// バイナリファイルをライブラリ化する
//
// 次のスライドのコードを参照
}
let packageName = buildPath.dropLast(".build".count)
let packageBuildDir = "(configurationBuildDir)/(buildPath)"
let libraryName = "(configurationBuildDir)/lib(packageName).a"
let objects = try! FileManager.default
.contentsOfDirectory(atPath: packageBuildDir)
.filter { $0.hasSuffix(".o") }
let process = Process()
process.currentDirectoryPath = packageBuildDir
process.launchPath = "/usr/bin/libtool"
process.arguments = ["-o", libraryName] + objects
process.launch()
process.waitUntilExit()



🤤
🌻


mkdir SwiftPM-Modules
cd SwiftPM-Modules
swift package init
let package = Package(
name: "SwiftPM-Modules",
products: [
.library(
name: "SwiftPM-Modules", targets: ["SwiftPM-Modules"])],
dependencies: [
.package(url: "https://github.com/ikesyo/Himotoki", from: "3.1.0")
],
targets: [
.target(name: "SwiftPM-Modules", dependencies: ["Himotoki"] ),
],
swift package generate-xcodeproj


🌻
macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift

macOS アプリで Swift Package Manager を使ってみる #love_swift #hakataswift

  • 3.
  • 13.
  • 19.
  • 21.
  • 27.
    import PackageDescription let package= Package( name: "SwiftPM", dependencies: [ .Package( url: "https://github.com/ikesyo/Himotoki", majorVersion: 3, minor: 1 ) ] )
  • 33.
  • 34.
    import Foundation let environment= ProcessInfo.processInfo.environment let buildRoot = environment["BUILD_ROOT"]! let configuration = environment["CONFIGURATION"]! let configurationBuildDir = environment["CONFIGURATION_BUILD_DIR"]!
  • 35.
    Process.launchedProcess(launchPath: "/usr/bin/swift", arguments: ["package","--build-path", buildRoot, "resolve"]).waitUntilExit() Process.launchedProcess(launchPath: "/usr/bin/swift", arguments: ["build", "--build-path", buildRoot, "-c", configuration.lowercased()]).waitUntilExit()
  • 36.
    for buildPath intry! FileManager.default .contentsOfDirectory(atPath: configurationBuildDir) where buildPath.hasSuffix(".build") { // ここでパッケージ単位で、 // バイナリファイルをライブラリ化する // // 次のスライドのコードを参照 }
  • 37.
    let packageName =buildPath.dropLast(".build".count) let packageBuildDir = "(configurationBuildDir)/(buildPath)" let libraryName = "(configurationBuildDir)/lib(packageName).a" let objects = try! FileManager.default .contentsOfDirectory(atPath: packageBuildDir) .filter { $0.hasSuffix(".o") } let process = Process() process.currentDirectoryPath = packageBuildDir process.launchPath = "/usr/bin/libtool" process.arguments = ["-o", libraryName] + objects process.launch() process.waitUntilExit()
  • 40.
  • 42.
  • 43.
  • 44.
  • 45.
  • 48.
  • 49.
    let package =Package( name: "SwiftPM-Modules", products: [ .library( name: "SwiftPM-Modules", targets: ["SwiftPM-Modules"])], dependencies: [ .package(url: "https://github.com/ikesyo/Himotoki", from: "3.1.0") ], targets: [ .target(name: "SwiftPM-Modules", dependencies: ["Himotoki"] ), ],
  • 50.
  • 52.
  • 55.