如何指定输出可执行文件的名称?

时间:2017-03-24 17:28:19

标签: swift swift3 swift-package-manager

默认情况下,SPM使用与包含其main.swift的模块文件夹相同的名称(大写)构建可执行目标。如何使用不同的文件名构建二进制文件?我在SPM manual上找不到任何说明。

3 个答案:

答案 0 :(得分:3)

使用Swift 4,给定使用swift package init --type executable创建的DemoProject,对Package.swift进行更改(添加products部分)。

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "DemoProject",
    products: [
        .executable(name: "demo", targets: ["DemoProject"]),
    ],
    dependencies: [],
    targets: [
        .target(
            name: "DemoProject",
            dependencies: []),
    ]
)

这将创建一个名为demo的可执行文件。

答案 1 :(得分:0)

更改可执行文件名称

在 SPM 5.4 中,您可以在 executable 中设置 products 名称。

.executable(name: "ExecutableName", targets: ["ExecutableTargetName"])

直接构建可执行产品

如果您想直接构建可执行文件,请尝试命令 swift build --product ExecutableName

您也可以使用 --show-bin-path 参数获取构建结果所在的位置

例如swift build --product ExecutableName --show-bin-path

演示包.swift

// swift-tools-version:5.4

import PackageDescription

let package = Package(
  name: "PackageName",
  platforms: [
    .iOS(.v11),
    .macOS(.v10_15),
  ],
  products: [
    .library(name: "LibraryName", targets: ["LibraryTarget"]),
    .executable(name: "ExecutableName", targets: ["ExecutableTargetName"])
  ],
  dependencies: [...],
  targets: [
    .target(
      name: "LibraryTarget",
      dependencies: [...],
      path: "Sources/..."
    ),
    .executableTarget(
      name: "ExecutableTargetName",
      dependencies: [...],
      path: "Sources/..."
    ),
  ]
)

答案 2 :(得分:-1)

我赞成在When checking ...之上使用另一个构建系统,例如make。目前,swift build不允许定义自定义"挂钩"实现各种构建自动化任务 - 生成代码,复制资源,部署可执行文件等。使用swift build后,您可以定义所需的任务,特别是重命名二进制文件。