2025-09-12 16:07:35 +02:00
# ⚠️ This guide is for developers ONLY! Support will be provided to developers ONLY.
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
## 📋 Current building methods:
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* [ Minimal Dependencies ](#minimal-dependencies )
* [⚡ Method I: MSVC Build for Windows ](#method-i-msvc-build-for-windows )
* [🐧 Method II: MinGW-w64 Build with MSYS2 ](#method-ii-mingw-w64-build-with-msys2 )
* [🖥️ Method III: CLion Environment Setup ](#method-iii-clion-environment-setup )
* [💻 Building from the command line with MSVC ](#building-from-the-command-line-with-msvc )
* [📜 Building with Scripts ](#building-with-scripts )
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
---
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
## Minimal Dependencies
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
On Windows, **all** library dependencies are **automatically included** within the `externals` folder.
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
You still need to install:
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* **[CMake ](https://cmake.org/download/ )** - Used to generate Visual Studio project files.
* **[Vulkan SDK ](https://vulkan.lunarg.com/sdk/home#windows )** - Make sure to select **Latest SDK** .
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* *A convenience script to install the latest SDK is provided in `.ci/windows/install-vulkan-sdk.ps1` *
* **[Git for Windows ](https://gitforwindows.org )** - We recommend installing Git for command line use and version control integration.
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
< img src = "https://i.imgur.com/x0rRs1t.png" width = "500" >
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* *While installing Git Bash, select "Git from the command line and also from 3rd-party software". If missed, manually set `git.exe` path in CMake.*
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
---
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
## ⚡ Method I: MSVC Build for Windows
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
### a. Prerequisites to MSVC Build
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* **[Visual Studio 2022 Community ](https://visualstudio.microsoft.com/downloads/ )** - Make sure to **select C++ support** in the installer, or **update to the latest version** if already installed.
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* *A convenience script to install the **minimal** version (Visual Build Tools) is provided in `.ci/windows/install-msvc.ps1` *
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
---
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
### b. Clone the eden repository with Git
Open Terminal on
```cmd
git clone https://git.eden-emu.dev/eden-emu/eden
cd eden
```
* *By default `eden` downloads to `C:\Users\<user-name>\eden` *
---
### c. Building
* Open the CMake GUI application and point it to the `eden`
< img src = "https://i.imgur.com/qOslIWv.png" width = "500" >
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* For the build directory, use a `build/` subdirectory inside the source directory or some other directory of your choice. (Tell CMake to create it.)
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* Click the "Configure" button and choose `Visual Studio 17 2022` , with `x64` for the optional platform.
< img src = "https://i.imgur.com/DKiREaK.png" width = "500" >
2025-09-08 19:21:38 +02:00
* *(You may also want to disable `YUZU_TESTS` in this case since Catch2 is not yet supported with this.)*
2025-09-12 16:07:35 +02:00
< img src = "https://user-images.githubusercontent.com/22451773/180585999-07316d6e-9751-4d11-b957-1cf57cd7cd58.png" width = "500" >
2025-09-08 19:21:38 +02:00
* Click "Generate" to create the project files.
2025-09-12 16:07:35 +02:00
< img src = "https://i.imgur.com/5LKg92k.png" width = "500" >
2025-09-08 19:21:38 +02:00
* Open the solution file `yuzu.sln` in Visual Studio 2022, which is located in the build folder.
2025-09-12 16:07:35 +02:00
< img src = "https://i.imgur.com/208yMml.png" width = "500" >
* * Depending on whether you want a graphical user interface or not, select in the Solution Explorer:
* `eden` (GUI)
* `eden-cmd` (command-line only)
* Then **right-click** and choose `Set as StartUp Project` .
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
< img src = "https://i.imgur.com/nPMajnn.png" height = "500" >
< img src = "https://i.imgur.com/BDMLzRZ.png" height = "500" >
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* Select the appropriate build type, `Debug` for debug purposes or `Release` for performance (in case of doubt choose `Release` ).
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
< img src = "https://i.imgur.com/qxg4roC.png" width = "500" >
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* **Right-click** the project you want to build and press **Build** in the submenu or press `F5` .
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
< img src = "https://i.imgur.com/CkQgOFW.png" height = "500" >
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
---
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
## 🐧 Method II: MinGW-w64 Build with MSYS2
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
### a. Prerequisites to MinGW-w64
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* **[MSYS2 ](https://www.msys2.org )** - A versatile and up-to-date development environment for Windows, providing a Unix-like shell, package manager, and toolchain.
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
---
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
### b. Install eden dependencies for MinGW-w64
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* Open the `MSYS2 MinGW 64-bit` shell (`mingw64.exe` )
* Download and install all dependencies using:
* `pacman -Syu git make mingw-w64-x86_64-SDL2 mingw-w64-x86_64-cmake mingw-w64-x86_64-python-pip mingw-w64-x86_64-qt6 mingw-w64-x86_64-toolchain autoconf libtool automake-wrapper`
* Add MinGW binaries to the PATH:
* `echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc`
* Add VulkanSDK to the PATH:
* `echo 'PATH=$(readlink -e /c/VulkanSDK/*/Bin/):$PATH' >> ~/.bashrc`
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
---
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
### c. Clone the eden repository with Git
```cmd
git clone https://git.eden-emu.dev/eden-emu/eden
cd eden
```
---
### d. Building dynamically-linked eden
* This process will generate a *dynamically* linked build
2025-09-08 19:21:38 +02:00
```bash
2025-09-12 16:07:35 +02:00
# Make build dir and enter
2025-09-08 19:21:38 +02:00
mkdir build & & cd build
2025-09-12 16:07:35 +02:00
# Generate CMake Makefiles
cmake .. -G "MSYS Makefiles" -DYUZU_TESTS=OFF
# Build
2025-09-08 19:21:38 +02:00
make -j$(nproc)
2025-09-12 16:07:35 +02:00
# Run eden!
2025-09-08 19:21:38 +02:00
./bin/eden.exe
```
2025-09-12 16:07:35 +02:00
* *Warning: This build is not a **static** build meaning that you **need** to include all of the DLLs with the .exe in order to use it or other systems!*
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
---
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
### Additional notes
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* Eden doesn't require the rather large Qt dependency, but you will lack a GUI frontend
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
```bash
# ...
# Generate CMake Makefiles (withou QT)
cmake .. -G "MSYS Makefiles" -DYUZU_TESTS=OFF -DENABLE_QT=no
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
$ ...
```
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* Running programs from inside `MSYS2 MinGW x64` shell has a different `%PATH%` than directly from explorer.
* This different `%PATH%` has the locations of the other DLLs required.
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
< img src = "https://user-images.githubusercontent.com/190571/165000848-005e8428-8a82-41b1-bb4d-4ce7797cdac8.png" width = "500" >
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
---
## 🖥️ Method III: CLion Environment Setup
### a. Prerequisites to CLion
2025-09-08 19:21:38 +02:00
* [CLion ](https://www.jetbrains.com/clion/ ) - This IDE is not free; for a free alternative, check Method I
2025-09-12 16:07:35 +02:00
---
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
### b. Cloning eden with CLion
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* Clone the Repository:
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
< img src = "https://user-images.githubusercontent.com/42481638/216899046-0d41d7d6-8e4d-4ed2-9587-b57088af5214.png" width = "500" >
< img src = "https://user-images.githubusercontent.com/42481638/216899061-b2ea274a-e88c-40ae-bf0b-4450b46e9fea.png" width = "500" >
< img src = "https://user-images.githubusercontent.com/42481638/216899076-0e5988c4-d431-4284-a5ff-9ecff973db76.png" width = "500" >
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
---
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
### c. Building & Setup
2025-09-08 19:21:38 +02:00
* Once Cloned, You will be taken to a prompt like the image below:
2025-09-12 16:07:35 +02:00
< img src = "https://user-images.githubusercontent.com/42481638/216899092-3fe4cec6-a540-44e3-9e1e-3de9c2fffc2f.png" width = "500" >
2025-09-08 19:21:38 +02:00
* Set the settings to the image below:
* Change `Build type: Release`
* Change `Name: Release`
* Change `Toolchain Visual Studio`
* Change `Generator: Let CMake decide`
* Change `Build directory: build`
2025-09-12 16:07:35 +02:00
< img src = "https://user-images.githubusercontent.com/42481638/216899164-6cee8482-3d59-428f-b1bc-e6dc793c9b20.png" width = "500" >
2025-09-08 19:21:38 +02:00
* Click OK; now Clion will build a directory and index your code to allow for IntelliSense. Please be patient.
* Once this process has been completed (No loading bar bottom right), you can now build eden
* In the top right, click on the drop-down menu, select all configurations, then select eden
2025-09-12 16:07:35 +02:00
< img src = "https://user-images.githubusercontent.com/42481638/216899226-975048e9-bc6d-4ec1-bc2d-bd8a1e15ed04.png" height = "500" >
2025-09-08 19:21:38 +02:00
* Now run by clicking the play button or pressing Shift+F10, and eden will auto-launch once built.
2025-09-12 16:07:35 +02:00
< img src = "https://user-images.githubusercontent.com/42481638/216899275-d514ec6a-e563-470e-81e2-3e04f0429b68.png" width = "500" >
---
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
## 💻 Building from the command line with MSVC
2025-09-08 19:21:38 +02:00
```cmd
2025-09-12 16:07:35 +02:00
# Clone eden and enter
git clone https://git.eden-emu.dev/eden-emu/eden
2025-09-08 19:21:38 +02:00
cd eden
2025-09-12 16:07:35 +02:00
# Make build dir and enter
mkdir build & & cd build
# Generate CMake Makefiles
cmake .. -G "Visual Studio 17 2022" -A x64 -DYUZU_TESTS=OFF
# Build
2025-09-08 19:21:38 +02:00
cmake --build . --config Release
```
2025-09-12 16:07:35 +02:00
## 📜 Building with Scripts
* A convenience script for building is provided in `.ci/windows/build.sh` .
* You must run this with Bash, e.g. Git Bash or MinGW TTY.
* To use this script, you must have `windeployqt` installed (usually bundled with Qt) and set the `WINDEPLOYQT` environment variable to its canonical Bash location:
* `WINDEPLOYQT="/c/Qt/6.9.1/msvc2022_64/bin/windeployqt6.exe" .ci/windows/build.sh` .
* You can use `aqtinstall` , more info on < https: // github . com / miurahr / aqtinstall > and < https: // ddalcino . github . io / aqt-list-server />
* Extra CMake flags should be placed in the arguments of the script.
#### Additional environment variables can be used to control building:
* `BUILD_TYPE` (default `Release` ): Sets the build type to use.
* The following environment variables are boolean flags. Set to `true` to enable or `false` to disable:
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* `DEVEL` (default FALSE): Disable Qt update checker
* `USE_WEBENGINE` (default FALSE): Enable Qt WebEngine
* `USE_MULTIMEDIA` (default TRUE): Enable Qt Multimedia
* `BUNDLE_QT` (default FALSE): Use bundled Qt
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* Note that using **system Qt** requires you to include the Qt CMake directory in `CMAKE_PREFIX_PATH`
* `.ci/windows/build.sh -DCMAKE_PREFIX_PATH=C:/Qt/6.9.0/msvc2022_64/lib/cmake/Qt6`
2025-09-08 19:21:38 +02:00
2025-09-12 16:07:35 +02:00
* After building, a zip can be packaged via `.ci/windows/package.sh` . You must have 7-zip installed and in your PATH.
* The resulting zip will be placed into `artifacts` in the source directory.
2025-09-08 19:21:38 +02:00