]> git.saurik.com Git - wxWidgets.git/blame - wxPython/BUILD.win32.txt
VC makefile for building samples/console using wxBase(d).lib
[wxWidgets.git] / wxPython / BUILD.win32.txt
CommitLineData
c368d904
RD
1Building wxPython on Win32
2--------------------------
3
4
5Building wxPython for use on win32 systems is a fairly simple process
6consisting of just a few steps. However depending on where you get
7your sources from and what your desired end result is, there are
8several permutations of those steps. At a high level the basic steps
9are:
10
11 1. Get the wxWindows sources
12 2. Build the wxWindows DLL
13 3. Get the wxPython sources
14 4. Build and Install wxPython
15
16We'll go into more detail of each of these steps below, but first a
17few bits of background information on tools.
18
19I use a tool called SWIG (http://www.swig.org) to help generate the
20C++ sources used in the wxPython extension module. However you don't
21need to have SWIG unless you want to modify the *.i files. If you do
22you'll want to have version 1.1-883 of SWIG and you'll need to change
23a flag in the setup.py script as described below.
24
25I use the new Python Distutils tool to build wxPython. It is included
26with Python 2.0, but if you want to use Python 1.5.2 or 1.6 then
27you'll need to download and install Distutils 1.0 from
28http://www.python.org/sigs/distutils-sig/
29
30I use Microsoft Visual C++ 6.0 (5.0 with the service packs should work
31also) to compile the wxPython C++ sources. Since I am using Distutils
32it should be easier now to build with other win32 compilers such as
33the free mingw32 or Borland compilers, but I havn't tried them yet.
34If anybody wants to try it I'll take any required patches for the
35setup script and for these instructions.
36
37And now on to the fun stuff...
38
39
40
411. Get the wxWindows sources
42----------------------------
43
44A. There are a few possible ways to get sources for wxWindows. You
45 can download a released version from http://wxwindows.org/ or you
46 can get current development sources from the CVS server. (Some
47 information about annonymous CVS access is at
48 http://wxwindows.org/cvs.htm.) The advantage of using CVS is that
49 you can easily update as soon as the developers check in new
50 sources or fixes. The advantage of using a released version is
51 that it usually has had more testing done. You can decide which
52 method is best for you.
53
54B. You'll usually want to use wxWindows sources that have the same
55 version number as the wxPython sources you are using. (Another
56 advantage of using CVS is that you'll get both at the same time.)
57
c368d904
RD
58C. Once you get the sources be sure to put them in a path without a
59 space in it (i.e., NOT c:\Program Files\wx) and set an environment
60 variable named WXWIN to this directory. For example:
61
62 mkdir \wx2
63 cd \wx2
64 unzip wxMSW-2.2.2.zip
65 set WXWIN=c:\wx2
66
67 You'll probably want to add that last line to your autoexec.bat or
68 System Properties depending on the type of system you are on.
69
70D. Change to the wx2\include\wx\msw directory and copy setup0.h to
71 setup.h and then edit setup.h. This is how you control which parts
72 of wxWindows are compiled into or left out of the build, simply by
73 turning options on or off. At a minimum you should set the
74 following:
75
76 wxUSE_NEW_GRID 1
77 wxUSE_GLOBAL_MEMORY_OPERATORS 0
78 wxUSE_LIBTIFF 1
79 wxUSE_GLCANVAS 1
80 wxDIALOG_UNIT_COMPATIBILITY 0
81
82 I also turn off the following as they are not currently used in
83 wxPython. There are probably others that can be turned off to
84 help save space, but I havn't investigated all the potential
85 configurations yet. Please note that wxPython doesn't (yet) check
86 these flags for its own build, so if you turn off something that
87 wxPython expects then you'll get link errors later on.
88
89 wxUSE_DIALUP_MANAGER 0
90 wxUSE_DYNLIB_CLASS 0
91 wxUSE_DOC_VIEW_ARCHITECTURE 0
c368d904
RD
92 wxUSE_PLOT 0
93 wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 0
94
95
96
97
982. Build the wxWindows DLL
99---------------------------
100
101A. Although MSVC project files are provided I always use the makefiles
102 to build wxWindows because by default the flags are compatible with
103 Python, (and I make sure they stay that way.) You would have to
104 edit the project files a bit to make it work otherwise.
105
106B. There are three different types of wxWindows DLLs that can be
107 produced by the VC makefile simply by providing a flag on the nmake
108 command-line, I call the three types DEBUG, FINAL, and HYBRID.
109 (The last one is brand new, you'll need my version of the 2.2.2
110 sources to get the HYBRID capability.) Here are some more details:
111
112 DEBUG Specified with "FINAL=0" and produces a DLL named
113 wx[version]d.dll. This DLL is compiled with full
114 debugging information and with the __WXDEBUG__ set which
115 enables some debugging-only code in wxWindows such as
116 assertions and failure log messages. The /MDd flag is
117 used which means that it is linked with the debugging
118 version of the C runtime library and also that you must
119 use the debugging version of Python, (python_d.exe and
120 pythonXX_d.dll) which also means that all extensions
121 loaded by Python should also have the _d in the name.
122 With this option you can use the MSVC debugger to trace
123 though the Python interpreter, as well as the code for the
124 wxPython extension and the wxWindows DLL.
125
126 FINAL Specified with "FINAL=1" and produces a DLL named
127 wx[version].dll. This DLL is compiled with optimizations
128 turned on and without debugging information and without
129 __WXDEBUG__. The /MD flag is used which means that you
130 can use this version with the standard python.exe. This
131 is the version that I use when making the binary installer
132 for win32.
133
134 HYBRID Specified with "FINAL=hybrid" and produces a DLL named
135 wx[version]h.dll. This DLL is almost the same as the
136 DEBUG version except the /MD flag is used which means that
137 you can use the standard python.exe but you still get the
138 debugging info and the __WXDEBUG__ code enabled. With the
139 debugger you can trace through the the code for the
140 wxPython extension and the wxWindows DLL, but not the
141 Python interpreter. You might use this version when you
142 want to deploy a wxPython app with the __WXDEBUG__ code
143 enabled. I use this mode most of the time during
144 development simply because it's easier than having to
145 remember to type python_d all the time.
146
147 Since different DLL names and object file directories are used you
148 can build all three types if you like.
149
150C. Change to the wx2\src\msw directory and type the following command,
151 using the value for FINAL that you want:
152
153 nmake -f makefile.vc dll pch USE_GLCANVAS=1 FINAL=hybrid
154
155 Your machine will then crunch away for possibly a long time,
156 depending on your hardware, and when it's done you should have a
157 DLL and some library files in \wx2\lib.
158
159D. You'll either need to add \wx2\lib to the PATH or copy the DLL file
160 to a directory already on the PATH so the DLL can be found at runtime.
161
162E. You can test your build by changing to one of the directories under
163 \wx2\samples or \wx2\demos and typing (using the right FINAL flag):
164
165 nmake -f makefile.vc FINAL=hybrid WXUSINGDLL=1
166
167 and then executing the resulting .exe file.
168
169
170
1713. Get the wxPython sources
172---------------------------
173
174A. You have the same options (and same advantages/disadvantages) for
175 getting the wxPython source, either a released snapshot or from
176 CVS. The released version file is named wxPython-[version].tar.gz
177 and is available at http://wxpython.org/download.php. You can use
178 WinZip to unpack it if you don't have tar and gzip. If you want to
179 use CVS you'll find wxPython in the wxWindows CVS tree (see above)
180 in the wxWindows/wxPython directory.
181
182
183
1844. Build and Install wxPython
185-----------------------------
186
187A. As mentioned previouslly, wxPython is built with the standard
188 Python Distutils tool. If you are using Python 2.0c1 or later you
189 are all set, otherwise you need to download and install Distutils
190 1.0 from http://www.python.org/sigs/distutils-sig/.
191
192B. Change to the root wxPython directory and look at the setup.py
193 file. This is the script that configures and defines all the
194 information that Distutils needs to build wxPython. There are some
195 options near the begining of the script that you may want or need
196 to change based on what options you have selected up to this point,
197 (type of DLL built, sources from tar.gz or from CVS, etc.) You can
198 either change these flags directly in setup.py or supply them on
199 the command-line.
200
201 BUILD_GLCANVAS Set to zero if you don't want to build the
202 Open GL canvas extension module.
203
204 BUILD_OGL Set to zero if you don't want to build the
205 Object Graphics Library extension module.
206
207 BUILD_STC Set to zero if you don't want to build the
208 wxStyledTextCtrl (the Scintilla wrapper)
209 extension module.
210
211 USE_SWIG If you have edited any of the *.i files you
212 will need to set this flag to non-zero so SWIG
213 will be executed to regenerate the wrapper C++
214 and shadow python files.
215
216 IN_CVS_TREE If you are using the CVS version of the
217 wxWindows and wxPython sources then you will
218 need to set this flag to non-zero. This is
219 needed because some source files from the
220 wxWindows tree are copied to be under the
221 wxPython tree in order to keep Distutils happy.
222 With this flag set then setup.py will
223 automatically keep these copied sources up to
224 date if the original version is ever updated.
225 If you are using the tar.gz version of the
226 Python sources then these copied sources are
227 already present in your source tree.
228
229
230C. To build and install wxPython you simply need to execute the
231 setup.py script. If you have more than one version of Python
232 installed, be sure to execute setup.py with the version you want to
233 build wxPython for.
234
235 Depending on what kind of wxWindows DLL you built there are
236 different command-line parameters you'll want to pass to setup (in
237 addition to possibly one or more of the above):
238
239 FINAL: python setup.py install
240
241 DEBUG: python setup.py build --debug install
242
243 HYBRID: python setup.py HYBRID=1 install
244
245
246D. At this point you should be able to change into the wxPython\demo
247 directory and run the demo:
248
249 python demo.py
250
251E. If you would like to make a test build that doesn't overwrite the
252 installed version of wxPython you can do so with one of these
253 commands instead of the install command above:
254
255 FINAL: python setup.py build_ext --inplace
256
257 DEBUG: python setup.py build_ext --debug --inplace
258
259 HYBRID: python setup.py HYBRID=1 build_ext --inplace
260
261 This will build the wxPython package in the local wxPython
262 directory instead of installing it under your Python installation.
263 To run using this test version just add the base wxPython source
264 directory to the PYTHONPATH:
265
266 set PYTHONPATH=c:\wx2\wxPython
267 cd c:\wx2\wxPython\demo
268 python demo.py
269
270
271That's all folks!
272
273
274-----------------
275robin@alldunn.com
276