【问题标题】:Execute Pre-Compiled Bundled Program with Swift使用 Swift 执行预编译的捆绑程序
【发布时间】:2020-07-14 06:48:47
【问题描述】:

我正在尝试构建一个使用 CLI 工具完成大量工作的应用程序,我想知道是否可以在 macOS 10.15+ 上的 XCode 中捆绑和执行 Swift 的预编译工具?我可以将二进制文件添加到包中,但是该文件是只读的,无法执行。

示例

捆绑包中应该有一个名为cli 的二进制文件。

let stdOut = Pipe()
let process = Process()
process.executableURL = Bundle.main.url(forResource: "cli", withExtension: "")!
process.arguments = args
process.standardOutput = stdOut
try! process.run()

错误

Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=4 "The file “cli” doesn’t exist."

【问题讨论】:

    标签: swift xcode macos appkit


    【解决方案1】:

    是的,这是可能的。您看到的错误很可能是由于缺少对 cli 二进制文件的可执行权限造成的。

    你能确定文件实际上是可执行的吗?你可以在文件上运行ls -lh cli。输出应如下所示。

    ls -lh cli 
    -rwxr-xr-x@ 1 user  staff    36K 28 Mai 02:24 cli
    

    如果您的输出缺少x,则该文件缺少可执行权限。您可以使用 chmod +x cli 将它们添加到文件中。

    【讨论】:

    • 感谢您的回复!是的,我似乎遇到了一个严重错误,它可以找到文件在那里,但没有在原始文件上设置权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多