在 Windows 上构建 Zed
以下命令可在任意终端中执行。
代码仓库
克隆 Zed 代码仓库。
依赖项
-
安装 rustup
-
安装 Visual Studio,并勾选可选组件
MSVC v*** - VS YYYY C++ x64/x86 build tools和MSVC v*** - VS YYYY C++ x64/x86 Spectre-mitigated libs (latest)(v***对应你的 VS 版本,YYYY对应 VS 发布年份。注意架构类型,必要时根据你的系统调整)。 -
若希望仅安装精简版 MSVC 编译器工具,可安装 生成工具(需额外添加上述库文件)并勾选“使用 C++ 的桌面开发”工作负载。 但请注意:此安装方式不会被 rustup 自动识别。你需要先通过开始菜单或 Windows 终端启动该安装包提供的“开发人员”命令提示符(cmd/PowerShell)初始化环境变量,再进行编译。
-
根据系统版本安装 Windows 11 或 10 SDK,确保设备上至少安装
Windows 10 SDK version 2104 (10.0.20348.0)版本。可从 Windows SDK 存档下载 -
安装 CMake(为 某个依赖项所需)。也可通过 Visual Studio 安装器安装,然后手动将
bin目录添加至PATH,例如:C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin
如果无法编译Zed,请确保在安装Visual Studio的情况下至少安装了以下组件:
{
"version": "1.0",
"components": [
"Microsoft.VisualStudio.Component.CoreEditor",
"Microsoft.VisualStudio.Workload.CoreEditor",
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
"Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.CMake",
"Microsoft.VisualStudio.Component.VC.CMake.Project",
"Microsoft.VisualStudio.Component.Windows11SDK.26100",
"Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre"
],
"extensions": []
}
如果仅安装Build Tools,则需包含以下组件:
该列表可按以下方式获取:
- 打开 Visual Studio 安装程序
- 在
Installed选项卡中点击More - 点击
Export configuration
后端依赖项(可选)
若需使用本地协作服务器开发 Zed 协作功能,请参阅:本地协作 文档。
注意事项
需修改 data 目录下的 pg_hba.conf 文件,将 host 方法中的 scram-sha-256 替换为 trust,否则将出现 password authentication failed 错误导致连接失败。pg_hba.conf 文件通常位于 C:\Program Files\PostgreSQL\17\data\pg_hba.conf。修改后的文件内容应如下所示:
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
此外,若您使用的是非拉丁版本的Windows系统,必须将data目录下postgresql.conf文件中的lc_messages参数修改为English_United States.1252(或您当前使用的任意UTF8兼容编码)。否则数据库将出现异常。修改后的postgresql.conf文件应如下所示:
# lc_messages = 'Chinese (Simplified)_China.936' # locale for system error message strings
lc_messages = 'English_United States.1252'
完成此操作后,请重启postgresql服务。按下win键+R键调出Run窗口,输入services.msc并点击OK按钮打开服务管理器。找到postgresql-x64-XX服务后右键点击,选择Restart选项。
从源码构建
安装完依赖项后,您可以使用Cargo构建Zed。
调试版本构建:
cargo run
发行版本构建:
cargo run --release
运行测试套件:
通过 MSYS2 安装
Zed 不支持为 Mingw-w64 构建的非官方 MSYS2 Zed 软件包。若在使用 mingw-w64-zed 过程中遇到任何问题,请向 msys2/MINGW-packages/issues 提交报告。
请先参阅 MSYS2 文档。
故障排除
设置 RUSTFLAGS 环境变量会导致构建失败
若设置了 RUSTFLAGS 环境变量,它将覆盖 .cargo/config.toml 中的 rustflags 设置,而这些设置是正确构建 Zed 所必需的。
由于这些设置可能随时间变化,您遇到的构建错误可能包括链接器错误或其他更奇怪的错误。
若需添加额外的 Rust 标志,您可以在 .cargo/config.toml 中执行以下操作之一:
在构建部分添加您的标志
在 Windows 目标平台部分添加你的编译选项
或者,你可以在 Zed 代码库的同级目录下新建一个配置文件(如下所示)。这种方式在进行持续集成构建时特别有用,因为你无需修改原始的配置文件。
在新的配置文件中,如果我们想要将特定编译选项添加到 rustflags 中,配置内容将如下所示
依赖项使用不稳定功能导致的 Cargo 错误
尝试 cargo clean 和 cargo build。
STATUS_ACCESS_VIOLATION
如果使用 "rust-lld.exe" 链接器可能出现此错误。建议尝试更换其他链接器。
若使用全局配置,可将 Zed 代码库移至嵌套目录,并在父目录中添加 .cargo/config.toml 文件并配置自定义链接器。
更多信息请参阅此议题 #12041
选择了无效的 RC 路径
根据笔记本电脑的安全策略设置,编译 Zed 时可能遇到以下错误:
error: failed to run custom build command for `zed(C:\Users\USER\src\zed\crates\zed)`
原因:
进程未成功退出:`C:\Users\USER\src\zed\target\debug\build\zed-b24f1e9300107efc\build-script-build`(退出代码:1)
--- 标准输出
cargo:rerun-if-changed=../../.git/logs/HEAD
cargo:rustc-env=ZED_COMMIT_SHA=25e2e9c6727ba9b77415588cfa11fd969612adb7
cargo:rustc-link-arg=/stack:8388608
cargo:rerun-if-changed=resources/windows/app-icon.ico
package.metadata.winresource 不存在
已选择 RC 路径:'bin\x64\rc.exe'
--- 标准错误
系统找不到指定的路径。(操作系统错误 3)
警告:构建失败,正在等待其他任务完成...
In order to fix this issue, you can manually set the ZED_RC_TOOLKIT_PATH environment variable to the RC toolkit path. Usually, you can set it to:
C:\Program Files (x86)\Windows Kits\10\bin\<SDK_version>\x64。
更多信息请参阅此问题。
构建失败:路径过长
构建时可能出现如下错误:
为了解决这个问题,你可以为 Git 和 Windows 启用长路径支持。
对于 Git:git config --system core.longpaths true
对于 Windows,使用以下 PowerShell 命令:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
如需了解更多信息,请参阅 win32 文档
(注意:启用长路径支持后需要重启系统)
图形问题
Zed 启动失败
目前 Zed 在 Windows 系统使用 Vulkan 作为图形接口。但由于 Vulkan 在 Windows 平台的稳定性存在波动,若 Zed 无法启动,很可能是 Vulkan 相关的问题。
可通过以下路径查看 Zed 日志:
C:\Users\YOU\AppData\Local\Zed\logs\Zed.log
若出现以下提示:
Zed failed to open a window: NoSupportedDeviceFoundERROR_INITIALIZATION_FAILEDGPU CrashedERROR_SURFACE_LOST_KHR
则说明 Vulkan 在您系统中运行异常。多数情况下,更新显卡驱动可解决此问题。
若日志中未出现 Vulkan 相关报错,且您安装了 Bandicam,请尝试卸载该软件。当前 Zed 与 Bandicam 存在兼容性问题。