使用Swift Argument Parser创建命令行工具的问题及简化诉求
如何无需手动编写Package.swift创建带Swift Argument Parser的命令行工具?
遇到的问题
尝试了两种创建基于Swift Argument Parser的命令行工具的方法,均失败:
方法一:SPM初始化后通过Xcode添加依赖
- 创建项目文件夹
- 终端执行命令:
cd目标文件夹swift package init --type executablexed Package.swift
- 问题:通过Xcode「File>添加包依赖」功能添加swift-argument-parser时,「复制依赖」按钮无响应。
方法二:Xcode新建命令行工具项目
- 在Xcode中选择「File>新建项目」,创建Mac OS命令行工具
- 选择「File>添加包依赖」
- 问题:运行时提示「Library not loaded: @rpath/ArgumentParser.framework/Versions/A/ArgumentParser」,替换main.swift为带
@main和ParsableCommand的代码、清理构建文件夹均无效。
目前仅能通过手动编辑Package.swift添加依赖实现功能,但不熟悉SPM,调试语法耗时且充满挫败感,希望找到无需手动编写Package.swift、一键式的简单操作步骤。
简化操作步骤
方案1:用Xcode直接创建SPM可执行项目(推荐)
- 打开Xcode,选择「File > New > Project」
- 在左侧模板列表中选择「macOS」分类下的「Swift Package」,点击「Next」
- 填写项目名称,勾选「Create executable product」选项,选择保存路径后点击「Create」
- 在Xcode左侧导航栏选中项目根节点(对应Package.swift),切换到「Package Dependencies」标签页
- 点击左下角「+」按钮,在搜索框输入
https://github.com/apple/swift-argument-parser,选择官方包后点击「Add Package」 - 在弹出的依赖分配窗口中,确保你的可执行目标(与项目同名的target)被勾选,点击「Add Package」
- 直接在
Sources/[你的项目名]/main.swift中编写带@main和ParsableCommand结构的代码,点击运行即可正常构建。
方案2:修复Xcode命令行工具项目的依赖问题
如果偏好使用Xcode原生命令行工具模板:
- 新建MacOS命令行工具项目后,通过「File>添加包依赖」搜索并添加swift-argument-parser
- 选中项目根目录,切换到「Build Phases」标签页
- 在「Link Binary With Libraries」模块点击「+」,找到并添加
ArgumentParser.framework - 同样在「Embed Frameworks」模块添加
ArgumentParser.framework,设置「Destination」为「Frameworks」,勾选「Copy only when installing」 - 替换main.swift为符合要求的代码,清理构建文件夹后重新运行即可。
内容的提问来源于stack exchange,提问作者Duncan C
相关产品推荐
相关产品推荐

