You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编译SwiftPackage的swift-graphql可执行二进制产物?

如何单独构建Swift包中的指定CLI可执行文件

问题场景

我有一个导出CLI可执行产物的Swift库,希望将swift-graphql CLI二进制文件作为Git发布资产以简化安装,但构建包时遇到困难。我的Package.swift配置已正确声明了可执行产物:

let package = Package(
    name: "swift-graphql",
    platforms: [...],
    products: [
        // SwiftGraphQL
        .library(name: "SwiftGraphQL", targets: ["SwiftGraphQL"]),
        .library(name: "SwiftGraphQLClient", targets: ["SwiftGraphQLClient"]),
        .library(name: "SwiftGraphQLCodegen", targets: ["SwiftGraphQLCodegen"]),
        // CLI
        .executable( name: "swift-graphql", targets: ["SwiftGraphQLCLI"]),
    ],
    dependencies: [...],
    targets: [...]
)

尝试swift build -c release后会生成所有包产物,难以单独提取目标CLI二进制;swift build -c release --show-bin-path返回的是包含所有产物的文件夹,无法直接得到仅SwiftGraphQLCLI对应的可执行文件。

解决方案

1. 精准构建指定可执行产物

使用swift build的--product参数指定仅构建目标CLI产物,命令如下:

swift build -c release --product swift-graphql

执行完成后,swift-graphql可执行文件会位于--show-bin-path返回的目录下,你可以直接从该目录提取这个二进制文件。

2. 一键导出到指定路径(可选)

如果希望直接将二进制文件复制到当前工作目录或自定义路径,可结合--show-bin-path和cp命令:

cp "$(swift build -c release --product swift-graphql --show-bin-path)/swift-graphql" ./

执行后,当前目录会直接生成独立的swift-graphql可执行文件,方便作为Git发布资产上传。

说明

默认swift build会构建包内所有声明的产物(包括所有库和可执行文件),而--product参数可以精准定位到你需要的可执行目标,避免生成多余文件,简化后续的二进制提取流程。

内容的提问来源于stack exchange,提问作者maticzav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:27:35