151
edits
(→Installing Libraries: Mention SystemPropertiesAdvanced.exe shortcut, for better Windows versions/localisations portability) |
|||
(18 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
== | == Installing the needed software and libraries == | ||
In this page, we guide you through the steps to compile ScummVM with Visual Studio. | |||
== | === Visual Studio === | ||
Visual Studio | You can get the free Community version of Visual Studio [https://visualstudio.microsoft.com/vs/ here]. | ||
Professional Visual Studio versions are working fine too. | |||
When installing Visual Studio 2017 or later, make sure to select the "Desktop Development with C++" workload. | |||
Building ScummVM with Visual Studio versions older than 2015 is not supported anymore. | |||
=== Needed Libraries === | === Needed Libraries === | ||
ScummVM relies on third-party libraries | ScummVM relies on third-party libraries for common features, such as MP3 decoding. Some of these libraries, like SDL, are required, whereas others like libtheora are optional. | ||
We supply a set of prebuilt libraries for Visual Studio 2015 and later, which can be found [https://downloads.scummvm.org/frs/build/scummvm_libs_2015.zip here]. | |||
These libraries have been built on Windows 8.1 using the Visual Studio 2015 Community Edition. | |||
If you want to build libraries for use with Visual Studio yourself, please refer to the [[Compiling_ScummVM/Visual_Studio/Compiling_Libraries|instructions for compiling the libraries yourself]]. | If you want to build libraries for use with Visual Studio yourself, please refer to the [[Compiling_ScummVM/Visual_Studio/Compiling_Libraries|instructions for compiling the libraries yourself]]. | ||
=== Installing Libraries === | |||
The easiest way to make Visual Studio find the supplied libraries is by using the environment variable <code>SCUMMVM_LIBS</code>. You can set it by performing the following steps: | |||
* Unzip the library zip to a directory of your choice, for example <code>C:\Users\YourUsername\Documents\scummvm_libs_2015</code>. | |||
* Go to Start Menu > Control Panel > System > Advanced Settings > Environment Variables (or <code>Win</code>+<code>R</code> and then <code>SystemPropertiesAdvanced.exe</code>) and add a new variable <code>SCUMMVM_LIBS</code> with a value of the path you extracted the zip in. It is important that you do point the variable to the folder containing the <code>bin\</code>, <code>include\</code>, and <code>lib\</code> directories. | |||
== Preparing the Project Files == | == Preparing the Project Files == | ||
Line 28: | Line 29: | ||
=== Building create_project === | === Building create_project === | ||
ScummVM uses a configure/Make based build system. We have a tool to generate Visual Studio project files from this build system. The first | ScummVM uses a configure/Make based build system. We have a tool to generate Visual Studio project files from this build system. The first step you need to take is building this tool called <code>create_project.exe</code>. | ||
First, open the solution file <code>devtools\create_project\msvc\create_project.sln</code> (either from the File Explorer or from the File > Open project/solution menu). Then simply build the solution, with Build > Build solution. If this doesn't work, make sure that the Visual Studio C++ tools have been properly set up, as [[#Visual_Studio|explained above]]. | |||
The project file should automatically assure that the resulting <code>create_project.exe</code> is copied to <code>dists\msvc\</code>. | |||
=== Generating the Project Files === | === Generating the Project Files === | ||
Simply run the batch script | Simply run the batch script <code>dists/msvc/create_msvc.bat</code>. It will guide you through configuring ScummVM. | ||
'''IMPORTANT''': You will have to re-generate the project files whenever new source files have been added to or removed from the configure/Make based build system. When you add new files to ScummVM, you will ''have'' to add them to the respective | '''IMPORTANT''': You will have to re-generate the project files whenever new source files have been added to or removed from the configure/Make based build system. When you add new files to ScummVM, you will ''have'' to add them to the respective <code>module.mk</code> file to assure ScummVM still builds fine with the configure/Make based build system. | ||
== Compiling ScummVM == | == Compiling ScummVM == | ||
Line 42: | Line 45: | ||
If you followed all the steps, you are now ready to compile ScummVM with Visual Studio. Congratulations! | If you followed all the steps, you are now ready to compile ScummVM with Visual Studio. Congratulations! | ||
Simply open the generated solution file in | Simply open the generated solution file in <code>dists\msvc\scummvm.sln</code>. Now you can ask it to build the desired configuration. By default it will build a debug configuration which is ideal to hack on ScummVM. | ||
'''IMPORTANT''': If you get errors about missing DLLs, you'll need to copy them to a location Windows picks up to run the resulting binary. The easiest way to do this is to place the DLL files in the directory where <code>scummvm.exe</code> is. There are multiple folders to choose from, depending on your build configuration. For example, if you build a Win32 Debug configuration, you will need to copy them from <code>SCUMMVM_LIBS\lib\x86\Debug\</code> to <code>dists\msvc\Debugx86\</code>. | |||
NOTE: Several people have had errors about structure packing under Visual Studio 2019. In such cases, you need to update [https://github.com/libsdl-org/SDL/releases SDL2] with the latest version. | |||
== Compiling | == Compiling with Console/Text Output == | ||
If you | By default ScummVM is compiled as a Windows subsystem application with no console output. If you need the console, you can do one of the following: | ||
* In the Project Options for the | * In the <code>create_project</code> command, add <code>--enable-text-console</code>. | ||
* In the Project Options for the ScummVM project, go to the Linker | System | SubSystem line, and change the <code>/SUBSYSTEM:WINDOWS</code> option to <code>/SUBSYSTEM:CONSOLE</code> | |||
edits