Compiling Zandronum with Visual Studio: Difference between revisions
DrinkyBird (talk | contribs) (Add VS 2015 download instructions) |
DrinkyBird (talk | contribs) (Add instructions for VS 2022) Tag: Source edit |
||
Line 3: | Line 3: | ||
You will require Visual Studio to compile Zandronum. Officially, Zandronum is built with Visual Studio 2015, but people have had success building it with newer versions. | You will require Visual Studio to compile Zandronum. Officially, Zandronum is built with Visual Studio 2015, but people have had success building it with newer versions. | ||
=== Download Visual Studio | === Download Visual Studio 2022 === | ||
Zandronum requires the Visual Studio 2015 toolchain to be built. Microsoft no longer offers 2015 for (easy) download, but forunately, modern versions of Visual Studio can use older toochains. | |||
<ol> | |||
<li>Download [https://visualstudio.microsoft.com/downloads/ Visual Studio 2022 Community].</li> | |||
<li>In the installer, select the '''Desktop development with C++''' module. | |||
[[File:Vs2022 cppdevel.png|none]]</li> | |||
<li>On the right-hand pane, under the '''Desktop development with C++''' section, select the '''MSVC v140 - VS 2015 C++ build tools (v14.00)''' component. | |||
[[File:Vs2022 v140.png|none]]</li> | |||
<li>Proceed with the installation.</li> | |||
</ol> | |||
== CMake == | == CMake == | ||
Line 16: | Line 24: | ||
http://www.nasm.us/ | http://www.nasm.us/ | ||
For | For Visual Studio 2015 or newer, the latest nasm version is required. Currently, this is [http://www.nasm.us/pub/nasm/releasebuilds/2.11.08/nasm-2.11.08.zip Version 2.11.08]. | ||
== FMOD Ex == | == FMOD Ex == | ||
Line 96: | Line 104: | ||
Only available with the keyboard drivers from [http://www.logitech.com/ Logitech] hardware. | Only available with the keyboard drivers from [http://www.logitech.com/ Logitech] hardware. | ||
= Build using Visual Studio | = Build using Visual Studio = | ||
== Generate Projects == | == Generate Projects == | ||
Open CMake (<code>cmake-gui</code>) and set the ''Where is the source code'' textbox to where you downloaded the Zandronum source code. Set ''Where to build the binaries'' to wherever you want the project files to be generated. | Open CMake (<code>cmake-gui</code>) and set the ''Where is the source code'' textbox to where you downloaded the Zandronum source code. Set ''Where to build the binaries'' to wherever you want the project files to be generated. | ||
Click ''Configure'' and | Click ''Configure'' and a dialog will pop up. | ||
[[File:Vs2022 cmake.png|thumb]] | |||
* Set the generator to '''Visual Studio 17 2022'''. | |||
* Set the platform to '''Win32''' for a 32-bit build or '''x64''' for a 64-bit build. | |||
* Set the toolset to '''v140_xp'''. | |||
If it says there was an error, ignore it as we will solve it now. | If it says there was an error, ignore it as we will solve it now. | ||
Line 133: | Line 147: | ||
== error LNK1281: Unable to generate SAFESEH image == | == error LNK1281: Unable to generate SAFESEH image == | ||
When using | When using Visual Studio 2015 or newer, update to the latest nasm version. | ||
[[Image:PSVSBuild_Safesehno.png|thumb|right]] | [[Image:PSVSBuild_Safesehno.png|thumb|right]] |
Revision as of 23:39, 21 May 2023
Prerequisites
Visual Studio
You will require Visual Studio to compile Zandronum. Officially, Zandronum is built with Visual Studio 2015, but people have had success building it with newer versions.
Download Visual Studio 2022
Zandronum requires the Visual Studio 2015 toolchain to be built. Microsoft no longer offers 2015 for (easy) download, but forunately, modern versions of Visual Studio can use older toochains.
- Download Visual Studio 2022 Community.
- In the installer, select the Desktop development with C++ module.
- On the right-hand pane, under the Desktop development with C++ section, select the MSVC v140 - VS 2015 C++ build tools (v14.00) component.
- Proceed with the installation.
CMake
Download the latest version of CMake from cmake.org. We will use this to generate the projects.
NASM
For Visual Studio 2015 or newer, the latest nasm version is required. Currently, this is Version 2.11.08.
FMOD Ex
The old FMOD Ex links were removed from the FMOD website, so ZDoom has archived them at https://zdoom.org/files/fmod/.
For Zandronum 3.1, version 4.44.64 is recommended (the final release of FMOD Ex.)
- Quick Windows link: https://zdoom.org/files/fmod/fmodapi44464win-installer.exe
For Zandronum 3.0, version 4.24.x is required, version 4.24.16 recommended
- Quick Windows link: https://zdoom.org/files/fmod/fmodapi42416win32-installer.exe
TortoiseHg
https://tortoisehg.bitbucket.io/download/index.html
Used for downloading the soruce and fetching the Mercurial revision ID when compiling the build.
DirectX SDK
https://wiki.zandronum.com/files/DXSDK_Feb10.exe
Zandronum depends on DirectDraw for software rendering on Windows, so the February 2010 SDK release is required.
OpenGL Header Files
- OpenGL 1.2 and above compatibility profile and extension interfaces: glext.h
- WGL Extension interfaces: wglext.h
Note that you may need to put the glext.h and wglext.h into your C:\Program Files\Microsoft SDKs\Windows\v6.1\includes\gl folder (create it if it doesn't exist). To resolve compiling issues under 'gl_clock.cpp' with _interlockedbittestandset and _interlockedbittestandreset, refer here
OpenSSL
OpenSSL is necessary in order for Zandronum to communicate securely with the account authentication server.
Precompiled binaries for Windows are available from Shining Light Productions. You will want the latest non-light edition of OpenSSL 1.0.2 - the description of the correct package mentions "software developers". You should have a choice between 32-bit and 64-bit versions - you will most likely need the 32-bit version unless you are using CMake and select the 64-bit compiler when generating your build files.
Building OpenSSL
If the above packages do not work, you can compile OpenSSL yourself. This is a lengthy and complicated process, so be sure that the existing binaries of OpenSSL definitely don't work before you try this.
- Perl is necessary to build OpenSSL. If you don't have Perl installed already, install ActiveState Perl.
- NASM executable directory must be in the host system's
PATH
environment variable.
- Download and decompress the latest source of OpenSSL. In the source directory call
perl Configure VC-WIN32 --prefix=c:\Tools\Util\openssl ms\do_nasm
- Replace
c:\Tools\Util\openssl
with the path where you want OpenSSL to be installed. Then, in the same directory, but within a VC++ command prompt, call
nmake -f ms\nt.mak nmake -f ms\nt.mak test nmake -f ms\nt.mak install
- If an error message 'WinSock32.h does not exist!' is displayed (or the like), you'll need to add these two lines to your console's temporary environment:
SET INCLUDE=%INCLUDE%;c:\Program Files\Microsoft SDKs\Windows\v7.0\Include\ SET LIB=%LIB%;c:\Program Files\Microsoft SDKs\Windows\v7.0\Lib\
Python
https://www.python.org/downloads/
Version 3.5 or newer is required.
Zandronum Source Code
And of course, you will require the Zandronum source code to build Zandronum! You must clone the source with Mercurial to create a build that is compatible with servers.
In the directory where you want to download the source, right-click on empty space, and go to TortoiseHg → Clone
.
Enter https://hg.osdn.net/view/zandronum/zandronum-stable
as the source.
If you want to clone a specific revision, expand Options, check Clone to revision, and enter the revision you want to clone.
For example, if you wanted to download Zandronum 2.1.2's source, you'd enter ZA_2.1.2
.
Optional prerequisites
Logitech G-Series LCD SDK
Only available with the keyboard drivers from Logitech hardware.
Build using Visual Studio
Generate Projects
Open CMake (cmake-gui
) and set the Where is the source code textbox to where you downloaded the Zandronum source code. Set Where to build the binaries to wherever you want the project files to be generated.
Click Configure and a dialog will pop up.
- Set the generator to Visual Studio 17 2022.
- Set the platform to Win32 for a 32-bit build or x64 for a 64-bit build.
- Set the toolset to v140_xp.
If it says there was an error, ignore it as we will solve it now. Make sure you set up all prerequisites correctly, and point CMake to the location of any missing paths.
Then click Configure again, and point CMake to missing paths.
LIB_EAY
and SSL_EAY
are OpenSSL libraries.
YASM is unneeded as we already have NASM.
Click Configure again and your CMake should look like the image on the left. Now click Generate. This will generate the project files.
Build Zandronum
Now go to where you generated the project files and open Zandronum.sln
.
At the top, there will be a Build menu. Click it and click Build Solution.
Now wait for Zandronum to build. It is a large project and will take time to build.
If you encounter an error, see Troubleshooting below.
Once successfully compiled, zandronum.exe
will be in the Debug
folder in the project directory.
zandronum.pk3
will be in the project directory.
Troubleshooting
'Cr0NpxState' : is not a member of _FLOATING_SAVE_AREA
Just comment out the line that calls this, according to zdoom devs, it is only there to give info and doesn't actually affect the project.
error LNK1281: Unable to generate SAFESEH image
When using Visual Studio 2015 or newer, update to the latest nasm version.
Set `/SAFESEH:NO` by going into the properties of the `zdoom` project and navigating to Configuration Properties → Linker → Advanced
and changing Image Has Safe Exception Handlers
to No (/SAFESEH:NO)
.