]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/msw/install.txt
repositioning the cursor with mouse clicks works
[wxWidgets.git] / docs / msw / install.txt
index bce03f2bcd363f343596a3389af328578fe27fa0..98481fb68fa1472adf3665efc4129b627546f090 100644 (file)
@@ -2,6 +2,12 @@
 Installing wxWindows 2.0
 ------------------------
 
 Installing wxWindows 2.0
 ------------------------
 
+IMPORTANT NOTE: If you experience problems installing, please
+re-read this instructions and other related files (todo.txt,
+bugs.txt etc.) carefully before mailing wxwin-users or
+the author. Preferably, try to fix the problem first and
+then send a patch to the author.
+
 Unarchiving
 -----------
 
 Unarchiving
 -----------
 
@@ -20,18 +26,33 @@ wx200pdf.zip            Acrobat PDF documentation
 wx200htm.zip            HTML documentation
 wx200vc.zip             MS VC++ 5.0 project files
 wx200cw.zip             Metrowerks CodeWarrior project files
 wx200htm.zip            HTML documentation
 wx200vc.zip             MS VC++ 5.0 project files
 wx200cw.zip             Metrowerks CodeWarrior project files
+wx200bc.zip             BC++ 5 project files
 
 Unarchive the required files plus any optional documentation
 
 Unarchive the required files plus any optional documentation
-files into a suitable directory such as c:\wx. Alter your
-WXWIN environment variable to point to this directory.
+files into a suitable directory such as c:\wx.
+
+Other add-on packages are available from the wxWindows Web site, such as:
+
+- glcanvas.zip. Use OpenGL in a wxWindows window.
+- ogl3.zip. Object Graphics Library: build network diagrams, CASE tools etc.
+- tex2rtf3.zip. Tex2RTF: create Windows Help, HTML, and Word RTF files from
+  the same document source.
+
+General installation notes
+--------------------------
+
+Alter your WXWIN environment variable to point to this directory.
+For Cygwin or Mingw32 compilation, make sure WXWIN contains only
+forward slashes.
+
+If installing from the CVS server, copy include/wx/msw/setup0.h to
+include/wx/msw/setup.h.
 
 Compilation
 -----------
 
 
 Compilation
 -----------
 
-At present, wxWindows compiles with VC++ 4.0/5.0/6.0,
-BC++ 4.5/5.0, Gnu-Win32 b19/b20, and Mingw32. It may compile
-with 16-bit compilers (BC++ and VC++ 1.5) but this hasn't
-been tested lately.
+The following sections explain how to compile wxWindows with each supported
+compiler.
 
 Visual C++ 4.0/5.0/6.0 compilation
 ----------------------------------
 
 Visual C++ 4.0/5.0/6.0 compilation
 ----------------------------------
@@ -40,7 +61,10 @@ Using project files:
 
 1. Unarchive wx200vc.zip, the VC++ 5 project makefiles.
 2. Open src/wxvc.dsp, set Debug or Release configuration, and
 
 1. Unarchive wx200vc.zip, the VC++ 5 project makefiles.
 2. Open src/wxvc.dsp, set Debug or Release configuration, and
-   compile. This will produce lib/wxvc.lib or lib/wxvc_debug.lib.
+   compile. This will produce src/Debug/wxvc.lib or
+   src/Release/wxvc.lib.  The project file src/wxvc_dll.dsp
+   will make a DLL version of wxWindow, which will go in
+   src/DebugDLL/wxvc.[lib,dll] and src/ReleaseDLL/wxvc.[lib,dll].
 3. Open a sample project file, choose a configuration, and compile.
    The project files don't use precompiled headers, to save
    space, but you can switch PCH compiling on for greater speed.
 3. Open a sample project file, choose a configuration, and compile.
    The project files don't use precompiled headers, to save
    space, but you can switch PCH compiling on for greater speed.
@@ -48,20 +72,78 @@ Using project files:
 Using makefiles:
 
 1. Make sure your WXWIN variable is set.
 Using makefiles:
 
 1. Make sure your WXWIN variable is set.
-2. Change directory to wx\src\msw. Type 'nmake -f makefile.nt' to
-   make the wxWindows core library.
-3. Change directory to wx\samples and type 'nmake -f makefile.nt'
+2. Change directory to wx\src\msw. Type:
+
+  'nmake -f makefile.vc'
+
+   to make the wxWindows core library with debug information
+   (wx\lib\wx_d.lib), or
+
+  'nmake -f makefile.vc FINAL=1'
+
+   to make the wxWindows core library without debug information
+   (wx\lib\wx.lib).
+
+3. Change directory to wx\samples and type 'nmake -f makefile.vc'
    to make all the samples. You can also make them individually.
 
    to make all the samples. You can also make them individually.
 
