Compiling under VS2022: Difference between revisions
(Revised description and mentioned this tutorial can be used with VS2015-VS2019 as well) |
(This page is a lot more usable now) |
||
Line 16: | Line 16: | ||
== I'm starting from scratch! == | == I'm starting from scratch! == | ||
If you don't want to deal with setting up the project, or if you have problems compiling the source code because of certain errors, you can clone [https://github.com/ozxybox/source-mp13-vs2022 this repo] since it's based on the official {{Src13|4}} repo | If you don't want to deal with setting up the project, or if you have problems compiling the source code because of certain errors, you can clone [https://github.com/ozxybox/source-mp13-vs2022 this repo] since it's based on the official {{Src13|4}} repo with minimal changes to allow it to run without problems. Please disregard any "compile process successful but file not found" warning as it is meaningless. | ||
== | == Using {{mapbase|4}} == | ||
Mapbase can be compiled with any version of Visual Studio, from 2013-2022. Toggle support by editing {{path|\vpc_scripts\newer_vs_toolsets|vpc}} | |||
==Editing Existing Code == | |||
If you need to edit an existing codebase (Such as the version of {{src13|3.1}} Valve provides on GitHub), you will need to edit or replace certain files. | |||
=== Running VPC === | |||
If you don't have Visual Studio 2013 on your computer, [[VPC]] will fail to run, as it can't find registry keys specific to older versions. | |||
Once | You can: | ||
* Grab an edit of VPC that works for modern versions of Visual Studio, [https://github.com/SCell555/Source-PlusPlus/blob/HEAD/src/devtools/bin/vpc.exe such as this one] | |||
* Add the registry keys VPC is looking for. See [[Source_SDK_2013#Unable_to_find_RegKey_for_.vcproj_files_in_solutions_.28Windows.29| here]]. | |||
Once ran, the generated VPC scripts will need to be modified to support the newer toolsets. | |||
{{Todo|Explain changes from here https://github.com/ozxybox/source-mp13-vs2022/tree/master/mp/src/vpc_scripts}} | {{Todo|Explain changes from here https://github.com/ozxybox/source-mp13-vs2022/tree/master/mp/src/vpc_scripts}} | ||
== Fixing {{code|particles.lib}} == | === Fixing {{code|particles.lib}} === | ||
Once everything's compiling, you'll hit a snag with '''particles.lib'''. It defines the symbol _hypot, and | Once everything's compiling, you'll hit a snag with '''particles.lib'''. It defines the symbol _hypot, and when using VS 2022, that symbol is already being used. | ||
The best solution for this is to go grab an edit of '''particles.lib''' that's been fixed. | The best solution for this is to go grab an edit of '''particles.lib''' that's been fixed. | ||
Line 41: | Line 46: | ||
[https://github.com/ozxybox/source-mp13-vs2022/blob/7be91d3ddc4388ec43a60195f6d959682a256cbe/mp/src/game/client/client_base.vpc#L74| Example] | [https://github.com/ozxybox/source-mp13-vs2022/blob/7be91d3ddc4388ec43a60195f6d959682a256cbe/mp/src/game/client/client_base.vpc#L74| Example] | ||
== Fixing {{code|memoverride.cpp}} == | === Fixing {{code|memoverride.cpp}} === | ||
The main file that needs to be fixed for Source to work under VS 2022 is {{file|memoverride|cpp}}. | The main file that needs to be fixed for Source to work under VS 2022 is {{file|memoverride|cpp}}. Replace it with [https://github.com/ozxybox/source-mp13-vs2022/blob/master/mp/src/public/tier0/memoverride.cpp this one]. | ||
{{Todo|Explain everything from here https://github.com/ozxybox/source-mp13-vs2022/blob/master/mp/src/public/tier0/memoverride.cpp}} | {{Todo|Explain everything from here https://github.com/ozxybox/source-mp13-vs2022/blob/master/mp/src/public/tier0/memoverride.cpp}} |
Revision as of 08:22, 4 September 2024



With Visual Studio 2013 becoming older and harder to obtain, there is a lot of pressure to use a newer version of Visual Studio when working with Source SDK 2013. However, as the codebase does not support the changes brought about by later toolset versions, some work is required to get it functioning.
This article is primarily based on these two GitHub repos:
If necessary, these changes can also be made to work with VS2015—VS2019 by changing $PlatformToolset
in source_win32_base.vpc
.
I'm starting from scratch!
If you don't want to deal with setting up the project, or if you have problems compiling the source code because of certain errors, you can clone this repo since it's based on the official Source 2013 repo with minimal changes to allow it to run without problems. Please disregard any "compile process successful but file not found" warning as it is meaningless.
Using
Mapbase
Mapbase can be compiled with any version of Visual Studio, from 2013-2022. Toggle support by editing \vpc_scripts\newer_vs_toolsets.vpc
Editing Existing Code
If you need to edit an existing codebase (Such as the version of Source 2013 Valve provides on GitHub), you will need to edit or replace certain files.
Running VPC
If you don't have Visual Studio 2013 on your computer, VPC will fail to run, as it can't find registry keys specific to older versions.
You can:
- Grab an edit of VPC that works for modern versions of Visual Studio, such as this one
- Add the registry keys VPC is looking for. See here.
Once ran, the generated VPC scripts will need to be modified to support the newer toolsets.
Fixing particles.lib
Once everything's compiling, you'll hit a snag with particles.lib. It defines the symbol _hypot, and when using VS 2022, that symbol is already being used.
The best solution for this is to go grab an edit of particles.lib that's been fixed. (Like this one)
If you're not a fan of that idea, one alternative could be telling VPC to allow multiple symbols to exist for the client project. This is not a great practice though! Example
Fixing memoverride.cpp
The main file that needs to be fixed for Source to work under VS 2022 is memoverride.cpp
. Replace it with this one.
In Recap
Do what this page asks you to do while ignoring any reference to Visual Studio 2013, fix the Registry keys problem with the fix from the same page, download particles.lib to <mp or sp>\src\lib\public
from this, and finally, replace memoverride.cpp
located at <mp or sp>\src\public\tier0
with this one. Have fun making Source mods with updated software ;)