🔥 SupportedPlatform

508자
6분

Swift Package Manager에서는 SupportedPlatform 구조체를 사용하여 Swift 패키지가 지원하는 플랫폼을 정의합니다. 기본적으로 Swift Package Manager는 설치된 SDK에서 지원하는 가장 오래된 배포 대상 버전을 각 지원 플랫폼에 할당하지만, platforms API를 사용하여 지원 플랫폼을 구성할 수 있습니다.

SupportedPlatform 구조체는 다음과 같은 메서드를 제공합니다:

/// macOS 플랫폼에 대한 최소 배포 대상 버전을 구성합니다.
///
/// - Since: PackageDescription 5.0에서 처음 사용 가능
///
/// - Parameter version: 패키지가 지원하는 최소 배포 대상입니다.
static func macOS(_ version: SupportedPlatform.MacOSVersion) -> SupportedPlatform
 
/// 버전 문자열을 사용하여 macOS 플랫폼에 대한 최소 배포 대상 버전을 구성합니다.
///
/// 버전 문자열은 `10.10` 또는 `10.10.1`과 같이 점으로 구분된 두 개 또는 세 개의 정수 시리즈여야 합니다.
///
/// - Since: PackageDescription 5.0에서 처음 사용 가능
///
/// - Parameter versionString: `10.10.1`과 같이 점으로 구분된 두 개 또는 세 개의 정수로 표현된 문자열 형식의 최소 배포 대상입니다.
static func macOS(_ versionString: String) -> SupportedPlatform
swift

위의 코드는 macOS 플랫폼에 대한 최소 배포 대상 버전을 구성하는 두 가지 방법을 보여줍니다. 첫 번째 메서드는 SupportedPlatform.MacOSVersion 열거형을 사용하고, 두 번째 메서드는 버전 문자열을 사용합니다.

예를 들어, macOS 10.15를 최소 배포 대상으로 설정하려면 다음과 같이 작성할 수 있습니다:

let platform: SupportedPlatform = .macOS(.v10_15)
swift

또는 버전 문자열을 사용하여 다음과 같이 작성할 수도 있습니다:

let platform: SupportedPlatform = .macOS("10.15")
swift

SupportedPlatform 구조체는 iOS, tvOS, watchOS 플랫폼에 대해서도 유사한 메서드를 제공합니다. 예를 들면:

/// iOS 플랫폼에 대한 최소 배포 대상 버전을 구성합니다.
///
/// - Since: PackageDescription 5.0에서 처음 사용 가능
///
/// - Parameter version: 패키지가 지원하는 최소 배포 대상입니다.
static func iOS(_ version: SupportedPlatform.IOSVersion) -> SupportedPlatform
 
/// 사용자 정의 버전 문자열을 사용하여 iOS 플랫폼에 대한 최소 배포 대상 버전을 구성합니다.
///
/// 버전 문자열은 `8.0` 또는 `8.0.1`과 같이 점으로 구분된 두 개 또는 세 개의 정수 시리즈여야 합니다.
///
/// - Since: PackageDescription 5.0에서 처음 사용 가능
///
/// - Parameter versionString: `8.0.1`과 같이 점으로 구분된 두 개 또는 세 개의 정수로 표현된 문자열 형식의 최소 배포 대상입니다.
static func iOS(_ versionString: String) -> SupportedPlatform
swift

이를 통해 iOS 8.0 이상을 지원하는 플랫폼을 다음과 같이 정의할 수 있습니다:

let platform: SupportedPlatform = .iOS(.v8)
swift

또는 버전 문자열을 사용하여 정의할 수 있죠:

let platform: SupportedPlatform = .iOS("8.0")
swift

Swift Package Manager는 유효하지 않은 값이 지원 플랫폼에 제공될 때 적절한 오류를 발생시킵니다. 예를 들어, 빈 배열, 동일한 플랫폼에 대한 여러 선언 또는 잘못된 버전 지정 등이 있습니다.

또한 종속성이 최상위 패키지의 배포 버전과 호환되지 않으면 오류가 발생합니다. 패키지의 종속성에 대한 배포 대상은 특정 플랫폼에 대한 최상위 패키지의 배포 대상 버전보다 낮거나 같아야 합니다.

다음은 Package.swift 파일에서 지원 플랫폼을 구성하는 예시입니다:

let package = Package(
    name: "MyPackage",
    platforms: [
        .macOS(.v10_15),
        .iOS(.v13),
        .tvOS(.v13),
        .watchOS(.v6)
    ],
    products: [
        // ...
    ],
    dependencies: [
        // ...
    ],
    targets: [
        // ...
    ]
)
swift

위의 예시에서는 macOS 10.15, iOS 13, tvOS 13, watchOS 6을 최소 배포 대상으로 설정하였습니다. 이렇게 하면 Swift Package Manager는 해당 플랫폼과 버전 이상에서 패키지를 빌드하고 실행할 수 있게 됩니다.

SupportedPlatform 구조체를 사용하여 지원 플랫폼을 명시적으로 선언함으로써, 패키지의 호환성을 명확히 하고 사용자에게 필요한 최소 배포 버전을 전달할 수 있습니다. 이는 패키지의 안정성과 사용성을 향상시키는 데 도움이 됩니다.