+Notes:
+
+  Use the 'clean' target to clean all objects, libraries and
+  executables.
+
+  To build the release version using makefiles, add FINAL=1 to your
+  nmake invocation, both when building the library and for samples.
+
+  Note that the wxWindows core library allows you to have debug
+  and release libraries available simultaneously, by compiling the
+  objects in different subdirectories, whereas samples must be
+  cleaned and re-made to build a different configuration. This
+  may be changed in later versions of wxWindows.
+
+To build the DLL version using makefiles:
+
+1. Change directory to wx\src\msw. Type 'nmake -f makefile.vc dll pch'
+   to make both a suitable DLL and import library, and to build a
+   suitable precompiled header file for compiling applications.
+   The resulting libraries are called:
+
+      wx\lib\wx200_d.lib(dll) (debug version)
+      wx\lib\wx200.lib(dll)   (release version, using FINAL=1)
+
+2. Invoke a sample makefile with 'nmake -f makefile.vc WXUSINGDLL=1'
+   (or edit src\makeprog.vc to set WXUSINGDLL to 1 for all
+   applications).
+
 Note (1): if you wish to use templates, please edit
 include\wx\msw\setup.h and set wxUSE_DEBUG_NEW_ALWAYS to 0.
 Without this, the redefinition of 'new' will cause problems in
 the headers. Alternatively, #undef new before including template headers.
 Note (1): if you wish to use templates, please edit
 include\wx\msw\setup.h and set wxUSE_DEBUG_NEW_ALWAYS to 0.
 Without this, the redefinition of 'new' will cause problems in
 the headers. Alternatively, #undef new before including template headers.
+You will also need to set wxUSE_IOSTREAMH to 0 if you will be
+using templates, to avoid the non-template stream files being included
+within wxWindows.
 
 Note (2): libraries and applications generated with makefiles and
 project files are unlikely to be compatible, so use one method or
 the other.
 
 
 Note (2): libraries and applications generated with makefiles and
 project files are unlikely to be compatible, so use one method or
 the other.
 
+Note (3): VC++ 5's optimization code seems to be broken and can
+cause problems: this can be seen when deleting an object Dialog
+Editor, in Release mode with optimizations on. If in doubt,
+switch off optimisations, although this will result in much
+larger executables. It seems possible that the library can be created with
+strong optimization, so long as the application is not strongly
+optimized. For example, in wxWindows project, set to 'Minimum
+Size'. In Dialog Editor project, set to 'Customize: Favor Small
+Code' (and no others). This will then work.
+
+Note (4): some crash problems can be due to inconsistent compiler
+options. If strange/weird/impossible things start to happen please
+check (dumping IDE project file as makefile and doing text comparison
+if necessary) that the project settings, especially the list of defined
+symbols, struct packing, etc. are exactly the same for all items in
+the project. After this, delete everything (including PCH) and recompile.
+
 Visual C++ 1.5 compilation
 --------------------------
 
 Visual C++ 1.5 compilation
 --------------------------
 
@@ -72,9 +154,17 @@ Visual C++ 1.5 compilation
 3. Change directory to a sample, such as wx\samples\minimal, and
    type 'nmake -f makefile.dos'.
 
 3. Change directory to a sample, such as wx\samples\minimal, and
    type 'nmake -f makefile.dos'.
 
+Add FINAL=1 to your makefile invocation to build the release
+versions of the library and samples.
+
+Use the 'clean' target to clean all objects, libraries and
+executables.
+
 Borland C++ 4.5/5.0 compilation
 -------------------------------
 
 Borland C++ 4.5/5.0 compilation
 -------------------------------
 
+Compiling using the makefiles:
+
 1. Make sure your WXWIN variable is set, and uses the FAT (short
    name) form if doing a 16-bit compile.
 2. Change directory to wx\src\msw. Type 'make -f makefile.b32' to
 1. Make sure your WXWIN variable is set, and uses the FAT (short
    name) form if doing a 16-bit compile.
 2. Change directory to wx\src\msw. Type 'make -f makefile.b32' to
@@ -91,6 +181,27 @@ Note: the wxWindows library and (some) samples compile in 16-bit mode
 using makefile.bcc, but at present the wxWindows resource system is switched
 off in this mode. See issues.txt for details.
 
 using makefile.bcc, but at present the wxWindows resource system is switched
 off in this mode. See issues.txt for details.
 
