Compile ZDoom on Windows: Difference between revisions
ZDoom is now using C++11/14 so VS2015 is now required for the latest development branch which this guide should more or less assume people want to compile. |
|||
| Line 1: | Line 1: | ||
{{TOCright}} |
{{TOCright}} |
||
To build ZDoom on Windows, you have a few options: |
To build ZDoom on Windows, you have a few options: |
||
* Use Visual Studio Community 2015 |
|||
* Use Visual C++ 2005 ([http://msdn2.microsoft.com/en-us/library/60k1461a(VS.80).aspx Visual C++ General Information]) |
|||
* Use Visual Studio Express 2013 for Windows Desktop |
|||
* Use MinGW |
* Use MinGW |
||
Although Visual C++ 2008-2013 are supported for building, release versions of ZDoom are built with Visual C++ 2005. GZDoom releases are built with Visual C++ 2013. |
|||
If you only have Windows 98 or ME, then you ''must'' use MinGW. |
|||
{{clear}} |
{{clear}} |
||
== Required downloads for both Visual C++ and MinGW == |
== Required downloads for both Visual C++ and MinGW == |
||
| Line 13: | Line 9: | ||
|- |
|- |
||
| [[File:Graficon.gif|link=]] |
| [[File:Graficon.gif|link=]] |
||
| '''Note:''' To solve compilation problems of gl_clock.cpp with {{c|_interlockedbittestandset}} and {{c|_interlockedbittestandreset}}, see {{DRDForum|p=43104|this thread}}. To compile GZDoom you must use CMake with a compatible compiler, it is recommended to use Visual C++ |
| '''Note:''' To solve compilation problems of gl_clock.cpp with {{c|_interlockedbittestandset}} and {{c|_interlockedbittestandreset}}, see {{DRDForum|p=43104|this thread}}. To compile GZDoom you must use CMake with a compatible compiler, it is recommended to use Visual C++ 2015. The prebuilt VC++ 2005 solution is no longer provided for compiling GZDoom! |
||
|} |
|} |
||
* [http://nasm.sourceforge.net/ NASM] Version 2.0+ required |
* [http://nasm.sourceforge.net/ NASM] Version 2.0+ required |
||
** [http://yasm.tortall.net/ YASM] is required instead if building for Win64. |
** [http://yasm.tortall.net/ YASM] is required instead if building for Win64. |
||
| ⚫ | |||
* FMOD Ex [http://www.fmod.org/download/fmodex/api/Win/fmodapi42631win32-installer.exe 32-bit] or [http://www.fmod.org/download/fmodex/api/Win/fmodapi42631win64-installer.exe 64-bit] |
|||
* [http://www.fmod.org/download/fmodex/api/Win/fmodapi44461win-installer.exe FMOD Ex] |
|||
* The ZDoom source code, either from an <span class="plainlinks">[http://zdoom.org/download.html official release]</span> or from the [[Git repository]]. |
* The ZDoom source code, either from an <span class="plainlinks">[http://zdoom.org/download.html official release]</span> or from the [[Git repository]]. |
||
{{clear}} |
{{clear}} |
||
| Line 29: | Line 26: | ||
== Visual C++ |
== Visual C++ == |
||
The easiest way to compile ZDoom on Windows is to use CMake |
The easiest way to compile ZDoom on Windows is to use CMake to generate Visual Studio projects. |
||
{{note|Visual Studio 2015 is only required for the development versions of ZDoom. The latest stable release and maint branch can be compiled with 2005-2013.}} |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
* [http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx Windows Software Development Kit (SDK) for Windows 8.1] |
* [http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx Windows Software Development Kit (SDK) for Windows 8.1] |
||
* [http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe DirectX Software Development Kit (February 2010)] |
* [http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe DirectX Software Development Kit (February 2010)] |
||
| ⚫ | |||
Download and install each of the above. |
Download and install each of the above. |
||
| Line 67: | Line 65: | ||
=== Compiling === |
=== Compiling === |
||
{{note|For compiling with VS |
{{note|For compiling with VS 2015 builds compatible with Windows XP, you need to run the following command line first (or after deleting the CMake cache), replacing <path> as appropriate: |
||
cmake <path> -G "Visual Studio |
cmake <path> -G "Visual Studio 14 2015" -T "v140_xp"}} |
||
1. Run cmake-gui.exe |
1. Run cmake-gui.exe |
||
| Line 74: | Line 72: | ||
* In "Where to build the binaries:" create a build directory in the zdoom folder above |
* In "Where to build the binaries:" create a build directory in the zdoom folder above |
||
* Click configure |
* Click configure |
||
* Select "Visual Studio |
* Select "Visual Studio 14 2015" or "Visual Studio 14 2015 Win64" based on the FMOD version you installed. |
||
* Click Finish |
* Click Finish |
||
| Line 112: | Line 110: | ||
10. Now zdoom.exe can be opened from the zdoom/Debug folder, or from within Visual Studio using Debug -> Start Debugging (F5) when the solution is selected. Assuming it found your copy of installed Doom (which if you've installed The Ultimate Doom from Steam, it will automatically), the game should launch after a few moments and go to the main menu. |
10. Now zdoom.exe can be opened from the zdoom/Debug folder, or from within Visual Studio using Debug -> Start Debugging (F5) when the solution is selected. Assuming it found your copy of installed Doom (which if you've installed The Ultimate Doom from Steam, it will automatically), the game should launch after a few moments and go to the main menu. |
||
== Visual C++ 2005 (Alternative) == |
|||
'''Note: If you want to build with OpenAL support you MUST use CMake to set up the project. The prebuilit VC 2005 solution is configured to have no OpenAL support!''' |
|||
Although ZDoom comes with a prebuilt solution for Visual C++ 2005 it is strongly recommended to use CMake to generate the project as it should be easier to configure and it creates far less pollution of the project directory with temporary compiler data. |
|||
Remember, this is directed to someone who never used Visual C++ 2005 before. |
|||
=== Downloads for Visual C++ 2005 === |
|||
First off, you must download some utilities to get started. These utilities are all free. |
|||
* [http://go.microsoft.com/fwlink/?linkid=57034 Visual C++ 2005 Express Edition] -- This is the ISO download for Visual C++ Express Edition, and offers many of the same features as the paid version. |
|||
* [http://msdn.microsoft.com/en-us/windows/bb980924 Windows Platform SDK] -- The Express Edition of Visual C++ does not come with support for building native Windows applications out-of-the-box. As such, you must also download and install the [http://download.microsoft.com/download/2/3/f/23f86204-39ee-4cd7-9a51-db19c9a8f8c4/Setup.exe Platform SDK] before you can build ZDoom with it. |
|||
* [http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe DirectX SDK] -- You will need the Feb 2010 Microsoft DirectX SDK package as well. Starting with the June 2010 package, DirectDraw is no longer supported, preventing compilation of ZDoom. |
|||
=== After the downloads === |
|||
After you've downloaded everything, you must install all of them. You must remember the directories you've installed NASM and the Subversion tools into. CMake, DirectX and FMOD Ex install by default into the Program Files directory. |
|||
glew must be extracted to your general development folder where you placed the zdoom source folder. |
|||
=== Set up directories === |
|||
When you're done installing, open Visual C++ 2005. (Start -> All Programs -> Visual C++ 2005 Express Edition -> Microsoft Visual C++ 2005 Express Edition) |
|||
When opened, go to Tools -> Options in the menu bar, you should get a dialog box that says "Options" in the title bar. Click the plus sign that's next to "Projects and Solutions" and click "VC++ Directories". |
|||
If the drop-down box under the label that says "Show Directories For" says "Executable Files", you have to set up NASM here (if not, select it now). Click the button that has a picture of a folder on it and select the new line it creates, and press the button that says "..." on it. In the Open Folder Dialog, select the directory where you unzipped NASM (such as, perhaps, C:\nasm-2.00), and another entry for the Subversion tools (in case you installed them). Make sure it points to the location of the executables (i.e. 'nasm.exe', 'svnversion.exe'), and not the root directory (unless the executables are there). |
|||
Then select drop-down box under the label that says "Show Directories For" and select "Include Files". Check to see that "$(DXSDK_DIR)Include" and "C:\Program Files\FMOD SoundSystem\FMOD Programmers API Win32\api\inc" are there. If they aren't, add them. Next, go to "Library Files" in the drop-down box and make two more new lines. Enter "$(DXSDK_DIR)Lib\x86" for one and "C:\Program Files\FMOD SoundSystem\FMOD Programmers API Win32\api\lib" for the other. |
|||
If you installed the FMOD SDK somewhere else, change "C:\Program Files\FMOD SoundSystem\FMOD Programmers API Win32" for the include and library files lists to the appropriate directory. %DXSDK_DIR% is an environment variable that is created when you install the DirectX SDK that points to the directory where you installed it. By using this variable (you must type it in by hand; you cannot use the open folder dialog), you can easily upgrade your DirectX SDK at anytime without having to change these directories again. |
|||
Select "OK" on the dialog box, then try to compile ZDoom ('''Build''' -> '''Build Solution''' or F7). If successful, it should compile error-less. |
|||
=== Troubleshooting === |
|||
Note: If it doesn't build correctly, try adding the Windows SDK library and include files to the directories as well. |
|||
Also, if your sound/music does not work, try putting fmodex.dll in your ZDoom directory |
|||
== MinGW == |
== MinGW == |
||
| Line 160: | Line 120: | ||
* [http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=11550 The GCC win32api files] |
* [http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=11550 The GCC win32api files] |
||
* [https://web.archive.org/web/20150616002909/http://alleg.sourceforge.net/files/dx80_mgw.zip Minimal DirectX 8 headers] from [https://web.archive.org/web/20150812045125/http://alleg.sourceforge.net/wip.html Allegro] |
* [https://web.archive.org/web/20150616002909/http://alleg.sourceforge.net/files/dx80_mgw.zip Minimal DirectX 8 headers] from [https://web.archive.org/web/20150812045125/http://alleg.sourceforge.net/wip.html Allegro] |
||
* [http://www.cmake.org/ CMake] |
|||
=== Installing everything === |
=== Installing everything === |
||
Revision as of 04:12, 27 February 2016
To build ZDoom on Windows, you have a few options:
- Use Visual Studio Community 2015
- Use MinGW
Required downloads for both Visual C++ and MinGW
| Note: To solve compilation problems of gl_clock.cpp with _interlockedbittestandset and _interlockedbittestandreset, see this thread. To compile GZDoom you must use CMake with a compatible compiler, it is recommended to use Visual C++ 2015. The prebuilt VC++ 2005 solution is no longer provided for compiling GZDoom! |
- NASM Version 2.0+ required
- YASM is required instead if building for Win64.
- CMake Version 2.8.7 or later
- FMOD Ex
- The ZDoom source code, either from an official release or from the Git repository.
Optional downloads for both Visual C++ and MinGW
Currently OpenAL is only supported when building with CMake. You only need these if you want to build ZDoom with OpenAL support. If you just want to use FMod Ex, downloading these is not necessary. In this case you can just check 'NO_OPENAL' in CMake and ignore these dependencies and the instructions to set them up.
Visual C++
The easiest way to compile ZDoom on Windows is to use CMake to generate Visual Studio projects.
| Note: Visual Studio 2015 is only required for the development versions of ZDoom. The latest stable release and maint branch can be compiled with 2005-2013. |
Required Downloads for Visual C++ 2015
- Visual Studio Community 2015
- Windows Software Development Kit (SDK) for Windows 8.1
- DirectX Software Development Kit (February 2010)
Download and install each of the above.
Preparing library
Note: You only need to do this step if you want to build with OpenAL support!
libmpg123 doesn't come with a library file, so you will need to build one.
1. Open the developer command prompt
- Open the start menu and browse to the "Visual Studio" folder.
- Open the "Visual Studio Tools" folder.
- Run the "Visual Studio command prompt" or "developer command prompt" depending on your Visual Studio installation.
2. Browse to libmpg123 directory
- Manually type the directory where you installed mpg123 into the command prompt. For example:
cd C:\Program Files (x86)\mpg123
3. Rename export definition file
- Due to an error in one of the file names included with mpg123, ZDoom will fail to load on startup. To fix this, rename libmpg123-0.dll.def to libmpg123-0.def
- You can do this in the command prompt or in windows explorer. For the former:
rename libmpg123-0.dll.def libmpg123-0.def
4. Build library
- 32-bit
lib /DEF:libmpg123-0.def /OUT:libmpg123-0.lib
- 64-bit
lib /MACHINE:X64 /DEF:libmpg123-0.def /OUT:libmpg123-0.lib
If done correctly, libmpg123-0.lib and libmpg123-0.exp should have been created in the directory.
Compiling
Note: For compiling with VS 2015 builds compatible with Windows XP, you need to run the following command line first (or after deleting the CMake cache), replacing <path> as appropriate:
cmake <path> -G "Visual Studio 14 2015" -T "v140_xp" |
1. Run cmake-gui.exe
- In "Where is the source code:" browse to the zdoom folder from above
- In "Where to build the binaries:" create a build directory in the zdoom folder above
- Click configure
- Select "Visual Studio 14 2015" or "Visual Studio 14 2015 Win64" based on the FMOD version you installed.
- Click Finish
2. After cmake configure finishes, it will likely fail because it couldn't find some things:
- set NASM_PATH browsing to folder where you installed nasm earlier and select 'nasm.exe' (e.g. C:\Program Files (x86)\nasm\nasm.exe)
- set FMOD_INCLUDE_DIR to 'api/inc' folder inside folder where you installed fmod earlier (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\inc)
- set FMOD_LIBRARY to 'api/lib/fmodex_vc.lib' inside fmod folder (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\lib\fmodex_vc.lib). If you are compiling for 64-bit systems set FMOD_LIBRARY to fmodex64_vc.lib instead.
3. Add the OpenAL requirements. The following is an example:
OPENAL_INCLUDE_DIR C:/Program Files (x86)/OpenAL 1.1 SDK/include OPENAL_LIBRARY C:/Program Files (x86)/OpenAL 1.1 SDK/libs/Win64/OpenAL32.lib SNDFILE_INCLUDE_DIR C:/Program Files/Mega-Nerd/libsndfile/include SNDFILE_LIBRARY C:/Program Files/Mega-Nerd/libsndfile/lib/libsndfile-1.lib MPG123_INCLUDE_DIR C:/Program Files (x86)/mpg123 MPG123_LIBRARIES C:/Program Files (x86)/mpg123/libmpg123-0.lib
Be sure to use the right library from the OpenAL SDK.
4. Click 'Configure'
- If this fails with the message 'Could not find DirectX 9 libraries', you likely have an older DirectX SDK or installed the SDK into a non-standard location. To workaround this, you'll likely have to set the following cmake variables manually in the cmake GUI dialog (following is only an example):
D3D_INCLUDE_DIR C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include DX_dinput8_LIBRARY C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dinput8.lib DX_dxguid_LIBRARY C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dxguid.lib
5. Click 'Generate'. After this, cmake should have successfully created 'zdoom.sln', and 'ALL_BUILD.vcxproj.user' files in the directory given for "Where to build the binaries:" (look at timestamp on the files as a sanity check). If not, something's gone wrong.
6. Close cmake
7. Open 'zdoom.sln' file in the build folder created earlier (double-clicking or within VS makes no difference)
8. Click Build -> Build Solution (NOTE: The build will fail if you have the Debug or Release folder inside the zdoom folder open due to one of the post-build steps.)
9. When the build successfully completes (there should be no failures):
- copy the 'fmodex.dll' or 'fmodex64.dll' to the zdoom/Debug folder (e.g. cp C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\fmodex.dll C:\Users\Shawn\Devel\zdoom\Debug)
- copy 'libmpg123-0.dll' to zdoom/Debug folder.
- copy 'libsndfile-1.dll' to zdoom/Debug folder.
10. Now zdoom.exe can be opened from the zdoom/Debug folder, or from within Visual Studio using Debug -> Start Debugging (F5) when the solution is selected. Assuming it found your copy of installed Doom (which if you've installed The Ultimate Doom from Steam, it will automatically), the game should launch after a few moments and go to the main menu.
MinGW
| Warning: The following information is severely outdated and will probably no longer work! Help in updating this section would be appreciated. |
Downloads for MinGW
- The MinGW installer
- TDM's updated build of MinGW with GCC
- The MSYS installer (optional for Windows 2000 or better)
- The GCC win32api files
- Minimal DirectX 8 headers from Allegro
Installing everything
- Run the MinGW installer. When it asks which MinGW package you wish to install, you can choose either "Current" or "Candidate". "Candidate" is recommended because it is newer. When you need to choose the components, you must install at least the "MinGW base tools" and "g++ compiler." If you are not using MSYS, then you must also install "MinGW Make." Then unpack the 4.3.0 alpha binaries on top of your MinGW directory.
- If you downloaded the MSYS installer, run it now.
- Unpack the win32api files on top of your MinGW directory. If you didn't change it when you installed, this will be c:\mingw. The win32api headers are missing some definitions that ZDoom needs. Open mingw\include\commctrl.h and search for PBS_VERTICAL. Add these lines just underneath its definition:
#if (_WIN32_WINNT >= 0x0501) #define PBS_MARQUEE 0x08 #define PBM_SETMARQUEE (WM_USER+10) #endif
- Unzip the DirectX 8 headers on top of your MinGW directory as well.
- You can unzip NASM anywhere you want. To keep everything in one place, a good place to put nasmw.exe and ndisasmw.exe is inside your MinGW directory at c:\mingw\bin.
Preparing for compiling
- Unpack the ZDoom source code wherever you like.
- Run cmake-gui. You can find it in the start menu after installing CMake.
- In the box labeled "Where is the source code:" point it to the directory where you put the source code. (e.g. E:/zdoom/trunk)
- In the box labeled "Where to build the binaries:" create a subdirectory in the path to the source code to contain the build files (e.g. E:/zdoom/trunk/release).
- Click the Configure button at the bottom of the window. If the build directory does not exist, it will ask to create it. Let it.
- You will be asked which generator to use. If you are using Windows 9x, then you must select MSYS Makefiles. If are are using Windows 2000 or later, then you may select either MSYS Makefiles or MinGW Makefiles. Make sure Use default native compilers is selected and click Finish.
- Check the configuration options to make sure they are to your liking. In particular, pay attention to:
- CMAKE_BUILD_TYPE: This defaults to Debug. You probably want to change it to Release.
- DYN_FLUIDSYNTH: If you want support for fluidsynth.dll, check this.
- FMOD_INCLUDE_DIR: Make sure this points to *Where you installed FMOD*/api/inc
- FMOD_LIBRARY: Make sure this points to *Where you installed FMOD*/api/lib/libfmodex.a
- If you made any changes, press Configure again.
- Now press Generate. This will create a Makefile in the build directory.
Compiling with MSYS
If you selected MSYS Makefiles as the generator above, then you must compile using MSYS.
- Run MSYS. The installer should have created a start menu shortcut for you.
- Change to the directory you chose as the build directory. e.g. For the example above
cd e:/zdoom/trunk/release
- Compile the code from inside the build directory.
make
- This will leave a zdoom.exe in the build directory.
Compiling without MSYS
If you selected MinGW Makefiles as the generator above, the process for compiling is as essentially the same as for MSYS Makefiles, except that you use a regular command prompt window instead of MSYS.
- Open a Command Prompt window. You can either use Start -> Run... and type "cmd" or you can find it in Start -> All Programs -> Accessories -> Command Prompt.
- C:\mingw\bin should be in your path. To set this for just the current command prompt, use the command
set PATH=c:\mingw\bin;%PATH%
To make this automatic for all command prompts, you need to edit the Environment Variables on the Advanced tab of the System Properties control panel. - Change to the directory you chose as the build directory. e.g. For the example above
cd e:\zdoom\trunk\release
- Compile the code from inside the build directory
mingw32-make
You can also use a multithreaded make to speed up compilation:mingw32-make -j2
Just replace the 2 with however many threads you want to use. - This will leave a zdoom.exe in the build directory.
