본문 바로가기

프로그래밍/SWIFT

[Swift] error: concurrency is only available in macOS 10.15.0 or newer

반응형

async, await 를 간단하게 테스트해 보기 위해서, swift package manager  프로젝트를 만들고, 아주 간단한 await, async 예제를 실행해보려 했다.

  1. swift package init --type "executable" 로 프로젝트를 만들고,
  2. main.swift 를 program.swift 로 바꾸고, 예제 코드를 입력하고,
  3. swift build 를 빌드 테스트를 했다. 우선 ubuntu swift 5.6 환경에서는 성공을 했던 코드였는데, 컴파일 에러메시지가 나왔다.
/Users/mememe/07_swift_test_projects/asyncawait_pm/Sources/asyncawait_pm/program.swift:24:29: 
error: concurrency is only available in macOS 10.15.0 or newer
func calculateThirdNumber() async -> Int {
                            ^
/Users/mememe/07_swift_test_projects/asyncawait_pm/Sources/asyncawait_pm/program.swift:24:6: 
note: add @available attribute to enclosing global function
func calculateThirdNumber() async -> Int {

매우 난감했다.

내 컴파일 환경은 monterey 운영체제에, xcode 도 최신이고, 업데이트도 다 되어 있다. swift 명령을 수행하는 swift 만 버전이 낮을걸까?

구글링을 해 보았지만, 주로 iOS 앱 개발과 관련된 내용만 나왔다. 그러다가 https://stackoverflow.com/questions/55501077/specify-minimum-macos-version-for-swift-package-manager-with-swift-5 에서 해답을 찾았다. Package.swift 에서 타겟 플랫폼 버전을 지정하면 된다.

그래서 Package.swift 에서 OS버전을 지정해 주었다.

import PackageDescription

let package = Package(
    name: "asyncawait_pm",
    platforms: [              # <<<
        .macOS(.v10_15),      # <<< 타겟 OS 버전을 지정한다.
    ],                        # <<<
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],

버전만 다른 동일한 문제를 겪었다. 

에러메시지

 error: 'data(for:delegate:)' is only available in macOS 12.0 or newer

package.swift 에 수정한 내용

    platforms: [
        .macOS(.v12)
    ],
728x90