+Compiling using the IDE files:
+
+1. Load src\bc32.ide (or src\bc32d.ide for a debugging version).
+2. Go to Options|Project... and specify the correct BC++ include and lib path for
+   your file structure.
+3. Press F9 to compile the wxWindows library.
+4. Load samples\bc32.ide.
+5. Go to Options|Project... and specify the correct BC++ include and lib path for
+   your file structure.
+6. Press F9 to compile the samples.
+
+Note that to make the png, xpm and zlib libraries (needed for
+some samples) you need to compile with bc32.ide. bc32d.ide only
+makes the wxWindows library (lib\wx32d.lib).
+
+The debug version of the wxWindows library is about 37 MB, and the
+release version is around 3 MB.
+
+See also the file bc_ide.txt for further instructions and details
+of how to create your own project files.
+
 Borland C++Builder compilation
 ------------------------------
 
 Borland C++Builder compilation
 ------------------------------
 
@@ -102,8 +213,8 @@ supplied.
 Watcom C++ 10.6 compilation
 ---------------------------
 
 Watcom C++ 10.6 compilation
 ---------------------------
 
-1. Make sure your WXWIN variable is set, and uses the FAT (short
-   name) form.
+1. Make sure your WXWIN variable is set, and uses the DOS short
+   name form.
 2. Change directory to wx\src\msw. Type 'wmake -f makefile.wat' to
    make the wxWindows core library.
 3. Change directory to wx\samples\minimal and type 'wmake -f makefile.wat'
 2. Change directory to wx\src\msw. Type 'wmake -f makefile.wat' to
    make the wxWindows core library.
 3. Change directory to wx\samples\minimal and type 'wmake -f makefile.wat'
@@ -118,6 +229,11 @@ Metrowerks CodeWarrior compilation
    Further project files for samples will be available in due
    course.
 
    Further project files for samples will be available in due
    course.
 
+NOTES:
+
+You need CodeWarrior Pro 4 plus the patches to 4.1 from the
+Metrowerks Web site.
+
 Symantec C++ compilation
 ------------------------
 
 Symantec C++ compilation
 ------------------------
 
@@ -155,26 +271,29 @@ the debugging version of the library is 90MB, with samples coming in
 at 40MB :-) However, wxWindows at least makes a good test suite for
 improving the compiler.
 
 at 40MB :-) However, wxWindows at least makes a good test suite for
 improving the compiler.
 
-Gnu-Win32 b19/b20/Mingw32 compilation
--------------------------------------
+Cygwin b19/b20/Mingw32 compilation
+----------------------------------
 
 
-wxWindows 2.0 supports Gnu-Win32/Cygwin b19, b20, Mingw32, and Mingw32/EGCS.
+wxWindows 2.0 supports Cygwin (formerly GnuWin32) b19, b20, Mingw32, and Mingw32/EGCS.
 
 Thanks are due to Keith Garry Boyce (garp@opustel.com) and Cygnus for making
 it all possible.
 
 
 Thanks are due to Keith Garry Boyce (garp@opustel.com) and Cygnus for making
 it all possible.
 
-From wxWindows 2.0 beta 9, both Gnu-Win32 and Mingw32 (the minimal
-distribution of Gnu-Win32) can be used with the same makefiles.
+From wxWindows 2.0 beta 9, both Cygwin and Mingw32 (the minimal
+distribution of Cygwin) can be used with the same makefiles.
 
 Here are the steps required:
 
 
 Here are the steps required:
 
-- Retrieve and install the latest beta of Gnu-Win32, or Mingw32, as per the
+- Retrieve and install the latest beta of Cygwin, or Mingw32, as per the
   instructions with either of these packages.
 
 - If using Mingw32 (including the EGCS variant), you need some
   extra files to use the wxWindows makefiles. You can find these
   files in ports/mingw32 on the ftp site or CD-ROM, as extra.zip.
   These should be extracted to the Mingw32 directory.
   instructions with either of these packages.
 
 - If using Mingw32 (including the EGCS variant), you need some
   extra files to use the wxWindows makefiles. You can find these
   files in ports/mingw32 on the ftp site or CD-ROM, as extra.zip.
   These should be extracted to the Mingw32 directory.
+  If you have already have downloaded bison, flex, make, rm, mv
+  from elsewhere, you won't need this.
+
   IMPORTANT: also see mingw32.txt in this directory (docs/msw)
   about a fix that has to be applied to a Mingw32 header file.
 
   IMPORTANT: also see mingw32.txt in this directory (docs/msw)
   about a fix that has to be applied to a Mingw32 header file.
 
@@ -182,18 +301,23 @@ Here are the steps required:
   to set up appropriate variables, if necessary mounting drives.
   Run it before compiling.
 
   to set up appropriate variables, if necessary mounting drives.
   Run it before compiling.
 
-- For Gnu-Win32, make sure there's a \tmp directory on your
+- For Cygwin, make sure there's a \tmp directory on your
   Windows drive or bison will crash.
 
 - Edit wx/src/makeg95.env and search for MINGW32. Take note of
   Windows drive or bison will crash.
 
 - Edit wx/src/makeg95.env and search for MINGW32. Take note of
