VSCode for Swift:在非Mac环境下进行Swift编程的探索

12次阅读

可在非mac设备上通过三种方式配置vscode swift开发环境:一、安装Swift官方linux工具链并搭配VSCode Swift插件;二、使用docker Dev Container隔离运行Swift;三、借助WSL2在windows中部署Swift并集成VSCode远程开发。

如果您希望在非mac设备上使用vscode进行swift编程,但发现swift官方工具链仅原生支持macos,这可能导致编译器不可用、语法高亮异常或调试功能缺失。以下是针对该限制的多种可行路径:

本文运行环境:Dell XPS 13,ubuntu 24.04

一、通过Swift官方Linux工具链配合VSCode插件构建开发环境

Swift官方为Linux提供了完整编译器与标准库支持,可直接安装二进制包,并借助VSCode的Swift插件实现基础编辑与构建能力。

1、访问swift.org/download页面,下载适用于Ubuntu 24.04的swift-5.9-RELEASE-ubuntu22.04.tar.gz(兼容24.04)。

2、解压至/opt/swift目录,并将/opt/swift/usr/bin添加至系统PATH环境变量。

3、执行swift --version确认命令行可用,输出应显示5.9版本信息。

4、在VSCode中安装扩展“Swift for visual studio Code”(由ssen gitHub仓库维护)。

5、打开一个空文件夹,在其中创建Package.swift文件并输入最小化内容:import PackageDescription; let package = Package(name: “Hello”)

6、按Ctrl+Shift+P调出命令面板,输入“Swift: Resolve Package”,触发依赖解析与工具链绑定。

二、使用Docker容器隔离Swift运行时并集成VSCode Dev Container

通过Dev Container在VSCode中启动预配置的Swift Linux容器,避免宿主机环境污染,确保工具链版本精确可控。

1、在项目根目录新建.devcontainer/devcontainer.json文件。

2、在该文件中指定镜像为swift:5.9-jammy(官方Docker Hub提供的Ubuntu 22.04基础镜像)。

3、在devcontainer.json中配置postCreateCommand字段,执行swift build --enable-test-discovery以验证编译器就绪。

4、安装Remote – Containers扩展后,点击命令面板中的“Dev Containers: Reopen in Container”。

5、容器启动完成后,在VSCode内新建main.swift,输入print("Hello from Swift in Docker")

6、按Ctrl+Shift+P运行“Swift: Build Workspace”,生成可执行文件于.build/debug/目录下。

三、借助WSL2在Windows上部署原生Swift Linux环境并映射VSCode工作区

利用WSL2的完整Linux内核能力运行Swift工具链,再通过VSCode的WSL扩展直接编辑和调试,获得接近原生Linux的开发体验。

1、在microsoft Store中安装Windows Subsystem for Linux,选择Ubuntu 24.04发行版。

2、启动Ubuntu终端,执行sudo apt update && sudo apt install curl gnupg2 wget安装依赖工具。

3、导入Swift GPG密钥:curl -sL https://swiftpackageindex.com/keys/swift.gpg | gpg --dearmor -o /usr/share/keyrings/swift.gpg

4、添加Swift APT仓库源地址至/etc/apt/sources.list.d/swift.list,内容为:deb [arch=amd64 signed-by=/usr/share/keyrings/swift.gpg] https://archive.ubuntu.com/ubuntu jammy main

5、运行sudo apt update && sudo apt install swift-lang完成安装。

6、在Windows端安装VSCode,启用“Remote – WSL”扩展,然后从WSL终端中执行code .打开当前目录。

text=ZqhQzanResources