Difference between revisions of "How to build VCMI (Windows/Vcpkg)"

From VCMI Project Wiki
Jump to: navigation, search
(Prerequisites)
(Create VCMI installer)
(24 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
= Prerequisites =
 
= Prerequisites =
* HoMM 3 (can be bought at [http://www.gog.com/en/gamecard/heroes_of_might_and_magic_3_complete_edition/ gog.com])
+
* Microsoft Visual Studio [https://www.visualstudio.com/vs/older-downloads/ 2015] or [http://www.visualstudio.com/downloads/download-visual-studio-vs 2017]
* Microsoft Visual Studio 2015 or 2017([http://www.visualstudio.com/downloads/download-visual-studio-vs download])
 
 
* Git or git GUI, for example, SourceTree [http://www.sourcetreeapp.com/download download]
 
* Git or git GUI, for example, SourceTree [http://www.sourcetreeapp.com/download download]
 +
* CMake [https://cmake.org/download/ download]
 +
* To unpack pre-build Vcpkg: [http://www.7-zip.org/download.html 7-zip]
 +
* To create installer: [http://nsis.sourceforge.net/Main_Page NSIS]
  
 
= Install dependencies =
 
= Install dependencies =
 +
== Download pre-built Vcpkg ==
 +
You might save a time by using Vcpkg packages pre-built by VCMI team.
  
== Create initial directory ==
+
Package guaranteed to work since they tested with every commit by [https://ci.appveyor.com/project/vcmi/vcmi AppVeyor]
 +
 
 +
=== Download and unpack archive ===
 +
 
 +
Archives are available from GitHub: https://github.com/vcmi/vcmi-deps-windows/releases
 +
 
 +
Only download latest version available.
 +
 
 +
* vcpkg-export-'''x86'''-windows-v140.7z to build for 32-bit
 +
* vcpkg-export-'''x64'''-windows-v140.7z to build for 64-bit
 +
 
 +
Extract archive by right clicking on it and choosing "7-zip -> Extract Here".
 +
 
 +
=== Move dependencies to target directory  ===
 +
 
 +
Once extracted "vcpkg" directory will appear with "installed" and "scripts" inside it.
 +
 
 +
Move it where you wish, e.g right to the C:\ so full path to Vcpkg will be '''C:\vcpkg'''. We will call this directory as '''[VCPKG_DIR]'''
 +
 
 +
== Build Vcpkg on your own ==
 +
Be aware that building Vcpkg might take a lot of time depend on your CPU model and 10-20GB of disk space.
 +
=== Create initial directory ===
 
Create a directory for vcpkg development, eg. '''C:\vcpkg'''
 
Create a directory for vcpkg development, eg. '''C:\vcpkg'''
 
We will call this directory as '''[VCPKG_DIR]'''
 
We will call this directory as '''[VCPKG_DIR]'''
Line 17: Line 42:
 
* '''C:\Program Files (x86)\vcpkg''' (write protection)
 
* '''C:\Program Files (x86)\vcpkg''' (write protection)
  
== Clone vcpkg ==
+
=== Clone vcpkg ===
  
 
* open SourceTree
 
* open SourceTree
Line 25: Line 50:
 
* click '''Clone'''
 
* click '''Clone'''
  
== Build vcpkg ==
+
=== Build vcpkg ===
* Run '''[VCPKG_DIR]/bootstrap-vcpkg.bat'''
+
* Run  
 +
<pre>
 +
[VCPKG_DIR]/bootstrap-vcpkg.bat
 +
</pre>
  
== Build dependencies ==
+
=== Build dependencies ===
* For 32-bit build run '''[VCPKG_DIR]/vcpkg.exe install minizip:x86-windows sdl2:x86-windows sdl2-image:x86-windows sdl2-ttf:x86-windows sdl2-mixer:x86-windows boost:x86-windows qt5:x86-windows ffmpeg:x86-windows'''
+
* For 32-bit build run:
* For 64-bit build run '''[VCPKG_DIR]/vcpkg.exe install minizip:x64-windows sdl2:x64-windows sdl2-image:x64-windows sdl2-ttf:x64-windows sdl2-mixer:x64-windows boost:x64-windows qt5:x64-windows ffmpeg:x64-windows'''
+
<pre>
 +
[VCPKG_DIR]/vcpkg.exe install minizip:x86-windows sdl2:x86-windows sdl2-image:x86-windows sdl2-ttf:x86-windows sdl2-mixer:x86-windows boost:x86-windows qt5:x86-windows ffmpeg:x86-windows fuzzylite:x86-windows
 +
</pre>
 +
* For 64-bit build run
 +
<pre>
 +
[VCPKG_DIR]/vcpkg.exe install minizip:x64-windows sdl2:x64-windows sdl2-image:x64-windows sdl2-ttf:x64-windows sdl2-mixer:x64-windows boost:x64-windows qt5:x64-windows ffmpeg:x64-windows fuzzylite:x64-windows
 +
</pre>
  
 
= Build VCMI =
 
= Build VCMI =
Line 52: Line 86:
 
* click '''Clone'''
 
* click '''Clone'''
  
== Compile VCMI ==  
+
== Generate solution for VCMI ==
 
* create '''[VCMI_DIR]/build'''
 
* create '''[VCMI_DIR]/build'''
 
* open '''[VCMI_DIR]/build''' in terminal
 
* open '''[VCMI_DIR]/build''' in terminal
* execute '''cmake ../source -DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]/scripts/buildsystems/vcpkg.cmake -DCMAKE_INSTALL_PREFIX=[VCMI_DIR]/install'''
+
* execute command to generate project for:
* open '''VCMI.sln''' in Visual Studio
+
 
 +
'''Visual Studio 2015 - 32-bit build'''
 +
<pre>
 +
cmake ../source -DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 14 2015"
 +
</pre>
 +
 
 +
'''Visual Studio 2015 - 64-bit build'''
 +
<pre>
 +
cmake ../source -DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 14 2015 Win64"
 +
</pre>
 +
 
 +
'''Visual Studio 2017 - 32-bit build'''
 +
<pre>
 +
cmake ../source -DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 15 2017"
 +
</pre>
 +
 
 +
'''Visual Studio 2017 - 64-bit build'''
 +
<pre>
 +
cmake ../source -DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 15 2017 Win64"
 +
</pre>
 +
 +
== Compile VCMI with Visual Studio ==
 +
* open '''[VCMI_DIR]/build/VCMI.sln''' in Visual Studio
 
* select "Release" build type in combobox
 
* select "Release" build type in combobox
 
* right click on '''BUILD_ALL''' project - build project
 
* right click on '''BUILD_ALL''' project - build project
* right click on '''INSTALL''' project - build project
+
* grab VCMI in '''[VCMI_DIR]/build/bin''' folder!
* grab VCMI in '''[VCMI_DIR]/install''' folder!
+
 
 +
== Compile VCMI from command line ==
 +
From '''[VCMI_DIR]/build''' execute followding commands.
 +
 
 +
'''For release build'''
 +
<pre>
 +
cmake --build . --config Release
 +
</pre>
 +
Will be used by default even "--config" if not specified.
 +
 
 +
'''For debug build'''
 +
<pre>
 +
cmake --build . --config Debug
 +
</pre>
 +
 
 +
= Create VCMI installer =
 +
Make sure NSIS is installed to default directory or have registry entry so CMake can find it.
 +
 
 +
After you build VCMI execute following command from [VCMI_DIR]/build.
 +
=== Execute following if you build for Release: ===
 +
<pre>
 +
cpack
 +
</pre>
 +
=== If you want debug build: ===
 +
<pre>
 +
cpack -C Debug
 +
</pre>

Revision as of 22:35, 20 August 2017

Prerequisites

Install dependencies

Download pre-built Vcpkg

You might save a time by using Vcpkg packages pre-built by VCMI team.

Package guaranteed to work since they tested with every commit by AppVeyor

Download and unpack archive

Archives are available from GitHub: https://github.com/vcmi/vcmi-deps-windows/releases

Only download latest version available.

  • vcpkg-export-x86-windows-v140.7z to build for 32-bit
  • vcpkg-export-x64-windows-v140.7z to build for 64-bit

Extract archive by right clicking on it and choosing "7-zip -> Extract Here".

Move dependencies to target directory

Once extracted "vcpkg" directory will appear with "installed" and "scripts" inside it.

Move it where you wish, e.g right to the C:\ so full path to Vcpkg will be C:\vcpkg. We will call this directory as [VCPKG_DIR]

Build Vcpkg on your own

Be aware that building Vcpkg might take a lot of time depend on your CPU model and 10-20GB of disk space.

Create initial directory

Create a directory for vcpkg development, eg. C:\vcpkg We will call this directory as [VCPKG_DIR]

It is recommended to avoid non-ascii characters in the path to your vcpkg folder. The folder should not be write-protected by system. Good location:

  • C:\vcpkg

Bad locations:

  • C:\Users\Michał\vcpkg (non-ascii character)
  • C:\Program Files (x86)\vcpkg (write protection)

Clone vcpkg

Build vcpkg

  • Run
[VCPKG_DIR]/bootstrap-vcpkg.bat

Build dependencies

  • For 32-bit build run:
[VCPKG_DIR]/vcpkg.exe install minizip:x86-windows sdl2:x86-windows sdl2-image:x86-windows sdl2-ttf:x86-windows sdl2-mixer:x86-windows boost:x86-windows qt5:x86-windows ffmpeg:x86-windows fuzzylite:x86-windows
  • For 64-bit build run
[VCPKG_DIR]/vcpkg.exe install minizip:x64-windows sdl2:x64-windows sdl2-image:x64-windows sdl2-ttf:x64-windows sdl2-mixer:x64-windows boost:x64-windows qt5:x64-windows ffmpeg:x64-windows fuzzylite:x64-windows

Build VCMI

Create initial directory

Create a directory for VCMI development, eg. C:\VCMI We will call this directory as [VCMI_DIR]

It is recommended to avoid non-ascii characters in the path to your VCMI development folder. The folder should not be write-protected by system. Good location:

  • C:\VCMI

Bad locations:

  • C:\Users\Michał\VCMI (non-ascii character)
  • C:\Program Files (x86)\VCMI (write protection)

Clone VCMI

Generate solution for VCMI

  • create [VCMI_DIR]/build
  • open [VCMI_DIR]/build in terminal
  • execute command to generate project for:

Visual Studio 2015 - 32-bit build

cmake ../source -DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 14 2015"

Visual Studio 2015 - 64-bit build

cmake ../source -DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 14 2015 Win64"

Visual Studio 2017 - 32-bit build

cmake ../source -DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 15 2017"

Visual Studio 2017 - 64-bit build

cmake ../source -DCMAKE_TOOLCHAIN_FILE=[VCPKG_DIR]/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 15 2017 Win64"

Compile VCMI with Visual Studio

  • open [VCMI_DIR]/build/VCMI.sln in Visual Studio
  • select "Release" build type in combobox
  • right click on BUILD_ALL project - build project
  • grab VCMI in [VCMI_DIR]/build/bin folder!

Compile VCMI from command line

From [VCMI_DIR]/build execute followding commands.

For release build

cmake --build . --config Release

Will be used by default even "--config" if not specified.

For debug build

cmake --build . --config Debug

Create VCMI installer

Make sure NSIS is installed to default directory or have registry entry so CMake can find it.

After you build VCMI execute following command from [VCMI_DIR]/build.

Execute following if you build for Release:

cpack

If you want debug build:

cpack -C Debug