[TIPS] SwiftPM에 여러 라이브러리가 있는 경우 패키지로 가져오는 방법

배경.


며칠 전에는 swift-collections에 포함된 OrderedSet를 이용할 기회가 있었다.
지금까지의 경험상 가방 이름과 라이브러리 이름 모두 같은 물건을 사용하다 보니 한꺼번에 가져오는 방법을 몰라 필기 대신 해법을 남겼다.
https://github.com/apple/swift-collections/

문제.


다음은 swift-collections에서 정의한 Package.swift의 일부분이다.
보시다시피 products에 여러 개의 라이브러리가 정의되어 있습니다.
let package = Package(
  name: "swift-collections",
  products: [
    .library(name: "Collections", targets: ["Collections"]),
    .library(name: "DequeModule", targets: ["DequeModule"]),
    .library(name: "OrderedCollections", targets: ["OrderedCollections"]),
  ]
  // 以下省略
)

해법


예를 들어 개발된 응용 프로그램DemoApp, swift-collections에 포함된 OrderedCollections를 사용하려면 다음과 같다.
게다가 이번에는 샘플 코드로 이해하기 쉽도록 최소한의 정의만 했다.
let package = Package(
  name: "DemoApp",
  dependencies: [
    .package(url: "https://github.com/apple/swift-collections.git", from: "0.0.1"),
  ],
  targets: [
    .target(
      name: "DemoApp", 
      dependencies: [
        .product(name: "OrderedCollections", package: "swift-collections")
      ]
    ),
  ]
)
  • 이전처럼 이용하고 싶은 URL 등을 정의dependencies한다
  • 대상package에 지정dependencies 및 추가
  • 만약 이런 순서대로 한다면 프로그램 라이브러리를 정확하게 사용할 수 있을 것이다.

    좋은 웹페이지 즐겨찾기