swift - Swift 5:通过包管理器指定 GRPC 的导入路径
问题描述
我想在 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,但我不确定。
如何解决这个问题?
解决方案
刚刚找到了一个解决方案 - 也许它对具有类似环境的人会有所帮助。
- 要在 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 版本。
添加项目依赖项的正确方法是
.target(名称:“grpc_client”,依赖项:[“SwiftGRPC”]),
但不像GRPC
回购自述文件中所述。
推荐阅读
- docusignapi - DocuSign 嵌入式发送注销用户
- amazon-web-services - Jekyll 部署到 AWS S3 链接不工作
- javascript - 是否有关于 console.log 如何格式化 Json 对象的名称?
- c - 扩展欧几里得算法约定 [In C]
- html - 为移动文本进行平滑过渡
- java - 向用户询问包含文件名混淆的命令
- python - 使用 DataFrames dropna() 似乎不起作用
- php - 默默地无法通过 PHP SDK 将图像推送到用户的 Google Drive
- vb.net - 如何设置我的 ComboBox 以允许用户输入前几个字符,然后按 ENTER 自动选择项目?
- html - 在图像上以一行显示链接