2018-07-29 06:46:26 +03:00
|
|
|
How to build SoftEther VPN for Windows
|
|
|
|
======================================
|
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
There are several methods for using CMake but the easiest by far is through Visual Studio by importing the CMake project directly
|
2018-10-31 05:39:59 +03:00
|
|
|
into it. So that is what will be described below.
|
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
## Requirements
|
|
|
|
|
|
|
|
- Visual Studio 2019 or 2022 (Community Edition is fine)
|
|
|
|
|
|
|
|
https://visualstudio.microsoft.com/downloads
|
|
|
|
|
|
|
|
- Git for Windows (or other git tool)
|
|
|
|
|
|
|
|
https://gitforwindows.org/
|
|
|
|
|
|
|
|
- vcpkg
|
|
|
|
|
|
|
|
https://github.com/microsoft/vcpkg
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
- Visual Studio
|
|
|
|
|
|
|
|
Download from the official site and run the installer.
|
|
|
|
|
|
|
|
Make sure to check **Desktop development with C++** under *Workloads* and **Clang C++ Tools for Windows** in *Optional* components.
|
|
|
|
|
|
|
|
- Git
|
|
|
|
|
|
|
|
Nothing special. Just follow the installer.
|
|
|
|
|
|
|
|
- vcpkg
|
|
|
|
|
|
|
|
Let's say you will install it to `C:\vcpkg`.
|
|
|
|
|
|
|
|
Open your preferred terminal and go to `C:\`. Then run these commands.
|
|
|
|
|
|
|
|
```
|
|
|
|
C:\> git clone https://github.com/microsoft/vcpkg
|
|
|
|
C:\> cd vcpkg
|
|
|
|
C:\vcpkg> bootstrap-vcpkg.bat
|
|
|
|
C:\vcpkg> vcpkg integrate install
|
|
|
|
```
|
|
|
|
|
2022-05-18 07:53:27 +03:00
|
|
|
## Update
|
|
|
|
|
|
|
|
- vcpkg
|
|
|
|
|
|
|
|
You are recommended to update vcpkg from time to time, so that the latest libraries are used in the build.
|
|
|
|
|
|
|
|
Go to the installation path, pull the latest repo and the binary:
|
|
|
|
|
|
|
|
```
|
|
|
|
C:\vcpkg> git pull
|
|
|
|
C:\vcpkg> bootstrap-vcpkg.bat
|
|
|
|
```
|
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
## Building
|
|
|
|
|
|
|
|
1. Launch Visual Studio
|
|
|
|
|
|
|
|
Choose either **Clone a repository** to clone from GitHub or **Open a local folder** if you already have a copy.
|
|
|
|
|
|
|
|
1. Open Terminal (*View -> Terminal*). Install the needed submodules to build the project, avoiding CMake telling you to do so with:
|
|
|
|
|
|
|
|
`git submodule update --init --recursive`
|
|
|
|
|
|
|
|
**Note**: This step is not necessary if you have chosen **Clone a repository** as Visual Studio automatically takes care of it.
|
|
|
|
|
2022-05-18 07:53:27 +03:00
|
|
|
1. Switch to folder view in the solution explorer
|
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
1. Select a configuration from the dropdown menu below the search box. The default configurations are:
|
|
|
|
|
|
|
|
- x64-native
|
|
|
|
|
|
|
|
Build x64 executables with 64-bit compiler (most common)
|
|
|
|
|
|
|
|
- x64-on-x86
|
|
|
|
|
|
|
|
Cross compile x64 executables with 32-bit compiler
|
|
|
|
|
|
|
|
- x86-native
|
|
|
|
|
|
|
|
Build x86 executables with 32-bit compiler
|
|
|
|
|
|
|
|
- x86-on-x64
|
|
|
|
|
|
|
|
Cross compile x86 executables with 64-bit compiler
|
|
|
|
|
|
|
|
On 64-bit Windows, all four configurations can be used. 32-bit platforms can only use 32-bit compiler.
|
2018-10-31 05:39:59 +03:00
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
1. Visual Studio will try generating CMake cache. If not, click **Project -> Configure Cache** or **Generate Cache**.
|
2018-10-31 05:39:59 +03:00
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
If CMake is busy, you will find **Generate Cache** greyed out. Wait until it finishes or click **Cancel CMake Cache Generation** to stop it.
|
2018-10-31 05:39:59 +03:00
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
The initial configuration will take a longer time since it needs to download and install dependencies.
|
2018-10-31 05:39:59 +03:00
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
1. When *CMake generation finished* is displayed, simply go to toolbar and click **Build -> Build All**.
|
2018-10-31 05:39:59 +03:00
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
1. Once building has finished, hopefully with no errors, look in the newly created `/build` directory in the project's folder.
|
2018-10-31 05:39:59 +03:00
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
Run `vpnsetup.exe` to install desired components.
|
2018-10-31 05:39:59 +03:00
|
|
|
|
2022-04-27 15:20:01 +03:00
|
|
|
1. Congrats, you now have a complete CMake development environment for SoftEtherVPN on Windows, enjoy and happy contributing!
|
2022-05-18 07:53:27 +03:00
|
|
|
|
|
|
|
## Notes
|
|
|
|
|
|
|
|
1. Build number
|
|
|
|
|
|
|
|
You can change the build number in `CMakeSettings.json`. Use any integer no less than 5180.
|
|
|
|
|
|
|
|
Delete and regenerate CMake cache after the change.
|
|
|
|
|
2022-11-27 12:57:53 +03:00
|
|
|
1. OpenSSL
|
|
|
|
|
|
|
|
The above instruction builds OpenSSL library statically in the SoftEther binaries,
|
|
|
|
so that when you distribute the installer to others they will not need to install OpenSSL separately.
|
|
|
|
However, the downside is that the OpenSSL library cannot be updated without a rebuild and reinstallation of SoftEther.
|
|
|
|
|
|
|
|
It's also possible to build OpenSSL library dynamically so that you can update OpenSSL without rebuilding SoftEther.
|
|
|
|
To achieve that, you need to remove `openssl` from `vcpkg.json` and install OpenSSL directly.
|
|
|
|
|
|
|
|
Installing from a package manager such as [Scoop](https://scoop.sh/) would make the subsequent updates easily.
|
|
|
|
However, you should avoid using [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/)
|
|
|
|
for the time being because due to a bug it cannot detect the correct version of OpenSSL, causing endless updates.
|
|
|
|
|
|
|
|
If you install from Scoop, make sure to add the OpenSSL folder to the system's `PATH`.
|
|
|
|
As Scoop already adds it to the user's `PATH`, just copy the same location into the system environment variable(s).
|
|
|
|
SoftEther Client Service starts from the System account and will fail to start if OpenSSL is not in the global `PATH`.
|
|
|
|
|
|
|
|
Building should be straightforward. You can verify that the binaries are now linked against the locally installed OpenSSL
|
|
|
|
with tools like `ldd` (available from Git Bash):
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ ldd /c/Program\ Files/SoftEther\ VPN\ Client\ Developer\ Edition/vpnclient.exe
|
|
|
|
...
|
|
|
|
libcrypto-3-x64.dll => /c/Scoop/apps/openssl/current/bin/libcrypto-3-x64.dll (0x7ff8beb70000)
|
|
|
|
libssl-3-x64.dll => /c/Scoop/apps/openssl/current/bin/libssl-3-x64.dll (0x7ff8beaa0000)
|
|
|
|
...
|
|
|
|
```
|
|
|
|
|
2022-05-18 07:53:27 +03:00
|
|
|
1. 32-bit Windows
|
|
|
|
|
|
|
|
You don't need 32-bit Windows to build 32-bit executables. However, if 32-bit Windows is what you only have, things become a little complicated.
|
|
|
|
|
|
|
|
Visual Studio 2019 is the last version that works on 32-bit Windows. It does the job but its bundled CMake and Ninja are 64-bit versions.
|
|
|
|
|
|
|
|
After the installation of VS 2019, you need to download 32-bit CMake and Ninja and replace those that come with VS in:
|
|
|
|
|
|
|
|
```
|
|
|
|
C:\Program Files\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake
|
|
|
|
```
|
|
|
|
|
|
|
|
Currently CMake has an official x86 installer but Ninja does not. You may need to download from a 3rd party or build from source.
|