]> git.xonotic.org Git - xonotic/netradiant.git/blob - windows_compile_guide/index.html
Adding sparkly_seam q3map2 regression test. No fix yet, but there will be
[xonotic/netradiant.git] / windows_compile_guide / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4   <head>
5     <title>Compiling GtkRadiant on Windows</title>
6     <style type="text/css">
7       body
8       {
9         color: black;
10         background-color: white;
11         font-family: sans-serif;
12         margin: 1em 1em 1em 1em;
13       }
14       a { color: blue; text-decoration: underline; }
15       a:hover { color: red; text-decoration: underline; }
16       .error { color: #dd0000; }
17     </style>
18   </head>
19   <body>
20     <div style="left:0px; top:0px; width:88px; height:31px; position:absolute">
21       <a href="http://validator.w3.org/check?uri=referer">
22         <img src="http://www.w3.org/Icons/valid-xhtml10"
23              style="border-style:none"
24              alt="Valid XHTML 1.0!" height="31" width="88" />
25       </a>
26     </div>
27     <br />
28     <center><h1>Compiling GtkRadiant on Windows</h1></center>
29     <hr />
30     <p>This guide explains how to compile GtkRadiant 1.6.x from source code on Windows operating systems.
31       The source code is obtained from
32       id Software's official GtkRadiant SVN repository, which is open to the public (details follow).
33       These instructions are aimed at developers wanting to test changes to GtkRadiant source code.
34       The instructions below have been executed successfully on
35       Windows XP 32 bit (some late service pack) and on Windows 7 Ultimate 32 bit.  Since 64 bit systems have not been tested by me, I cannot
36       give any advice on how to complete these instructions on those systems.  (Also, I'm an advanced UNIX user but a complete Windows nub.)</p>
37     <p>This guide is divided into the following main sections.  I choose to use MSYS instead of Cygwin in this
38       tutorial because using MinGW/MSYS is the documented and supported way to compile ioquake3.  The need for MinGW/MSYS is
39       really only to execute a single SCons build target; you could presumably execute those needed steps by
40       hand if you really don't want to bother with installing MSYS (but you're on your own if you choose that route).
41     </p>
42     <ul>
43       <li><h3><a href="#mingw">Section 1: Installing MinGW</a></h3></li>
44       <li><h3><a href="#msys">Section 2: Installing MSYS</a></h3></li>
45       <li><h3><a href="#python">Section 3: Installing Python</a></h3></li>
46       <li><h3><a href="#scons">Section 4: Installing SCons</a></h3></li>
47       <li><h3><a href="#svn">Section 5: Installing SVN</a></h3></li>
48       <li><h3><a href="#vcpp">Section 6: Installing Visual C++</a></h3></li>
49       <li><h3><a href="#sources">Section 7: Obtaining Source Code, Game Paks, and Libs</a></h3></li>
50       <li><h3><a href="#compile">Section 8: Compiling GtkRadiant</a></h3></li>
51       <li><h3><a href="#run">Section 9: Running GtkRadiant</a></h3></li>
52     </ul>
53     <hr />
54     <br />
55     <a name="mingw"></a>
56     <h2>Section 1: Installing MinGW</h2>
57     <p>The following URL can be used as a coarse guide for installing MinGW:
58       <a href="http://www.mingw.org/wiki/Getting_Started">http://www.mingw.org/wiki/Getting_Started</a>.
59       The needed steps are reproduced below.
60     </p>
61     <h3>Step A: Download</h3>
62     <p>Download the <tt>mingw-get</tt> program.  We're going to use <tt>mingw-get</tt>
63       as opposed to the graphical installer <tt>mingw-get-inst</tt> .  You can download the most
64       recent version of <tt>mingw-get</tt> from
65       <a href="http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get/">this SourceForge page</a>.
66       (That page also contains a <tt>readme.txt</tt> file that has very useful information on how to use
67       <tt>mingw-get</tt> , for your reading pleasure.)  Download the binary zip file version;
68       the downloaded file should have a name along the lines of <tt>mingw-get-0.1-mingw32-alpha-5-bin.zip</tt> .
69     </p>
70     <h3>Step B: Extract</h3>
71     <p>
72       Extract the zip file you just downloaded to <tt>C:\MinGW</tt> .  I would use that exact location; I will be referring to
73       that location in the rest of the instructions.  After extraction, double check that there exists a file
74       <tt>C:\MinGW\bin\mingw-get.exe</tt> .  If such a file does not exist, you extracted at an incorrect level or you downloaded
75       the wrong zip archive.
76     </p>
77     <h3>Step C: Set <tt>PATH</tt></h3>
78     <p>
79       You need to add <tt>C:\MinGW\bin</tt> to your <tt>PATH</tt> system environment variable.  Don't forget that the semicolon
80       character is the separator for the elements in <tt>PATH</tt> .  The steps to find where <tt>PATH</tt> can be edited are roughly
81       as follows on Windows XP:
82     </p>
83     <ol>
84       <li>Go to Control Panel (usually in Start menu).</li>
85       <li>In Control Panel, go to System.</li>
86       <li>Hit "Advanced" tab.</li>
87       <li>Hit "Environment Variables" button.</li>
88       <li>Near the bottom, under "System variables", highlight "Path" and click "Edit".</li>
89       <li>Tack on the string "C:\MinGW\bin" to the end, making sure to use a semicolon to separate the existing <tt>PATH</tt> from
90         your new entry.</li>
91       <li>Reboot? (I don't know if it's necessary.)</li>
92     </ol>
93     <h3>Step D: Update/Upgrade</h3>
94     <p>
95       We're going to update the <tt>mingw-get</tt> program with the latest version and pull in the latest distribution manifest.
96       Open up Command Prompt.  Execute the following commands:
97     </p>
98     <blockquote>
99       <pre width="80" style="background: #CCCCCC; padding: 2mm; border-style: ridge">C:\MinGW> <b>mingw-get update</b>
100 C:\MinGW> <b>mingw-get upgrade mingw-get</b>
101 </pre>
102     </blockquote>
103     <p>
104       The above commands can be executed from any directory; <tt>C:\MinGW</tt> happened to be the currect directory in my case.
105     </p>
106     <p>
107       Note: If you execute <tt>mingw-get</tt> without any arguments, you might get an unpleasant-looking error.
108       This is normal.
109     </p>
110     <p>
111       We're all done installing the base of the MinGW system.  You don't need to install any additional <tt>mingw-*</tt> packages
112       to get GtkRadiant to compile (because we're using different software to actually compile GtkRadiant).
113     </p>
114     <hr />
115     <br />
116     <a name="msys"></a>
117     <h2>Section 2: Installing MSYS</h2>
118     <p>We're now going to install MSYS, which sits on top of MinGW.</p>
119     <h3>Step A: Install <tt>msys-base</tt></h3>
120     <p>
121       Open up Command Prompt.  Execute the following command:
122     </p>
123     <blockquote>
124       <pre width="80" style="background: #CCCCCC; padding: 2mm; border-style: ridge">C:\MinGW> <b>mingw-get install msys-base</b>
125 </pre>
126     </blockquote>
127     <p>You can now close the Command Prompt.  You won't have to use it again!</p>
128     <h3>Step B: Fire Up MSYS</h3>
129     <p>
130       In your native file exploring application in Windows, navigate to <tt>C:\MinGW\msys\1.0</tt> .  Here you will find
131       a file <tt>msys.bat</tt> .  This script is what launches MSYS.  You can make a shortcut to this file and place the shortcut
132       in a convenient location such as your Desktop.  You can also use the provided icon <tt>msys.ico</tt> (in the same
133       directory) for your shortcut icon.
134     </p>
135     <p>
136       Now start MSYS by double-clicking <tt>msys.bat</tt> (or your shortcut).  We will use MSYS to install some remaining packages that are needed.
137       In case you are completely new to MSYS, I'd like to point out that it's much like a UNIX shell.
138       In fact you can access the <tt>C:</tt> Windows drive in MSYS via the <tt>/c</tt> path.
139     </p>
140     <h3>Step C: Install MSYS Additions</h3>
141     <p>
142       There are many MinGW/MSYS packages you can install; you may even choose to install all of them.
143       However, for the purposes of compiling GtkRadiant, you will need only the following.  Execute this
144       from your MSYS shell:
145     </p>
146     <blockquote>
147       <pre width="80" style="background: #CCCCCC; padding: 2mm; border-style: ridge">$ <b>mingw-get install msys-wget</b>
148 $ <b>mingw-get install msys-unzip</b>
149 </pre>
150     </blockquote>
151     <p>You should now have the two commands <tt>wget</tt> and <tt>unzip</tt> at your disposal in the MSYS shell.
152       We will be needing these commands to successfully execute the SCons build target later on.</p>
153     <p>You can leave your MSYS shell open because we will use it again in a little while.</p>
154     <p>Side Note: The <tt>msys-openssh</tt> package comes with traditional <tt>scp</tt> and <tt>ssh</tt> commands that work
155       orders of magnitude faster than WinSCP or PuTTY.</p>
156     <hr />
157     <br />
158     <a name="python"></a>
159     <h2>Section 3: Installing Python</h2>
160     <p>We will now install the Python programming language, which is needed for SCons to work.</p>
161     <p>
162       The homepage for Python is <a href="http://www.python.org/download">www.python.org</a>.  You should download and install
163       a version of Python suitable for your version of Windows.  I would strongly recommend sticking to a version of Python
164       that is 2.x.x, <i>not</i> 3.x.x.  This is because lots of legacy software that uses Python is known to work correctly
165       with 2.x.x, but might not necessarily work with 3.x.x.  At the time of writing this tutorial, the preferred version of Python
166       was 2.7.1.  For purposes of this tutorial, Python is installed to <tt>C:\Python27</tt> .  All of the default
167       options for installing Python should be fine.
168     </p>
169     <p>
170       The following step is needed since we're going to be calling SCons in such a way that requires the <tt>python</tt>
171       command to be in our <tt>PATH</tt> in MSYS.  In your MSYS shell, execute this:
172     </p>
173     <blockquote>
174       <pre width="80" style="background: #CCCCCC; padding: 2mm; border-style: ridge">$ <b>mkdir -p /usr/local/bin</b>
175 $ <b>ln -s /c/Python27/python.exe /usr/local/bin/python</b>
176 </pre>
177     </blockquote>
178     <p>You should now have the <tt>python</tt> command at your disposal in your MSYS shell.</p>
179     <hr />
180     <br />
181     <a name="scons"></a>
182     <h2>Section 4: Installing SCons</h2>
183     <p>We will now install SCons, which is a multi-platform substitute for traditional Make.</p>
184     <p>
185       The homepage for SCons is <a href="http://www.scons.org/download.php">www.scons.org</a>.  You should download and install the
186       latest production release.  During the install procedure you will be asked to confirm the location of your Python
187       installation.
188     </p>
189     <p>
190       SCons gets installed into <tt>C:\Python27\Scripts</tt> because it's basically a Python script.
191       You would normally invoke SCons by using the <tt>scons.bat</tt> script
192       in this directory.  However, since we will be invoking SCons from MSYS (which is UNIX-like), we're actually going to call the UNIX script version
193       of SCons, which is the plain-old file <tt>scons</tt> in this same directory.  Furthermore, we're going to make sure that the <tt>scons</tt>
194       command is available under MSYS.  Execute these commands in your MSYS shell:
195     </p>
196     <blockquote>
197       <pre width="80" style="background: #CCCCCC; padding: 2mm; border-style: ridge">$ <b>mkdir -p /usr/local/bin</b>
198 $ <b>ln -s /c/Python27/Scripts/scons /usr/local/bin/scons</b>
199 </pre>
200     </blockquote>
201     <p>
202       You now have the <tt>scons</tt> command at your disposal in the MSYS shell.
203     </p>
204     <hr />
205     <br />
206     <a name="svn"></a>
207     <h2>Section 5: Installing SVN</h2>
208     <p>
209       We're now going to install a command-line version of the SVN client that we can use from MSYS.  We don't need no
210       stinkin' GUI.  Anyhow, command-line SVN is required to perform the SCons build target later on.
211       In fact, you don't need to touch TortoiseSVN or any other GUI-based SVN client for any part of this entire tutorial.
212       (I wouldn't touch a GUI-based SVN client with a 10 foot pole given the opportunity to use command-line SVN instead.)
213     </p>
214     <p>
215       The preferred download site for SVN client for Windows is <a href="http://www.collab.net/downloads/subversion/">CollabNet</a>.
216       You should download and install CollabNet Subversion Command-Line Client,
217       <i>not</i> CollabNet Subversion Edge or something of any other nature.  Unfortunately you'll have to create an account with CollabNet
218       to download this software, but everything is free.  You can use all defaults when installing SVN.
219     </p>
220     <p>
221       The CollabNet version of SVN client for Windows should automatically modify your <tt>PATH</tt> , and you should be able to
222       execute the <tt>svn</tt> command in MSYS after closing MSYS and starting it again.  If this is not the case for some strange
223       reason, you'll have to tweak your environment to ensure that you can execute the <tt>svn</tt> command from MSYS.
224     </p>
225     <hr />
226     <br />
227     <a name="vcpp"></a>
228     <h2>Section 6: Installing Visual C++</h2>
229     <p>
230       The GtkRadiant developers are currently using Microsoft Visual C++ 2008 to compile GtkRadiant.  Even though Visual C++ 2010 is a newer
231       version, don't use it [unless you want to be on your own].  You can download Visual C++ 2008 Express Edition from
232       <a href="http://www.microsoft.com/express/Downloads/#Visual_Studio_2008_Express_Downloads">this Microsoft webpage</a>.
233     </p>
234     <p>
235       When you install Visual C++ 2008 Express Edition, you can install the bare minimum application <i>without</i> any extras such as
236       Microsoft Silverlight Runtime or Microsoft SQL Server 2008 Express Edition.  For the rest of the install options, the
237       defaults can be chosen.
238     </p>
239     <hr />
240     <br />
241     <a name="sources"></a>
242     <h2>Section 7: Obtaining Source Code, Game Paks, and Libs</h2>
243     <p>We are now ready to get the source code for GtkRadiant.</p>
244     <h3>Step A: Get Base Project</h3>
245     <p>
246       Open an MSYS shell.  When you start the shell, you will be in what is called your "home directory".  You can execute the
247       <tt>pwd</tt> command in MSYS to find out which directory you are currently in.  For example, when I start MSYS, my
248       current directory is <tt>/home/rambetter</tt> .  In reality, this path is relative to the MSYS install root.
249       For example, in the Windows operating system, my home directory is actually <tt>C:\MinGw\msys\1.0\home\rambetter</tt> .
250     </p>
251     <p>
252       In any case, we need to create ourselves a work area for purposes of downloading files and compiling software.  I would recommend
253       creating a directory <tt>radiant-work</tt> in your home directory.  So:
254     </p>
255     <blockquote>
256       <pre width="80" style="background: #CCCCCC; padding: 2mm; border-style: ridge">$ <b>mkdir radiant-work</b>
257 </pre>
258     </blockquote>
259     <p>Now, we're going to change to that directory and get the base GtkRadiant project:</p>
260     <blockquote>
261       <pre width="88" style="background: #CCCCCC; padding: 2mm; border-style: ridge">$ <b>cd radiant-work</b>
262 $ <b>svn checkout https://zerowing.idsoftware.com/svn/radiant/GtkRadiant/trunk ./GtkRadiant</b>
263 </pre>
264     </blockquote>
265     <p>We created the extra <tt>radiant-work</tt> parent directory of <tt>GtkRadiant</tt> because the following step will
266       place many files into the project's parent directory, and we don't want to litter our home directory with these files.</p>
267     <h3>Step B: Execute SCons Build Target</h3>
268     <p>
269       Remember all the work we did earlier in order to install SCons?  Well, thanks to all that work we did,
270       obtaining the remaining things we need for compiling is really really easy:
271     </p>
272     <blockquote>
273       <pre width="80" style="background: #CCCCCC; padding: 2mm; border-style: ridge">$ <b>cd GtkRadiant</b>
274 $ <b>scons target=setup</b>
275 </pre>
276     </blockquote>
277     <p>This SCons build target performs several actions:</p>
278     <ul>
279       <li>Downloads "install paks" for several games such as Quake III Arena and Urban Terror.</li>
280       <li>Downloads library dependencies (such as GTK+) for building and running GtkRadiant.</li>
281       <li>Places library dependencies in proper locations.</li>
282       <li>Performs any other actions needed prior to compiling GtkRadiant.</li>
283     </ul>
284     <hr />
285     <br />
286     <a name="compile"></a>
287     <h2>Section 8: Compiling GtkRadiant</h2>
288     <p>We are now finally going to compile GtkRadiant using Microsoft Visual C++.</p>
289     <p>
290       Start Microsoft Visual C++.  From the "File" menu, choose "Open" -> "Project/Solution...".
291       Navigate to your <tt>GtkRadiant</tt> directory (in my case <tt>C:\MinGW\msys\1.0\home\rambetter\radiant-work\GtkRadiant</tt>).
292       Choose the project file <tt>radiant_VC9.sln</tt> from this directory.
293     </p>
294     <p>
295       You now have the GtkRadiant project loaded in Visual C++.  You can poke around if you like, e.g. open up some source code
296       files and edit them.
297     </p>
298     <p>
299       Before you build the project, you might want to select the "Release" target (as pictured below).
300     </p>
301     <table border="0" cellpadding="0" cellspacing="0">
302       <tr>
303         <td width="20">&nbsp;</td>
304         <td><img src="vc-radiant-release.png" alt="vc-radiant-release.png"></img></td>
305       </tr>
306     </table>
307     <p>
308       To build GtkRadiant, choose "Build Solution" from the "Build" menu.  The build will take
309       about 5 minutes [on a Pentium 4 with HTT], so this would be a good time to go get coffee.
310     </p>
311     <p>If the build completes successfully, you will get a message similar to the following in the output
312       of Visual C++:</p>
313     <blockquote>
314       <pre width="80" style="background: #CCCCCC; padding: 2mm; border-style: ridge">radiant - 0 error(s), 1 warning(s)
315 ========== Build: 20 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
316 </pre>
317     </blockquote>
318     <hr />
319     <br />
320     <a name="run"></a>
321     <h2>Section 9: Running GtkRadiant</h2>
322     <p>All of the files needed to run GtkRadiant are going to be in the folder <tt>radiant-work\GtkRadiant\install</tt> [relative
323       to your home directory in MSYS].  You can copy the entire <tt>install</tt> folder to some place such as your Desktop
324       and you can rename this folder to <tt>ZeroRadiant</tt> for example.
325       Then, you will use <tt>radiant.exe</tt> in that directory to launch the application.
326     </p>
327     <p>
328       There is one little bit of optional cleanup you can perform on your installation folder.  You can remove all SVN-related
329       files since they are no longer needed and only take up disk space.  Let's say that you renamed your installation folder
330       to <tt>ZeroRadiant</tt> (as the previous paragraph suggests), and let's say that you're in the MSYS shell, and that your current
331       working directory is the parent directory of <tt>ZeroRadiant</tt>.  Then, in your MSYS shell, you can execute this command to
332       delete all SVN-related files (all <tt>.svn</tt> directories):
333     </p>
334     <blockquote>
335       <pre width="80" style="background: #CCCCCC; padding: 2mm; border-style: ridge">$ <b>find ZeroRadiant/ -type d -name '\.svn' -print0 | xargs -0 rm -rf</b>
336 </pre>
337     </blockquote>
338     <p>
339       That's it!  Good luck and thanks for reading my tutorial!  If you have comments or suggestions please email me at nlandys@gmail.com .
340       More information about GtkRadiant is on <a href="http://www.qeradiant.com/cgi-bin/trac.cgi">www.qeradiant.com</a>.
341     </p>
342     <br />
343     <br />
344   </body>
345 </html>