swift - Process with Launch Path/usr/bin/swift 是否需要在 Mac 上安装命令行工具?

标签 swift macos cocoa

我正在开发一个 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,它会提示同样的事情。命令行工具对于许多与开发人员相关的基本命令行工具来说是必需的。

关于swift - Process with Launch Path/usr/bin/swift 是否需要在 Mac 上安装命令行工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70822813/

相关文章:

swift - 无法将类型 'Float' 的值转换为预期的参数类型 'Binding<Float>' 错误 Swift 5.2

objective-c - 读取 ~/Library/Preferences/内的 plist

objective-c - appendBezierPathWithGlyph 在 [NSBezierPath currentPoint] 中失败

objective-c - 使用 NSTask 和 NSPipe 导致 100% CPU 使用率

swift - 如何使用 Alamofire 读取响应 cookie

ios - Swift:无法检测 SCNNode 上的 HitTest ?查看vector3是否包含在节点中?

c++ - macdeployqt 不复制插件

macos - 检测将窗口从一个显示器移动到另一个显示器

Swift:为什么我不能使用 'contains(: )"?

c++ - 从 Xcode 转换为 CMake