Update Windows building guide
authoralfadur
Thu, 22 Aug 2019 00:17:48 +0200
changeset 1955 637685e52477
parent 1954 1e0fad9c1a4e
child 1956 625477ff2786
Update Windows building guide
BuildingOnWindows.wiki
--- a/BuildingOnWindows.wiki	Mon Aug 12 06:55:55 2019 +0100
+++ b/BuildingOnWindows.wiki	Thu Aug 22 00:17:48 2019 +0200
@@ -1,39 +1,36 @@
-#summary Instructions for building Hedgewars on Windows (Currently outdated)
+#summary Instructions for building Hedgewars on Windows
 #labels Phase-Implementation,Phase-Design,Phase-Support
 
 = Building on Windows =
-== Warning! ==
-These build instructions are very outdated. Try to build under [BuildingOnLinux GNU/Linux], if you can.
-
-If you have managed to get a successful Windows build for a recent Hedgewars build, please get in touch with us (Try the forums, for example: https://hedgewars.org/forum)
 
 == Things to download ==
-First of all, figure out whether your system is a 32-bit or a 64-bit system. You can use the guide at [http://windows.microsoft.com/en-US/windows7/find-out-32-or-64-bit]. You will need it while doing the setup.
+First of all, figure out whether your system is a 32-bit or a 64-bit system. You can use the guide at [http://windows.microsoft.com/en-US/windows7/find-out-32-or-64-bit]. You will only be able to make a 64-bit build on a 64-bit system. 32-bit builds can be made on both 32-bit and 64-bit systems.
 
-Basically, you need to have all dependencies listed at [Dependencies]. The following is a list of where you can obtain the dependencies for Windows:
+== Required Tools ==
+Choose either 32-bit or 64-bit depending on your system and which build you want to make
 
- # CMake - download the *Windows (Win32 Installer)* 
+ # CMake - click either *Windows win64-x64 Installer* or *Windows win32-x86 Installer*
   * Link: https://cmake.org/download/
- # FreePascal - download the *Download as installer* 
-  * Link: http://sourceforge.net/projects/freepascal/
- # Qt SDK - Select the online installer, as it will save you ~1 GB of bandwidth. Nokia will also require you to register an account to download it.
-  * Link: https://www.qt.io/download-qt-installer
+ # Visual Studio - click *Download Visual Studio -> Community 2019* (earlier version starting from Community 2015 Update 3 might also work)
+  * Link: https://visualstudio.microsoft.com/
+ # Vcpkg
+  * Link: https://github.com/Microsoft/vcpkg
+ # FreePascal
+  * 32-bit compiler - click *Windows 32-bit*
+   * Link: https://www.freepascal.org/download.html
+  * 64-bit compiler (necessary for 64-bit builds, bundled with Lazarus IDE) - click *Windows (64 Bits)*
+   * Link: https://www.lazarus-ide.org/index.php?page=downloads
  # Mercurial - pick one (TortoiseHg has a GUI and is more user-friendly)
   * TortoiseHg - Chose one based on your OS version
    * Link: https://tortoisehg.bitbucket.io/
   * Command-line mercurial
    * Link: http://mercurial.selenic.com/downloads/
- #  _Windows building archive_ - it contains everything you need to compile Hedgewars on Windows. 
-   * Link (**!!!LINK IS DEAD!!!**): http://hedgewars.googlecode.com/files/hedgewars-win32-buildscripts.zip
 
 == Setup ==
- # Install CMake, but please *ensure* you select "Add CMake to the system PATH for all users", so you can run CMake directly from command line.
- # Install FreePascal.
- # Install Qt SDK, with the "Custom" option:
-  * Click the *DESELECT ALL* button. We will then check only what we need
-  * Check *Qt SDK/Miscellaneous/MinGW <any version>*
-  * Check *Qt SDK/Development Tools/Desktop Qt/Qt <newest version>/Desktop Qt <newest version> - Mingw*
-  * !!If there are any error message boxes, just press ignore until they are all gone. :)
+ # Install CMake, but please *ensure* you select "Add CMake to the system PATH for all users", so you can run CMake directly from the command line.
+ # Install FreePascal / Lazarus IDE. Add the directory containing fpc.exe to the PATH environment variable (either user or system).
+ # Install VisualStudio, ensuring the *Workloads -> Desktop development with C++* option is selected.
+ # Install Vcpkg by following the instructions under *Quick Start* section on the project page. If you don't have Git, use *Clone or download -> Download ZIP* option and extract the ZIP file. Create VCPKG_ROOT environment variable pointing to the directory you've clones/extracted it to.
  # Install TortoiseHg / Mercurial
  # Restart the computer
  # Download the Hedgewars source:
@@ -43,34 +40,35 @@
    * In the _Source_ textbox enter: https://hg.hedgewars.org/hedgewars/
    * Press clone
   # Using command-line Mercurial
-   * If you have Windows 7 skip the next 3 steps, and instead, SHIFT + Right click in the folder where you want to download the source.
+   * If you have Windows 7 or later, skip the next 3 steps, and instead, SHIFT + Right click in the folder where you want to download the source.
    * Start _Run..._ ( WINDOWS Key + R , or Start -> Run... )
    * Enter:
 {{{
 cmd.exe
-}}} 
+}}}
    * Navigate to where you want to download the source
