Skip to main content

Building Zed for Windows

The following commands may be executed in any shell.

Clone the Repository

Clone the Zed repository:
git clone https://github.com/zed-industries/zed.git
cd zed

Install Dependencies

Rust

Install rustup.

Visual Studio or Build Tools

Install either:
  • Visual Studio with the optional components:
    • MSVC v*** - VS YYYY C++ x64/x86 build tools
    • MSVC v*** - VS YYYY C++ x64/x86 Spectre-mitigated libs (latest) (where v*** is your VS version and YYYY is the release year. Adjust architecture as needed)
Or, if you prefer a slimmer installation:
  • Install only the Build Tools (plus the libs above) and the “Desktop development with C++” workload
This setup is not picked up automatically by rustup. Before compiling, initialize environment variables by launching the developer shell (cmd/PowerShell) installed in the Start menu or Windows Terminal.

Windows SDK

Install the Windows 11 or 10 SDK for your system, and make sure at least Windows 10 SDK version 2104 (10.0.20348.0) is installed. You can download it from the Windows SDK Archive.

CMake

Install CMake (required by a dependency). You can also install it through Visual Studio Installer, then manually add the bin directory to your PATH, for example:
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin

Verify Visual Studio Components

If you cannot compile Zed, make sure a Visual Studio installation includes at least the following components:
{
  "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": []
}
If you are using Build Tools only, make sure these components are installed:
{
  "version": "1.0",
  "components": [
    "Microsoft.VisualStudio.Component.Roslyn.Compiler",
    "Microsoft.Component.MSBuild",
    "Microsoft.VisualStudio.Component.CoreBuildTools",
    "Microsoft.VisualStudio.Workload.MSBuildTools",
    "Microsoft.VisualStudio.Component.Windows10SDK",
    "Microsoft.VisualStudio.Component.VC.CoreBuildTools",
    "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
    "Microsoft.VisualStudio.Component.VC.Redist.14.Latest",
    "Microsoft.VisualStudio.Component.Windows11SDK.26100",
    "Microsoft.VisualStudio.Component.VC.CMake.Project",
    "Microsoft.VisualStudio.Component.TextTemplating",
    "Microsoft.VisualStudio.Component.VC.CoreIde",
    "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core",
    "Microsoft.VisualStudio.Workload.VCTools",
    "Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre"
  ],
  "extensions": []
}
You can export this component list:
  1. Open the Visual Studio Installer
  2. Click on More in the Installed tab
  3. Click on Export configuration

Build Zed from Source

Once you have the dependencies installed, you can build Zed using Cargo.

Debug Build

For a debug build:
cargo run

Release Build

For a release build:
cargo run --release

Run Tests

To run the tests:
cargo test --workspace
Visual regression tests are currently macOS-only and require Screen Recording permission. See Building Zed for macOS for details.

Troubleshooting

Setting RUSTFLAGS env var breaks builds

If you set the RUSTFLAGS env var, it will override the rustflags settings in .cargo/config.toml which is required to properly build Zed. Because these settings change over time, the resulting build errors may vary from linker failures to other hard-to-diagnose errors. If you need extra Rust flags, use one of the following approaches in .cargo/config.toml:

Add your flags in the build section

[build]
rustflags = ["-C", "symbol-mangling-version=v0", "--cfg", "tokio_unstable"]

Add your flags in the windows target section

[target.'cfg(target_os = "windows")']
rustflags = [
    "--cfg",
    "windows_slim_errors",
    "-C",
    "target-feature=+crt-static",
]

Create a parent .cargo/config.toml

Or, create a new .cargo/config.toml in the parent directory of the Zed repo. This is useful in CI because you do not need to edit the repo’s original .cargo/config.toml.
upper_dir
├── .cargo          // <-- Make this folder
│   └── config.toml // <-- Make this file
└── zed
    ├── .cargo
    │   └── config.toml
    └── crates
        ├── assistant
        └── ...
In the new (above) .cargo/config.toml, if we wanted to add --cfg gles to our rustflags, it would look like:
[target.'cfg(all())']
rustflags = ["--cfg", "gles"]

Cargo errors claiming that a dependency is using unstable features

Try:
cargo clean
cargo build

STATUS_ACCESS_VIOLATION

This error can happen if you are using the “rust-lld.exe” linker. Consider trying a different linker. If you are using a global config, consider moving the Zed repository to a nested directory and add a .cargo/config.toml with a custom linker config in the parent directory. See this issue for more information.

Invalid RC path selected

Sometimes, depending on the security rules applied to your laptop, you may get the following error while compiling Zed:
error: failed to run custom build command for `zed(C:\Users\USER\src\zed\crates\zed)`

Caused by:
  process didn't exit successfully: `C:\Users\USER\src\zed\target\debug\build\zed-b24f1e9300107efc\build-script-build` (exit code: 1)
  --- stdout
  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 does not exist
  Selected RC path: 'bin\x64\rc.exe'

  --- stderr
  The system cannot find the path specified. (os error 3)
warning: build failed, waiting for other jobs to finish...
To fix this issue, manually set the ZED_RC_TOOLKIT_PATH environment variable to the RC toolkit path. Usually this is:
C:\Program Files (x86)\Windows Kits\10\bin\<SDK_version>\x64
See this issue for more information.

Build fails: Path too long

You may receive an error like the following when building:
error: failed to get `pet` as a dependency of package `languages v0.1.0 (D:\a\zed-windows-builds\zed-windows-builds\crates\languages)`

Caused by:
  failed to load source for dependency `pet`

Caused by:
  Unable to update https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f2

Caused by:
  path too long: 'C:/Users/runneradmin/.cargo/git/checkouts/python-environment-tools-903993894b37a7d2/ffcbf3f/crates/pet-conda/tests/unix/conda_env_without_manager_but_found_in_history/some_other_location/conda_install/conda-meta/python-fastjsonschema-2.16.2-py310hca03da5_0.json'; class=Filesystem (30)
To fix this, enable long-path support for both Git and Windows. For git:
git config --system core.longpaths true
And for Windows with this PowerShell command:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
For more information on this, please see win32 docs. You need to restart your system after enabling long-path support.

Graphics issues

Zed fails to launch

Zed currently uses Vulkan as its graphics API on Windows. If Zed fails to launch, Vulkan is a common cause. You can check the Zed log at:
C:\Users\YOU\AppData\Local\Zed\logs\Zed.log
If you see messages like:
  • Zed failed to open a window: NoSupportedDeviceFound
  • ERROR_INITIALIZATION_FAILED
  • GPU Crashed
  • ERROR_SURFACE_LOST_KHR
Vulkan may not be working correctly on your system. Updating GPU drivers often resolves this. If there’s nothing Vulkan-related in the logs and you happen to have Bandicam installed, try uninstalling it. Zed is currently not compatible with Bandicam.