From 99d8a745ee6e1e0295249d8f6c32ebb87aa62f8a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 15 Nov 2025 07:40:42 +0000 Subject: [PATCH] Updated Wiki content --- developer-reference/How-to-build.md | 55 +++++++++++------- .../develop/compile_vs2022_local_debugger.png | Bin 830 -> 0 bytes images/develop/compile_vs_local_debugger.png | Bin 0 -> 1066 bytes images/develop/vs2022cmd.png | Bin 6925 -> 0 bytes images/develop/vs_cmd.png | Bin 0 -> 6973 bytes 5 files changed, 33 insertions(+), 22 deletions(-) delete mode 100644 images/develop/compile_vs2022_local_debugger.png create mode 100644 images/develop/compile_vs_local_debugger.png delete mode 100644 images/develop/vs2022cmd.png create mode 100644 images/develop/vs_cmd.png diff --git a/developer-reference/How-to-build.md b/developer-reference/How-to-build.md index 21957f4..134ff15 100644 --- a/developer-reference/How-to-build.md +++ b/developer-reference/How-to-build.md @@ -7,6 +7,7 @@ Whether you're a contributor or just want a custom build, this guide will help y - [Windows 64-bit](#windows-64-bit) - [Windows Tools Required](#windows-tools-required) + - [Windows Hardware Requirements](#windows-hardware-requirements) - [Windows Instructions](#windows-instructions) - [MacOS 64-bit](#macos-64-bit) - [MacOS Tools Required](#macos-tools-required) @@ -32,10 +33,15 @@ How to building with Visual Studio on Windows 64-bit. ### Windows Tools Required -- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) or Visual Studio 2019 +- [Visual Studio](https://visualstudio.microsoft.com/vs/) 2022, 2026 or Visual Studio 2019 + - 2022 ```shell winget install --id=Microsoft.VisualStudio.2022.Professional -e ``` + - 2026 + ```shell + winget install --id=Microsoft.VisualStudio.Community -e + ``` - [CMake](https://cmake.org/) ```shell winget install --id=Kitware.CMake -e @@ -67,6 +73,21 @@ How to building with Visual Studio on Windows 64-bit. ![windows_variables_path](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/develop/windows_variables_path.png?raw=true) ![windows_variables_order](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/develop/windows_variables_order.png?raw=true) +> [!IMPORTANT] +> **For Visual Studio 2026**, you must use the CMake included with Visual Studio 2026 **until CMake 4.2 is released as a stable version**. +> To do this, you must include the cmake path contained in Visual Studio above the variable of the official cmake installed on your computer. +> The path will look something like this: +> ```shell +> C:\Program Files\Microsoft Visual Studio\18\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin +> ``` + +### Windows Hardware Requirements + +- Minimum 16 GB RAM +- Minimum 23 GB free disk space +- 64-bit CPU +- 64-bit Windows 10 or later + ### Windows Instructions 1. Clone the repository: @@ -81,14 +102,9 @@ How to building with Visual Studio on Windows 64-bit. git lfs pull ``` 2. Open the appropriate command prompt: - - Visual Studio 2022: - ```MD - x64 Native Tools Command Prompt for VS 2022 - ``` - - Visual Studio 2019: - ```MD - x64 Native Tools Command Prompt for VS 2019 - ``` + ```MD + x64 Native Tools Command Prompt for VS + ``` 1. Navigate to correct drive (if needed), e.g.: ```shell N: @@ -98,16 +114,11 @@ How to building with Visual Studio on Windows 64-bit. cd N:\Repos\OrcaSlicer ``` 3. Run the build script: - - Visual Studio 2022: - ```shell - build_release_vs2022.bat - ``` - - Visual Studio 2019: - ```shell - build_release.bat - ``` + ```shell + build_release_vs.bat + ``` -![vs2022cmd](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/develop/vs2022cmd.png?raw=true) +![vs_cmd](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/develop/vs_cmd.png?raw=true) > [!NOTE] > The build process will take a long time depending on your system but even with high-end hardware it can take up to 40 minutes. @@ -115,13 +126,13 @@ How to building with Visual Studio on Windows 64-bit. > [!TIP] > If you encounter issues, you can try to uninstall ZLIB from your Vcpkg library. -3. If successful, you will find the Visual Studio solution file in: +1. If successful, you will find the Visual Studio solution file in: ```shell build\OrcaSlicer.sln ``` -4. Open the solution in Visual Studio, set the build configuration to `Release` and run the `Local Windows Debugger`. - ![compile_vs2022_local_debugger](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/develop/compile_vs2022_local_debugger.png?raw=true) -5. Your resulting executable will be located in: +2. Open the solution in Visual Studio, set the build configuration to `Release` and run the `Local Windows Debugger`. + ![compile_vs_local_debugger](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/develop/compile_vs_local_debugger.png?raw=true) +3. Your resulting executable will be located in: ```shell \build\src\Release\orca-slicer.exe ``` diff --git a/images/develop/compile_vs2022_local_debugger.png b/images/develop/compile_vs2022_local_debugger.png deleted file mode 100644 index ea5aaee19e2d6026dbe3ddea703416351d297ad1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 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 npP>IUSLOTqcy;1mC=zWAef3Wdp`rf))GJP% diff --git a/images/develop/vs_cmd.png b/images/develop/vs_cmd.png new file mode 100644 index 0000000000000000000000000000000000000000..76cee67e092934de856d40bb3eb3529a7898556d GIT binary patch literal 6973 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