我想编写一个小的命令行工具作为一个快速包,但可执行。在开始时,我做了一个包与以下命令。
swift package init
现在,当我完成我的工作后,我意识到,这个命令确实创建了一个库,而不是一个可执行文件。现在我的问题是:有没有一种方法可以在Package.swift清单的帮助下改变这一点?
我已经尝试将Package.swift
更改为可执行文件:
import PackageDescription
let package = Package(
name: "lookupTool",
products: [
// Products define the executables and libraries a package produces, and make them visible to other packages.
.executable( // <---- Here changed to executable
name: "lookupTool",
targets: ["lookupTool"]),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
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 this package depends on.
.executableTarget( // <---- Here to executableTarget
name: "lookupTool",
dependencies: [],
exclude: ["test.txt", "test2.txt", "test3.txt"]),
.testTarget(
name: "lookupToolTests",
dependencies: ["lookupTool"]),
]
)
但它不起作用。
我无法将lookupTool
作为可执行文件在可执行文件所在的./build/debug
文件夹中运行。如果我键入命令ls
,可执行文件就在那里。
1条答案
按热度按时间nqwrtyyt1#
要运行可执行文件,有几个选项。如果它已经生成,您可以直接运行它。在包目录中,您可以键入
或者,您可以
cd
到目录并运行这是Sweeper建议的解决方案。您需要添加目录路径(即使
./
是目录路径)的原因是build/debug
和.
都不会出现在您的$PATH
变量中。顺便说一句,永远不要将.
放入您的$PATH
变量中。这是一个非常容易的漏洞。运行可执行文件的另一种方法是(从软件包目录)
这样做的好处是在运行产品之前构建它。因此,它很适合作为构建测试周期的一部分。您还可以键入
这将构建并运行工具的优化发布版本。后者与构建发布目标并键入
.build/release/lookupTool
相同