使用启动路径 /usr/bin/swift 的进程是否需要在 Mac 上安装命令行工具?

Does Process with Launch Path /usr/bin/swift requires Command Line Tools to be installed on Mac?

我正在开发一个 mac 应用程序,我需要使用不同的 swift 脚本来执行不同的操作。

            let outputPipe = Pipe()
            let errorPipe = Pipe()
             
            let task:Process = Process()
            task.launchPath = "/usr/bin/swift"
            task.arguments = [filePath, scriptInput.string]
            task.standardOutput = outputPipe
            task.standardError = errorPipe
            task.launch()

为了执行 swift 脚本,我正在使用启动路径 /usr/bin/swift 初始化进程。在未安装 xcode 的 mac 上,我的应用程序要求下载命令行工具。

是否需要在 mac 中安装命令行工具才能 运行 swift 脚本?

,Swift“脚本”(Swift 文件 运行 直接使用 swift — 这是在场景,编译到一个临时目录然后立即执行)需要命令行工具或在目标机器上完整 Xcode 安装(取决于脚本需要做什么)。

macOS 未预装 Swift 编译器(或其他开发人员工具),因此在目标计算机上编译 Swift 需要安装它。当 运行 时,预装在 macOS 上的 /usr/bin/swift 提示进行此安装 — 安装工具将覆盖 /usr/bin/swift 以便能够编译 Swift.

如果您尝试在您的应用程序旁边分发和 运行 这样的“脚本”,您需要确保最终用户安装了命令行工具(或提示他们遵循自己安装它们的说明),或将这些脚本预编译到您的应用程序中,这样您就不需要依赖 /usr/bin/swift。后者可能是首选:为什么您需要 运行 在外部脚本中执行操作,为什么您的应用程序不能自己执行这些操作?

如果您的应用打算帮助用户运行他们的自己的脚本,他们也需要安装这些工具。


请注意,这并非 /usr/bin/swift 所独有。例如,macOS 还附带一个 /usr/bin/git,提示相同的内容。许多基本 developer-related command-line 工具都需要命令行工具。