-   * Type and execute ( The initial clone of the repository will take a while, is about 550MiB or so... ):
+   * Type and execute (The initial clone of the repository will take a while):
 {{{
 hg clone https://hg.hedgewars.org/hedgewars/ trunk
 }}}
- # Navigate to the where you cloned the repository source to.
- # Go to the "tools/build_windows.bat" file, and modify the following:
-  * SET PASCAL=<put the path to the directory that contains fpc's executable (fpc.exe)> (for example: c:\FPC\2.4.4\bin\i386-win32\)
-  * SET SET QTDIR=<path to the QtSDK\Desktop\Qt\<your version>> (for example: c:\QtSDK\Desktop\Qt\4.8.1\)
- # You can now build hedgewars, by running the *tools/build_windows.bat* command.
- # After building it, you can run it from the Desktop - using the *Hedgewars* shortcut.
-
-== Additional setup for Visual Studio 2010 ==
-To build Hedgewars using Visual Studio 2010, you will need to update a few SDL files using this zip file (http://hedgewars.googlecode.com/files/hedgewars-VS2010-additional.zip). Just download and overwrite it into your currect hedgewars project folder. This is mainly an update to SDL_mixer (updating it to version 1.2.12), and changing the SDLconfig.h file to work with the sperate platform headers instead of the current one.
+ # Run Vckpg in the command line to build the necessary libraries (this will also take a while, especially for Qt). The command is:
+  * For 32-bit builds
+{{{
+./vcpkg.exe install sdl2 sdl2-image sdl2-ttf sdl2-mixer sdl2-mixer[libvorbis] physfs openssl qt5-base qt5-tools ffmpeg
+}}}
+  * For 32-bit builds
+{{{
+./vcpkg.exe install sdl2:x64-windows sdl2-image:x64-windows sdl2-ttf:x64-windows sdl2-mixer:x64-windows sdl2-mixer[libvorbis]:x64-windows physfs:x64-windows openssl:x64-windows qt5-base:x64-windows qt5-tool:x64-windows ffmpeg:x64-windows
+}}}
+ # Build Hedgewars
+  * Run the Developer Command Prompt for VS 2019 (or other installed version) from the Start menu (if you want Hedgewars to install to the default location in *C:/Program Files (x86)*, run it as administrator).
+  * For 64-bit builds, in the dev command prompt run the following command (not necessary for 32-bit builds)
+{{{
+VC\Auxiliary\Build\vcvarsall.bat amd64
+}}}
+  * Navigate *<hedgewars_root>/tools* where *<hedgewars_root>* is the directory where you cloned the repository source to.
+  * Run *build_vcpkg.bat* script
+ # After building, you can run Hedgewars from the installed location (default is *C:/Program Files (x86)/hedgewars/hedgewars.exe*)
 
-Next you will need to change some project settings. If you don't have the SDL directives set correctly in CMake then your project files will be incorect (they still may be incorrect even if you did get them set right). You need to change the following Project Settings for the 'hedgewars' project.
- # Make sure that under C/C++ => Additional Include Directories you have \hedgewars\misc\winutils\include\.
- # Change the Linker => Input => Additional Dependencies option to have the following at the end:
-  * \hedgewars\misc\winutils\lib\SDL.lib
-  * \hedgewars\misc\winutils\lib\SDLmain.lib
-  * \hedgewars\misc\winutils\lib\SDL_mixer.lib
- # Adjust the Output Directory under the General settings to be just \hedgewars\bin\.
-
-== Building process ==
-Run the *tools/build_windows.bat* file each time you want to build the source. Please note that there might some incompatibilities with the environment paths of this script in case that you are running MinSYS or Cygwin: we are quite confident that if you use such software you're quite able to correctly set up any paths.
+== Caveats ==
+ # The linker from 64-bit FPC included in the Lazarus IDE might occasionally fail, producing *hwengine.exe* filled with zeroes. If this happens, just delete it and rerun *tools/build_vcpkg.bat* again (or run *nmake hedgewars* in the root directory to only rebuild the engine)