Unarchiving
------------
+===========
A setup program is provided (setup.exe) to automatically copy
files to a directory on your hard disk. Do not install into a
General installation notes
---------------------------
+==========================
If installing from the CVS server, copy include/wx/msw/setup0.h to
include/wx/msw/setup.h and edit the resulting file to choose
compilation or DLL compilation, and each of these available in
Unicode/ANSI, Debug/Release and wxUniversal or native variations.
Normally you'll use a static linking ANSI configuration.
- Choose the Win32 Debug or Win32 Release configuration for the wxWindows
- project, and compile. Alternatively, use Batch Build to build more than
- one configuration. It will also produce similar variations on jpeg.lib,
+ Choose the Win32 Debug or Win32 Release configuration (or any other that
+ suits your needs) and use Batch Build to compile _all_ projects. If you
+ know you won't need some of the libraries (i.e. html part), you don't have
+ to compile it. It will also produce similar variations on jpeg.lib,
png.lib, tiff.lib, zlib.lib, and regex.lib.
+ If you want to build DLLs, you have to either build them one by one in
+ proper order (jpeg, png, tiff, zlib, regex, expat, base, core, the rest
+ in any order) or to use wx_dll.dsw workspace which has correct dependencies.
3. Open a sample project file, choose a configuration such as
Win32 Debug using Build | Set Active Configuration..., and compile.
The project files don't use precompiled headers, to save disk
Using makefiles:
-1. If you do NOT have the TIFF or JPEG source code, please remove
- the tiff and jpeg targets from the 'all' target in
- src\msw\makefile.vc. Also ensure the settings in
- include\wx\msw\setup.h specify not to use JPEG or TIFF.
-2. Change directory to build\msw. Type:
+1. Change directory to build\msw. Type:
'nmake -f makefile.vc'
to make the wxWindows core library as release DLL.
See "Configuring the build" for instruction how to build debug or static
libraries.
-3. Change directory to samples and type 'nmake -f makefile.vc'
+2. Change directory to samples and type 'nmake -f makefile.vc'
to make all the samples. You can also make them individually.
Makefile notes:
1. Change directory to build\msw. Type 'wmake -f makefile.wat' to
make the wxWindows core library.
-2. Change directory to wx\samples\minimal and type 'wmake -f makefile.wat'
+2. Change directory to samples\minimal and type 'wmake -f makefile.wat'
to make this sample. Repeat for other samples of interest.
and other intermediate compiler files.
Using configure
-===============
+---------------
Instead of using the makefiles, you can use the configure
system to generate appropriate makefiles, as used on Unix
Symantec & DigitalMars C++ compilation
-------------------------
+--------------------------------------
The DigitalMars compiler is a free succssor to the Symantec compiler
and can be downloaded from http://www.digitalmars.com/
2. Change directory to build\msw. Type 'make -f makefile.dm' to
make the wxWindows core library.
-3. Change directory to wx\samples\minimal and type 'make -f makefile.dm'
+3. Change directory to samples\minimal and type 'make -f makefile.dm'
to make this sample. The mdi and image sample also work; others may give
linker erros due to missing libraries
Configuring the build
=====================
- CONFIGURING THE BUILD
+So far the instructions only explained how to build release DLLs of wxWindows
+and did not cover any configuration. It is possible to change many aspects of
+the build, including debug/release and ANSI/Unicode settings. All makefiles in
+build\msw directory use same options (with a few exceptions documented below)
+and the only difference between them is in object files and library directory
+names and in make invocation command.
+Changing the settings
+---------------------
- To build Unicode versions of the libraries, add UNICODE=1
- to the nmake invocation (default is UNICODE=0). If you want to
- be able to use Unicode version on Windows9x, you will need
- MSLU (Microsoft Layer for Unicode) runtime DLL and import lib.
- The former can be downloaded from Microsoft, the latter is part
- of the latest Platform SDK from Microsoft (see msdn.microsoft.com
- for details). An alternative implementation of import library can
- be downloaded from http://libunicows.sourceforge.net - unlike the
- official one, this one works with other compilers and does not
- require 300+ MB Platform SDK update. Add MSLU=1 to the nmake
- invocation to enable MSLU.
+There are two ways to modify the settings: either by passing the values as
+arguments when invoking make or by editing build\msw\config.$(compiler) file
+where $(compiler) is same extension as the makefile you use has (see below).
+The latter is good for setting options that never change in your development
+process (e.g. GCC_VERSION or VENDOR). If you want to build several versions of
+wxWindows and use them side by side, the former method is better. Settings in
+config.* files are shared by all makefiles (samples, contrib, main library),
+but if you pass the options as arguments, you must use same arguments you used
+for the library when building samples or contrib libraries!
+Examples of invoking make in Unicode debug build (other options described
+below are set analogically):
-General Notes
+Visual C++:
+ > nmake -f makefile.vc BUILD=debug UNICODE=1
+
+Borland C++:
+ > nmake -f makefile.bcc -DBUILD=debug -DUNICODE=1
+ (Note that you have to use -D to set the variable, unlike in other make
+ tools!)
+
+Watcom C/C++:
+ > wmake -f makefile.wat BUILD=debug UNICODE=1
+
+MinGW using native makefiles:
+ > mingw32-make -f makefile.gcc BUILD=debug UNICODE=1
+
+MinGW using configure or Cygwin:
+ > ./configure --enable-debug --enable-unicode
+ (see ./configure --help on details; configure is not covered in this
+ section)
+
+Brief explanation of options and possible values is in every
+build\msw\config.* file; more detailed description follows.
+
+Basic options
-------------
+BUILD=debug
+ Builds debug version of the library (default is 'release'). This affects
+ name of the library ('d' is appended), __WXDEBUG__ is defined and debug
+ information compiled into object files and the executable.
+
+SHARED=0
+ Build static libraries instead of DLLs. By default, DLLs are build
+ (SHARED=1).
+
+UNICODE=1
+ To build Unicode versions of the libraries, add UNICODE=1 to make invocation
+ (default is UNICODE=0). If you want to be able to use Unicode version on
+ Windows9x, you will need to set MSLU=1 as well.
+
+ This option affect name of the library ('u' is appended) and the directory
+ where the library and setup.h are store (ditto).
+
+WXUNIV=1
+ Build wxUniversal instead of native wxMSW (see
+ http://www.wxwindows.org/wxuniv.htm for more information).
+
+Advanced options
+----------------
+
+MONOLITHIC=1
+ Starting with version 2.5.0, wxWindows has the ability to be built as
+ several smaller libraries instead of single big one as used to be the case
+ in 2.4 and older versions. This is called "multilib build" and is the
+ default behaviour of makefiles. You can still build single library
+ ("monolithic build") by setting MONOLITHIC variable to 1.
+
+USE_GUI=0
+ Disable building GUI parts of the library, build only wxBase components used
+ by console applications. Note that if you leave USE_GUI=1 then both wxBase
+ and GUI libraries are built. If you are building monolithic library, then
+ you should set wxUSE_GUI to 1 in setup.h.
+
+USE_OPENGL=1
+ Build wxmsw25_gl.lib library with OpenGL integration class wxGLCanvas.
+ You must also modify your setup.h to #define wxUSE_GLCANVAS 1. Note that
+ OpenGL library is always built as additional library, even in monolithic
+ build!
+
+USE_ODBC=1
+ Build two additional libraries in multilib mode, one with database
+ classes and one with wxGrid database support. You must
+ #define wxUSE_ODBC 1 in setup.h
+
+USE_HTML=0
+ Do not build wxHTML library. If MONOLITHIC=1, then you must also
+ #define wxUSE_HTML 1 in setup.h.
+
+RUNTIME_LIBS=static
+ Links static version of C and C++ runtime libraries into the executable, so
+ that the program does not depend on DLLs provided with the compiler (e.g.
+ Visual C++'s msvcrt.dll or Borland's cc3250mt.dll).
+ Caution: Do not use static runtime libraries when building DLL (SHARED=1)!
+
+MSLU=1
+ Enables MSLU (Microsoft Layer for Unicode). This setting makes sense only if
+ used together with UNICODE=1. If you want to be able to use Unicode version
+ on Windows9x, you will need MSLU (Microsoft Layer for Unicode) runtime DLL
+ and import lib. The former can be downloaded from Microsoft, the latter is
+ part of the latest Platform SDK from Microsoft (see msdn.microsoft.com for
+ details). An alternative implementation of import library can be downloaded
+ from http://libunicows.sourceforge.net - unlike the official one, this one
+ works with other compilers and does not require 300+ MB Platform SDK update.
+
+DEBUG_FLAG=0
+DEBUG_FLAG=1
+ If set to 1, define __WXDEBUG__ symbol, append 'd' to library name and do
+ sanity checks at runtime. If set to 0, don't do it. By default, this is
+ governed by BUILD option (if 'debug', DEBUG_FLAG=1, if 'release' it is 0),
+ but it is sometimes desirable to modify default behaviour and e.g. define
+ __WXDEBUG__ even in release builds.
+
+DEBUG_INFO=0
+DEBUG_INFO=1
+ Same as DEBUG_FLAG in behaviour, this option affects whether debugging
+ information is included in the executable or not.
+
+VENDOR=<your company name>
+ Set this to a short string identifying your company if you are planning to
+ distribute wxWindows DLLs with your application. Default value is 'custom'.
+ This string is included as part of DLL name. wxWindows DLLs contain compiler
+ name, version information and vendor name in them. For example
+ wxmsw250_core_bcc_custom.dll is one of DLLs build using Borland C++ with
+ default settings. If you set VENDOR=mycorp, the name will change to
+ wxmsw250_core_bcc_mycorp.dll.
+
+CFG=<configuration name>
+ Sets configuration name so that you can have multiple wxWindows build with
+ different setup.h settings coexisting in same tree. See "Object and library
+ directories" below for more information.
+
+Compiler specific options
+-------------------------
+
+* MinGW
+
+If you are using gcc-2.95 instead of gcc3, you must set GCC_VERSION to
+2.95. In build\msw\config.gcc, change
+> GCC_VERSION = 3
+to
+> GCC_VERSION = 2.95
+
+* Visual C++
+
+DEBUG_RUNTIME_LIBS=0
+DEBUG_RUNTIME_LIBS=1
+ If set to 1, msvcrtd.dll is used, if to 0, msvcrt.dll is used. By default
+ msvcrtd.dll is used only if the executable contains debug info and
+ msvcrt.dll if it doesn't. It is sometimes desirable to build with debug info
+ and still link against msvcrt.dll (e.g. when you want to ship the app to
+ customers and still have usable .pdb files with debug information) and this
+ setting makes it possible.
+
+Fine-tuning the compiler
+------------------------
+
+All makefiles have variables that you can use to specify additional options
+passed to the compiler or linker. You won't need this in most cases, but if you
+do, simply add desired flags to CFLAGS (for C compiler), CXXFLAGS (for C++
+compiler), CPPFLAGS (for both C and C++ compiler) and LDFLAGS (the linker).
+
+Object and library directories
+------------------------------
+
+All object files produced during library build are stored in a directory under
+build\msw. It's name is derived from build settings and CFG variable and from
+compiler name. Examples of directory names:
+
+ build\msw\bcc_msw SHARED=0
+ build\msw\bcc_mswdll SHARED=1
+ build\msw\bcc_mswunivd SHARED=0, WXUNIV=1, BUILD=debug
+ build\msw\vc_mswunivd ditto, with Visual C++
+
+Libraries and DLLs are copied into subdirectory of lib directory with same
+name as the build\msw subdirectory used for object files:
+
+ lib\bcc_msw
+ lib\bcc_mswdll
+ lib\bcc_mswunivd
+ lib\vc_mswunivd
+
+Each lib\ subdirectory has wx subdirectory with setup.h. This file is copied
+there from include\wx\msw\setup.h (and if it doesn't exist, from
+include\wx\msw\setup0.h) and this is the copy of setup.h that is used by all
+samples and should be used by your apps as well. If you are doing changes to
+setup.h, you should do them in this file, _not_ in include\wx\msw\setup.h.
+
+If you set CFG to something, the value is appended to directory names. E.g.
+for CFG=MyBuild, you'll have object files in
+
+ build\msw\bcc_mswMyBuild
+ build\msw\bcc_mswdllMyBuild
+ etc.
+
+and libraries in
+
+ lib\bcc_mswMyBuild
+ lib\bcc_mswdllMyBuild
+ etc.
+
+By now it is clear for CFG is for: builds with different CFG settings don't
+share any files and they use different setup.h files. This allows you to e.g.
+have two static debug builds, one with wxUSE_SOCKETS=0 and one with sockets
+enabled (without CFG, both of them would be put into same directory and there
+would be conflict between the files).
+
+
+General Notes
+=============
+
- Debugging: under Windows 95, debugging output isn't output in
the same way that it is under NT or Windows 3.1.
Please see DebugView (bin/dbgview.exe in the distribution), also