Swift 5:通过包管理器

时间:2019-12-26 11:51:43

标签: swift

我想在Ubuntu环境中拥有一个可执行的GRPC客户端。为此,我有以下Package.swift

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

package.
import PackageDescription

let package = Package(
    name: "grpc_client",
    dependencies: [
        .package(url: "https://github.com/grpc/grpc-swift.git", from: "1.0.0-alpha.6")
    ],
    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 which this package depends on.
        .target(
            name: "grpc_client",
            dependencies: ["GRPC"]),
        .testTarget(
            name: "grpc_clientTests",
            dependencies: ["grpc_client"]),
    ]
)

我从* .proto文件中生成了* .pb.swift和* .grpc.swift,并将这些文件放入Source文件夹。但是,当我致电swift build时,出现以下错误:

no such module 'SwiftGRPC'
import SwiftGRPC
来自两个已生成的* .swift文件的

。看来我必须提供这样的导入路径或smth,但我不确定。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

只是找到了解决方案-也许对环境类似的人会有所帮助。

  1. 要在ubuntu 19.10下构建swift grpc,请使用以下补丁: https://github.com/grpc/grpc-swift/issues/655

您需要从中删除static long gettid(void) { return syscall(__NR_gettid); } Sources / CgRPC / src / core / lib / gpr / log_linux.cc b / Sources / CgRPC / src / core / lib / gpr / log_linux.cc和 Sources / CgRPC / src / core / lib / iomgr / ev_epollex_linux.cc b / Sources / CgRPC / src / core / lib / iomgr / ev_epollex_linux.cc

由于glibc版本较新。

  1. 添加项目依赖项的正确方法是

    .target(     名称:“ grpc_client”,     依赖项:[“ SwiftGRPC”]),

但不是回购自述文件中所述的GRPC