🔥 TargetDependencyCondition
TargetDependencyCondition
클래스는 타겟이 의존하는 대상을 어떤 상황에서 사용할지 정해주는 조건이에요. 쉽게 말해서 특정 플랫폼에서만 의존성을 가지도록 만들 수 있는 거죠.
메서드
TargetDependencyCondition
클래스에는 아래와 같은 메서드가 있어요.
when(platforms:)
이 메서드는 TargetDependencyCondition
인스턴스를 만들어 주는 역할을 해요. 메서드를 호출할 때는 이렇게 해요.
static func when(platforms: [Platform]? = nil) -> TargetDependencyCondition
swift
platforms
매개변수에는 이 조건이 적용되는 플랫폼 목록을 넣어줘요. 만약 아무것도 넣지 않으면 (nil
) 모든 플랫폼에 적용돼요.
간단한 예시를 들어볼게요.
let condition = TargetDependencyCondition.when(platforms: [.iOS, .macOS]) // iOS와 macOS 플랫폼에서만 사용되는 의존성 조건을 만들었어요.
swift
이렇게 만든 TargetDependencyCondition
인스턴스를 의존성을 설정할 때 사용하면, 해당 조건에 맞는 경우에만 의존성이 적용된답니다.
플랫폼마다 의존하는 대상을 다르게 하고 싶을 때 유용하게 쓸 수 있어요. 예를 들어 iOS 앱과 macOS 앱을 동시에 개발하는데, 일부 의존성은 특정 플랫폼에서만 필요한 경우가 있겠죠? 이럴 때 TargetDependencyCondition
을 사용하면 쉽게 설정할 수 있어요.
let package = Package( name: "MyPackage", products: [ .library(name: "MyLibrary", targets: ["MyLibrary"]) ], dependencies: [ .package(url: "<https://github.com/apple/example-package-deckofplayingcards.git>", from: "3.0.0"), .package(url: "<https://github.com/apple/example-package-fisheryates.git>", from: "2.0.0") ], targets: [ .target( name: "MyLibrary", dependencies: [ .product(name: "DeckOfPlayingCards", package: "example-package-deckofplayingcards", condition: .when(platforms: [.iOS])), .product(name: "FisherYates", package: "example-package-fisheryates", condition: .when(platforms: [.macOS])) ] ) ] )
swift
위 예시처럼 Package.swift
파일에서 의존성을 설정할 때 condition
파라미터에 TargetDependencyCondition
을 넣어주면 돼요. iOS에서는 DeckOfPlayingCards
를, macOS에서는 FisherYates
를 사용하도록 했네요.
이렇게 TargetDependencyCondition
을 적절히 사용하면 플랫폼에 따라 유연하게 의존성을 설정할 수 있어요. 패키지를 만들 때 쓸데없는 의존성을 줄이고 더 잘 구조화하는 데 도움이 될 거예요!