-  the comments for adjusting settings to suit Gnu-Win32 or
+  the comments for adjusting settings to suit Cygwin or
   Mingw32. Basically, this is just a case of adding the __MINGW32__ symbol
   Mingw32. Basically, this is just a case of adding the __MINGW32__ symbol
-  to OPTIONS for Mingw32, or removing it for Cygnus Gnu-Win32.
+  to OPTIONS for Mingw32, or removing it for Cygnus Cygwin.
   For Mingw32/EGCS, add both __MINGW32__ and __EGCS__.
   For Mingw32/EGCS, add both __MINGW32__ and __EGCS__.
+  You may need to remove -loldnames from WINLIBS for Mingw32, or add it for
+  Cygwin.
 
 - Mingw32 may not support winsock.h, so comment out
   socket-related files in src/msw/makefile.g95.
 
 
 - Mingw32 may not support winsock.h, so comment out
   socket-related files in src/msw/makefile.g95.
 
+- Set your WXWIN variable to where wxWindows is installed.
+  For Cygwin/Mingw32, use forward slashes in the path, not backslashes.
+
 - Use the makefile.g95 files for compiling wxWindows and samples,
   e.g.:
   > cd c:\wx\src\msw
 - Use the makefile.g95 files for compiling wxWindows and samples,
   e.g.:
   > cd c:\wx\src\msw
@@ -201,9 +325,11 @@ Here are the steps required:
   > cd c:\wx\samples\minimal
   > make -f makefile.g95
 
   > cd c:\wx\samples\minimal
   > make -f makefile.g95
 
+  Ignore the warning about the default entry point.
+
 - Use the 'strip' command to reduce executable size.
 
 - Use the 'strip' command to reduce executable size.
 
-- With Cygnus Gnu-Win32, you can invoke gdb --nw myfile.exe to
+- With Cygnus Cygwin, you can invoke gdb --nw myfile.exe to
   debug an executable. If there are memory leaks, they will be
   flagged when the program quits.
 
   debug an executable. If there are memory leaks, they will be
   flagged when the program quits.
 
@@ -213,15 +339,29 @@ Here are the steps required:
 All targets have 'clean' targets to allow removal of object files
 and other intermediate compiler files.
 
 All targets have 'clean' targets to allow removal of object files
 and other intermediate compiler files.
 
-Gotchas:
+Notes:
 
 - libwx.a is 48 MB or more - but much less if compiled with no
   debug info (-g0) and level 4 optimization (-O4).
 
 - libwx.a is 48 MB or more - but much less if compiled with no
   debug info (-g0) and level 4 optimization (-O4).
+
 - install.exe doesn't have built-in decompression because lzexpand.lib
 - install.exe doesn't have built-in decompression because lzexpand.lib
-  isn't available with Gnu-Win32. However, you can use it with external
+  isn't available with Cygwin. However, you can use it with external
   decompression utilities.
   decompression utilities.
+
 - Doesn't compile src/msw/ole files, so no drag and drop.
 
 - Doesn't compile src/msw/ole files, so no drag and drop.
 
+- There's a bug in the Mingw32 headers for some distributions.
+
+  in include/windows32/defines.h, where it says:
+
+  #define LPSTR_TEXTCALLBACKA (LPSTR)-1L)
+
+  it should say:
+
+  #define LPSTR_TEXTCALLBACKA ((LPSTR)-1L)
+
+  (a missing bracket).
+
 References:
 
  - The GNU-WIN32 site is at
 References:
 
  - The GNU-WIN32 site is at
@@ -242,8 +382,11 @@ a tool for writing products with.
 Use makefile.twn in much the same way as makefile.g95, as
 described above. Not all sample makefiles are supplied yet.
 
 Use makefile.twn in much the same way as makefile.g95, as
 described above. Not all sample makefiles are supplied yet.
 
-Notes
------
+For some reason, I found I had to copy TWIN32's Windows resource
+compiler (rc) to the current working directory for it to be found.
+
+General Notes
+-------------
 
 - Debugging: under Windows 95, debugging output isn't output in
   the same way that it is under NT or Windows 3.1. Set
 
 - Debugging: under Windows 95, debugging output isn't output in
   the same way that it is under NT or Windows 3.1. Set
@@ -255,3 +398,7 @@ Notes
 
   and it's also on the wxWindows CD-ROM under Packages.
 
 
   and it's also on the wxWindows CD-ROM under Packages.
 
+- If you are installing wxWindows 2 from CVS, you may find that
+  include/wx/msw/setup.h is missing. This is deliberate, to avoid
+  developers' different setup.h configurations getting confused.
+  Please copy setup0.h to setup.h before compiling.