Building Spring on Windows: Difference between revisions

From Spring
Jump to navigationJump to search
→2012 (v11): fix typo in cmake command
Abma (talk | contribs)
remove deprecated visual studio express compile instructions (as only new devs are interested, non-working instructions should be removed)
Line 101: Line 101:


Now start visual studio & open Spring.sln.
Now start visual studio & open Spring.sln.
==2005 (v8)==
(deprecated since spring 94.1)
(possibly the free Express Edition)
* Install the [http://springrts.com/dl/vclibs/spring-vc8libs-v8.7z VClibs for VS2005].
* Install the [http://msdn.microsoft.com/directx/sdk/ DirectX SDK]
* Install the PlatformSDK. I got away with unchecking the parts of the PlatformSDK that were obviously not related (IIS, web stuff). Makes for a smaller download. Make '''sure''' the Platform SDK and DirectX SDK are in the VS search/include directories.
** Note that the most recent version of Platform SDK is called [http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en Windows SDK].
* After installing them, open Visual C++. Click Tools >> Options >> Projects and Solutions >> VC++ Directories. Add these entries to the corresponding sections (paths just a reference, yours may be different):
**Include files:
***$(ProgramFiles)\Microsoft DirectX SDK (August 2007)\Include
***$(ProgramFiles)\Microsoft Platform SDK\include
**Library files:
***$(ProgramFiles)\Microsoft DirectX SDK (August 2007)\Lib\x86 (Might need \x64 on a 64-bit platform, I don't know.)
***$(ProgramFiles)\Microsoft Platform SDK\lib
* Open the solution. /spring/rts/build/vstudio8/rts.sln
* Start building (usually you want to select the Release with error catching build, debug is really too slow and is used only when you really know what you want to test)
* Select the working directory in the project properties, otherwise spring will not work correctly
=== Errors ===
* <span class=warning>...\Windows\v6.0A\include\shlwapi.h(196) : error C2061: syntax error : identifier 'PCUITEMID_CHILD'</span> - wrong version of Platform SDK is used; go to Tools >> Options >> >> Projects and Solutions >> VC++ Directories and move the one that's causing this problem all the way down.
==2008 (v9)==
(deprecated since spring 94.1)
(Standard or above Edition)
It won't work out of the box, you need at least this hotfix from Microsoft: [http://support.microsoft.com/kb/946040 KB946040] or update using your Windows Update, as well as [http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6922 Visual Studio 2008 Feature Pack].
For the rest the Visual Studio 8 instructions should apply, mostly. You probably won't need to add Windows SDK path references as they should be present by default. Before compiling it's recomended to select "Release with error catching" solution configuration or it's MT variant.
You need the [http://springrts.com/dl/vclibs/spring-vc9libs-v5.7z vclibs for VS2008], and not the ones for Visual Studio 2005. The installation procedure is the same though.
Be aware that the project file isn't updated nearly as frequently as it should, so it's best to use the .vcproj file from VS8 build and VS2008 will automatically update it.
=== Errors ===
* <span class=warning>...\rts\lib\assimp\code\STEPFile.h(58) : fatal error C1083: Cannot open include file: 'unordered_map': No such file or directory</span>
You need to install [http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6922 Visual Studio 2008 Feature Pack]. It's recomended to do so after a clean installation of VS2008 prior to installing SP1 and other updates. The linked installer only supports VS2008 Standard or above.
If you installed all updates prior to installing the feature pack, there's no guarantee that installation of feature pack will be successfull (''Installation on systems with Visual Studio 2008 Service Pack 1 (BETA) is not supported''), though it did seem to work.
==2010 (v10)==
(deprecated since spring 94.1)
The instructions for VS2008 should mostly work, but you need [http://springrts.com/dl/vclibs/spring-vc10libs.7z VCLibs for VS2010] instead.
to create the project file for visual studio 10, type:
<code><pre>
git clone git://github.com/spring/vclibs10.git vclibs
cmake -G "Visual Studio 10" .
</pre></code>


[[Category:Compiling]]
[[Category:Compiling]]

Revision as of 11:25, 12 June 2013

Development < Building Spring < Building Spring on Windows

Get the Source Code

Tarballs

(For playing online official games on lobby.springrts.com - the spring lobby server)

Using Git is the recommended way to get the sources of the engine. In spite of, you can use the official tarballs to compile Spring without git.

Note: Do NOT use the zip-files from github, they are missing important data to compile Spring.

See Building spring for build instructions.

Git

Spring project page at github

Master repo URI: git://github.com/spring/spring.git
Backup repo: git://git.code.sf.net/p/springrts/code

Branches of interest:

  • master - latest stable, enforced for official games on lobby.springrts.com
  • maintenance - fixes for the latest stable
  • develop - major developments (most active, larger developments)

Assuming the GIT command line client is installed, you can clone (get locally) the repository with the commands below.

Latest Stable (master branch, useless for development purposes, lives as maintenance moving forward)

git clone --recursive git://github.com/spring/spring.git -b master

To later update it (get the changes other people did) with:

git pull --rebase

Maintenance (maintenance branch)

git clone --recursive git://github.com/spring/spring.git -b maintenance

Bleeding-edge (develop branch)

git clone --recursive git://github.com/spring/spring.git -b develop

Working with git

Please note that patches to the code must be done for either develop or maintenance. Such patches can be then sent to one of the developers with repository access. If you are new to git and github, you may want to have a look at this guide to get you started.

Note: you can switch branches this way:<syntaxhighlight lang="bash">

  1. (optional) backup your current code changes

git stash

  1. switch branch

git checkout $MY_OTHER_BRANCH

  1. sometimes needed
  2. note, it deletes all your unstashed changes and all non-pushed commits on the new branch,
  3. but it doesn't delete untracked files.
  4. git reset --hard
  1. update/sync with remote repo

git pull --rebase

  1. (optional) if you want to apply the code changes backed-up in the first step
  2. git stash pop # reapplies your changes and DELETES the backup
  3. or
  4. git stash apply --index 0 # reapplies your changes and keep the backup (see `git stash list`)

</syntaxhighlight>

Submodules

To obtain the submodules you should clone the repository with --recursive as mentioned above. If you haven't done this, you can execute the following code <syntaxhighlight lang="bash"> git submodule sync git submodule update --init

</syntaxhighlight>

To update the submodules, you have to execute the same commands again or pull normally.

Compiling with MinGW+CMake

Compiling Spring in MinGW requires >=GCC 4.x.

Because the official MinGW installer and packages are outdated, we recommend to use the TDM web-installer instead, to install the official MinGW Stable (not TDM-GCC) package:

TDM webinstaller

Download and run the On-Demand Installer (tdm-gcc-webdl).

Select at least the following components:

  • gcc (version: MinGW Stable!)
    • core
    • g++
    • openmp (optional)
  • binutils
  • mingw-runtime
  • w32api
  • mingw32-make (if you have no Make installed yet)
  • gdb (recommended for debugging)

Possible Problems

  • If you get undefined reference to `_Unwind_Resume' linking errors, deinstall whole TDM/MinGW and reinstall it with dwarf2 (MinGW Stable should have it enabled).
  • When you installed an old version of MinGW/TDM and forgot to deinstall it correctly, gcc.exe & g++.exe will be named gcc-dw2.exe/g++-dw2.exe. CMake will then fail to find the correct one, first try to deinstall anything mingw related and reinstall everything. If that didn't helped just rename the files. If even that doesn't help open cmake-gui and click the advanced button and set the paths to the correct files yourself (CMAKE_C_COMPILER & CMAKE_CXX_COMPILER).

Spring MinGW Dependencies (mingwlibs)

You also need some Spring dependencies, prepackaged in the mingwlibs archive.

You can download a tarball here (Download Source button).
Or (recommended) use git:

  • open a console (cmd.exe) or use git's bash (you find it in the right click context menu when clicking the folder), cd into your source dir
  • make a dir named mingwlibs
  • cd mingwlibs
  • run git clone git://github.com/spring/mingwlibs.git
  • and update it from time to time with: git pull --rebase

mingwlibs install directory

There are two ways to setup the MinGW libraries:

  • Make sure you install the package in the checkout directory, so the path is: /spring/mingwlibs. If done right, it will look like:
    • */spring/
    • */spring/...
    • */spring/mingwlibs
    • */spring/rts
  • Install the package somewhere else (preferably outside of the source tree), and pass its location with the MINGDIR option to CMake in the configure step (see further down, in the quick instructions).

Installing CMake

First get CMake here and install it.

then

  • run the cmake-gui and select a source and a build directory
  • configure and follow the instructions, and adjust variables to your needs (defaults are OK)
  • press Generate
  • open a console (cmd.exe), cd into your build directory
  • optional: for multi-threaded compilation, the mingw32-make part may differ on your system:
    set MAKE_COMMAND=mingw32-make -j2
  • compile with:
    mingw32-make install-spring

Generating the AI Sources/Wrappers

you can either build the wrapper:

make Cpp-AIWrapper

or generate all sources, in case you don't need the binary:

make generateSources

Compiling with Visual Studio

General Visual Studio Notes

When developing using Visual Studio keep in mind:

  • Your VS build won't sync with GCC builds in multiplayer mode
  • AIs built with Visual Studio will work with the mingw32 release builds thanks to the C AI Interface, however this interface may change when newer releases are made
  • Running any non-LUA AI on VS built Spring will crash it

2012 (v11)

Note: Visual Studio 2012 Express for Windows Desktop is for free, but requires a registration after 30 days (to get a free license).


Install cmake, 7-zip and msysgit.

git clone git://github.com/spring/spring.git
cd spring
git clone git://github.com/spring/vclibs11.git vclibs
cmake.exe -G "Visual Studio 11" .

Now start visual studio & open Spring.sln.