Cursor 无法编译运行 SwiftUI 项目的解决方法

Cursor 不能代替 Xcode。本文用完整 Xcode、Swift 与 SweetPad 接入 iOS SDK 和 Simulator,解决 SwiftUI 项目无法编译、启动及代码跳转的问题。

  • 编程

Cursor 可以写 Swift,但不能代替 Xcode。

SwiftUI 应用需要完整 Xcode 提供的 iOS SDK、xcodebuild 和 Simulator。只安装 Command Line Tools 时,swift --version 可能正常,但项目仍然无法编译或启动。

先确认是不是环境问题

在 Cursor 终端执行:

xcode-select --print-path
xcodebuild -version

如果第一条输出:

/Library/Developer/CommandLineTools

同时第二条提示 xcodebuild requires Xcode,问题就不是 SwiftUI 代码,而是当前只启用了精简版命令行工具。

解决步骤

1. 安装并启用完整 Xcode

从 Mac App Store 或 Apple Developer 下载完整 Xcode。安装后先启动一次,让 Xcode 完成组件初始化,并在需要时安装对应版本的 iOS Simulator。

然后执行:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

再次检查:

xcode-select --print-path
xcodebuild -version
xcrun simctl list devices

正常情况下,第一条应指向 /Applications/Xcode.app/Contents/Developer,第二条会显示 Xcode 版本,第三条能列出模拟器。

也可以在 Xcode → Settings → Locations → Command Line Tools 中选择当前 Xcode。

2. 在 Cursor 安装两个扩展

  • Swift:负责语法提示、补全、跳转和诊断,底层使用 SourceKit-LSP。
  • SweetPad:负责调用 Xcode 的构建系统,并把应用运行到 Simulator 或真机。

Swift 官方扩展可以直接从 Cursor 的 Extensions 面板或 Open VSX 安装,不需要去第三方 VSIX 下载站找安装包。

CodeLLDB 只在断点调试时需要,不是编译和启动 SwiftUI 项目的前置条件。

3. 用 SweetPad 编译并启动

  1. 在 Cursor 中打开包含 .xcodeproj.xcworkspace 的项目根目录。
  2. 打开左侧 SweetPad 面板,进入 Build
  3. 选择正确的 Scheme 和 Simulator。
  4. 点击 Scheme 旁边的 ▶️ Build & Run

SweetPad 底层调用的仍然是 xcodebuild。它只是把 Xcode 的构建和模拟器操作接入 Cursor,所以完整 Xcode 必须先能正常工作。

如果项目中有多个 workspace,在命令面板执行 SweetPad: Select Xcode workspace,选择实际使用的 .xcworkspace

让代码补全和跳转正常工作

编译运行与代码跳转是两件事。项目已经能启动,但 ⌘ + 点击 仍然不能跳转时,再配置 Build Server。

  1. 在 SweetPad 的 Tools 面板安装 xcode-build-server,或执行:
brew install xcode-build-server --head
  1. 在命令面板执行 SweetPad: Generate Build Server Config
  2. 用 SweetPad 成功构建项目一次。

SweetPad 会自动生成项目根目录下的 buildServer.json。不要手写其中的 Xcode 工程、DerivedData 和工具绝对路径:这些路径会随着项目位置、Scheme、Xcode 版本和构建缓存变化,手写配置很容易失效。

如果补全仍然异常,执行 SweetPad: Diagnose BSP (Doctor),它会逐项检查 Build Server、Scheme 和 Xcode Developer Directory。

常见情况

  • SweetPad 看不到 Scheme:确认打开的是项目根目录,并重新选择 .xcodeproj.xcworkspace
  • 没有可选 Simulator:在 Xcode 的 Components 设置中安装对应平台运行时。
  • Xcode 中也无法构建:先处理项目依赖、签名或代码错误,这已经不是 Cursor 环境问题。
  • 只有跳转失效:重新生成 Build Server 配置,并成功构建一次。
  • 安装了多个 Xcode:用 xcode-select --print-path 确认 Cursor 实际使用的版本。

判断是否已经解决

满足下面四点即可:

  • xcodebuild -version 能正常返回版本。
  • SweetPad 能识别项目 Scheme。
  • Build & Run 能启动 Simulator 中的应用。
  • 生成 Build Server 配置并构建后,Swift 代码可以补全和跳转。

参考文档

  • Swift.org:在 Cursor 中配置 Swift 开发环境
  • Apple:配置命令行工具所使用的 Xcode
  • Apple:在模拟器或真机上运行应用
  • SweetPad:Build & Run
  • SweetPad:Autocomplete 与 Build Server