본문 바로가기

프로그래밍/SWIFT

[Swift] dependency <library> in target <project> requires explicit declaration; reference the package in the target dependency with '.product(name: <library>, package: <library package>)'

반응형

swift package를 사용해서 프로젝트를 생성하고, Package.swift 에 필요한 디펜던시 package 를 추가하는 연습을 하는 중에, 아래와 같은 에러가 발생했다.

생성한 프로젝트는 Banner 라는 이름의 프로젝트였고, swift-argument-parser 의 ArgumentParser 를 이용하려고, Package.dependencies 에 .package(url: "https://github.com/apple/swift-argument-parser", from: "0.0.1"), 을 추가했다. 그리고, Package.targets.executableTarget.dependencies  에 "ArgumentParser"를 추가했다. 이렇게 추가한 Package.swift 파일은 다음과 같다.

// swift-tools-version: 5.6
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "Banner",
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
        .package(url: "https://github.com/apple/swift-argument-parser", from: "0.0.1"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
        .executableTarget(
            name: "Banner",
            dependencies: ["ArgumentParser"]),
        .testTarget(
            name: "BannerTests",
            dependencies: ["Banner"]),
    ]
)

swift build 를 실행했을 때 에러메시지는 다음과 같았다.

Working copy of https://github.com/apple/swift-argument-parser resolved at 0.5.0
'banner': error: dependency 'ArgumentParser' in target 'Banner' requires explicit 
   declaration; reference the package in the target dependency with 
   '.product(name: "ArgumentParser", package: "swift-argument-parser")'
error: ExitCode(rawValue: 1)

.executableTarget.dependencies 에서 단순문자열로 준 것을 에러메시지에서 지시한대로 다음과 같이 바꾸어 문제가 해결됐다.

        .executableTarget(
            name: "Banner",
            dependencies: [
              .product(name: "ArgumentParser", package: "swift-argument-parser")
            ]
          ),

 

728x90