Swift 包管理器混合语言源文件

Rod*_*ici 16 package ios swift

由于某种原因,当我尝试swift build在我的Package.swift文件上运行时:import PackageDescription

let package = Package(
    name: "mobile-HDISegurado-ios",
    dependencies: [
        .package(url: "https://github.com/watson-developer-cloud/swift-sdk", from: "0.30.0"),
        ],
    targets: [
        .target(
            name: "mobile-HDISegurado-ios",
            dependencies: ["WatsonDeveloperCloud"],
            path: "mobile-HDISegurado-ios",
            exclude: [
                "Config",
                "Public",
                "Resources",
                ]
        )
    ] )
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

错误:“.../mobile-HDISegurado-ios”的目标包含混合语言源文件;不支持的功能

更多细节:

  • swift 包工具版本:4.1.0
  • 运行 Cocoapods 的项目工作区。

Eri*_*ric 18

SPM 现在支持混合语言源文件,但您可能必须将它们分成多个目标。

\n

来自相关文档

\n
\n

目标可以包含 Swift、Objective-C/C++ 或 C/C++ 代码,但单个目标可以\xe2\x80\x99t 将 Swift 与 C 系列语言混合。例如,一个 Swift 包可以有两个目标,一个包含 Objective-C、Objective-C++ 和 C 代码,另一个包含 Swift 代码。

\n
\n

实际上,您应该将 ObjC/C/C++ 文件移至一个目录,将 Swift 文件移至另一目录,然后修改 Package.swift,如下所示:

\n
products: [\n    .library(\n        name: "MyLibrary",\n        targets: ["MyLibrarySwift", "MyLibraryObjC"]),\n],\n.target(name: "MyLibraryObjC",\n        path: "Sources/MyLibraryObjC"\n),\n.target(name: "MyLibrarySwift",\n        path: "Sources/MyLibrarySwift"\n)\n
Run Code Online (Sandbox Code Playgroud)\n