]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/msw/install.txt
supporting alignment in single line controls, see #14452
[wxWidgets.git] / docs / msw / install.txt
index 7654a461bc6e1159532ed95385d64ef171b8475f..c6293f691c95d28ba92e23171f844583b0a1ddb5 100644 (file)
@@ -24,41 +24,51 @@ fixing the problems so this ensures that your report will be
 addressed sooner.
 
 
-Unarchiving
-============================================================
+Table of Contents:
+ - Installation
+ - Building wxWidgets
+ - Configuring the Build
+ - Building Applications Using wxWidgets
 
-A setup program is provided (wxMSW-x.x.x-setup.exe) to automatically copy
-files to a directory on your hard disk. Do not install into a
-path that contains spaces.
 
-The setup program contains the following:
+Installation
+============
 
-- All common, generic and MSW-specific wxWidgets source;
-- samples and demos;
-- documentation in MS HTML Help format;
-- makefiles for most Windows compilers, plus CodeWarrior
-  and VC++ IDE files;
-- JPEG, TIFF, PNG, ZLIB, wxSTC, REGEX, EXPAT library sources.
+Please simply uncompress the .zip file manually into any directory.
+However we advise avoiding using directories with spaces in their
+names (notably "C:\Program Files") as this risks creating problems
+with makefiles and other command-line tools.
 
-Alternatively, you may unarchive the .zip form by hand:
-wxMSW-x.y.z.zip where x.y.z is the version number.
 
-Unarchive the required files plus any optional documentation
-files into a suitable directory such as c:\wx.
+In the majority of cases, you don't need to change the default
+library build configuration. If you wish to change some of the build
+options you need to edit the include/wx/msw/setup.h file enabling or
+disabling the features you would like to compile wxWidgets with[out].
 
-General installation notes
-==========================
+NB: If you checked your sources from version control repository and
+    didn't obtain them from a release file, the file above doesn't
+    exist and you will need to copy include/wx/msw/setup0.h to
+    include/wx/msw/setup.h.
 
-If installing from the SVN server, copy include/wx/msw/setup0.h to
-include/wx/msw/setup.h and edit the resulting file to choose
-the features you would like to compile wxWidgets with[out].
+Notice that this file is later copied into a directory under lib for
+each of the build configurations which allows to have different
+build options for different configurations too.
 
-Compilation
-===========
+See "Configuring the Build" section for more information.
+
+
+Building wxWidgets
+==================
 
 The following sections explain how to compile wxWidgets with each supported
-compiler. Search for one of Microsoft/Borland/Watcom/Symantec/Metrowerks/
-Cygwin/Mingw32 to quickly locate the instructions for your compiler.
+compiler, see the "Building Applications" section about the instructions for
+building your application using wxWidgets.
+
+Search for one of Microsoft/Borland/Watcom/Symantec/Cygwin/Mingw32 keywords
+to quickly locate the instructions for your compiler. Notice that the primary
+compilers for wxWidgets under MSW are Microsoft Visual C++ and GNU g++, other
+compilers are more rarely tested and might not work so please consider using
+one of these two if possible.
 
 All makefiles and project are located in build\msw directory.
 
@@ -144,8 +154,7 @@ Using project files (VC++ 6 and later):
    Alternatively, use the special wx_dll.dsw project which adds the
    dependencies to force the correct order (but, because of this, doesn't work
    for the static libraries) or simply redo the build several times until all
-   DLLs are linked correctly. Please notice that it's normal that dbgrid project
-   doesn't build if wxUSE_ODBC is set to 0 (default).
+   DLLs are linked correctly.
 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
@@ -302,12 +311,7 @@ make sure that your own project or makefile settings use the
 same alignment, or you could experience mysterious crashes. To
 change the alignment, change CPPFLAGS in build\msw\config.bcc.
 
-Note (2): if you get undefined _SQL... symbols at link time,
-either install odbc32.lib from the BC++ CD-ROM into your BC++ lib
-directory, or set wxUSE_ODBC to 0 in include\wx\msw\setup.h and
-recompile wxWidgets. The same applies if compiling using the IDE.
-
-Note (3): If you wish debug messages to be sent to the console in
+Note (2): If you wish debug messages to be sent to the console in
 debug mode, edit makefile.bcc and change /aa to /Tpe in link commands.
 
 Using the Debugger and IDE in BDS or Turbo Explorer
@@ -357,98 +361,24 @@ Watcom C++ 10.6/11 and OpenWatcom Compilation
 2. Change directory to samples\minimal and type 'wmake -f makefile.wat'
    to make this sample. Repeat for other samples of interest.
 
-Note (1): if your installation of Watcom doesn't have odbc32.lib file and
-          you need it (i.e. you have wxUSE_ODBC=1), you can use the file
-          from lib\watcom directory. See the notes in that directory.
-
-Note (2): if variant.cpp is compiled with date/time class options, the linker
+Note (1): if variant.cpp is compiled with date/time class options, the linker
           gives up. So the date/time option is switched off for Watcom C++.
           Also, wxAutomationObject is not compiled with Watcom C++ 10.
 
-Note (3): RawBitmaps won't work at present because they use unsupported template
+Note (2): RawBitmaps won't work at present because they use unsupported template
           classes
 
-Note (4): if Watcom can't read the precompiled header when building a sample,
+Note (3): if Watcom can't read the precompiled header when building a sample,
           try deleting .pch files in build\msw\wat_* and compiling
           the sample again.
 
-Note (5): wxUSE_STD_STRING is disabled in wx/string.h for Watcom as this
+Note (4): wxUSE_STD_STRING is disabled in wx/string.h for Watcom as this
           compiler doesn't come with standard C++ library headers by default.
           If you install STLPort or another STL implementation, you'll need to
           edit wx/string.h and remove the check for Digital Mars in it (search
           for __WATCOM__).
 
 
-Metrowerks CodeWarrior Compilation
-----------------------------------------------------------------
-
-** NOTE: We don't use Metrowerks compiler any more and so depend on
-**       your contributions to keep it up to date. It is possible that
-**       the project files mentioned below are out of date due to recently
-**       added files, please add them manually if you get linking errors.
-**       The authoritative list of files is in build/bakefiles/files.bkl
-
-1. CodeWarrior Pro 7 project files in XML format are already
-   included in wxMSW-2.8.x.zip and the setup version.
-
-2. Review the file include\wx\msw\setup.h (or include\wx\msw\setup0.h if
-   you are working from the SVN version) to make sure the settings reflect
-   what you want.  If you aren't sure, leave it alone and go with the
-   default settings.  A few notes:
-       - Don't use wxUSE_DEBUG_NEW_ALWAYS: it doesn't mix well with MSL
-       - wxUSE_GLOBAL_MEMORY_OPERATORS works, but memory leak reports
-         will be rather confusing due to interactions with the MSL ANSI
-         and runtime libs.
-
-3. The project file to build the Win32 wxWidgets libraries relies on the
-   Batch File Runner plug-in. This plug-in is not installed as part of
-   a normal CW7 installation. However, you can find this plug-in on the
-   CodeWarrior Reference CD, in the Thrill Seekers folder; it's called the
-   "Batch File Post Linker".
-
-4. If you choose not to install the Batch File Runner plug-in, then you
-   need to do the following by hand:
-      (1) Create the directories lib\cw7msw\include\wx and copy the file
-          include\wx\msw\setup.h (or include\wx\msw\setup0.h if you are
-          working from the SVN version) to lib\cw7msw\include\wx\setup.h
-      (2) Create the directories lib\cw7mswd\include\wx and copy the file
-          include\wx\msw\setup.h (or include\wx\msw\setup0.h if you are
-          working from the SVN version) to lib\cw7mswd\include\wx\setup.h
-
-5. Import src\wxWidgetsW7.xml to create the project file wxWidgetsW7.mcp.
-   Store this project file in directory src.  You may get warnings about
-   not being able to find certain project paths; ignore these warnings, the
-   appropriate paths will be created during the build by the Batch File Runner.
-
-6. Choose the wxlib Win32 debug or wxlib Win32 Release target and build.  You
-   will get some warnings about hidden virtual functions, illegal conversions
-   from const pointers to pointers, etc., all of which you can safely ignore.
-   ***Note:  if you get errors that the compiler can't find "wx/setup.h", just
-   stop the build and build again.  These errors occur because sometimes the
-   compiler starts doing its thing before the copying of setup.h has completed.
-
-7. The following libraries will be produced depending on chosen
-   target:
-       - wx_x86.lib             ANSI Release (static)
-       - wx_x86_d.lib           ANSI Debug (static)
-
-8. Sorry, I haven't had time yet to create and test Unicode or DLL versions.
-   Volunteers for this are welcome (as neither DLLs nor Unicode builds are
-   big priorities for me ;).
-
-9. CodeWarrior Pro7 project files (in XML format) are also provided for some
-   of the samples.  In particular, there are project files for the minimal,
-   controls, dialogs, dnd, nd docview samples.  You can use these project
-   files as templates for the other samples and for your own projects.
-       - For example, to make a project file for the "grid" sample,
-         just copy the project file for the "minimal" sample, minimalW7.mcp
-         (made by importing minimalW7.xml into CodeWarrior), into the
-         sample/grid directory, calling it gridW7.mcp.  Open
-         newgridW7.mcp and revise the project by deleting the files
-         minimal.rc and minimal.cpp and adding the files griddemo.rc and
-         griddemo.cpp.  Build and run....
-
-
 Cygwin/MinGW Compilation
 ----------------------------------------------------------------
 
@@ -694,10 +624,10 @@ Basic Options
 ----------------------------------------------------------------
 
 BUILD=release
-  Builds release version of the library. It differs from default 'debug'
-  in lack of appended 'd' in name of library, does not define __WXDEBUG__
-  and not include debug information compiled into object files and the
-  executable.
+  Builds release version of the library. It differs from default 'debug' in
+  lack of appended 'd' in name of library and uses the release CRT libraries
+  instead of debug ones. Notice that even release builds do include debug
+  information by default, see DEBUG_FLAG for more information about it.
 
 SHARED=1
   Build shared libraries (DLLs). By default, DLLs are not built
@@ -737,11 +667,6 @@ USE_OPENGL=1
   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.
@@ -768,16 +693,22 @@ MSLU=1
 
 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_FLAG=2
+  Specifies the level of debug support in wxWidgets. Notice that
+  this is independent from both BUILD and DEBUG_INFO options. By default
+  always set to 1 meaning that debug support is enabled: asserts are compiled
+  into the code (they are inactive by default in release builds of the
+  application but can be enabled), wxLogDebug() and wxLogTrace() are available
+  and __WXDEBUG__ is defined. Setting it to 0 completely disables all
+  debugging code in wxWidgets while setting it to 2 enables even the time
+  consuming assertions and checks which are deemed to be unsuitable for
+  production environment.
 
 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.
+  This option affects whether debugging information is generated. If
+  omitted or set to 'default' its value is determined the value of
+  the BUILD option.
 
 TARGET_CPU=AMD64|IA64
   (VC++ only.) Set this variable to build for x86_64 systems. If unset, x86
@@ -885,10 +816,40 @@ you to have two static debug builds, one with wxUSE_SOCKETS=0 and one with socke
 enabled (without CFG, both of them would be put into same directory and there
 would be conflicts 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 available from http://www.sysinternals.com.
 
+Building Applications Using wxWidgets
+=====================================
+
+NB: The makefiles and project files provided with wxWidgets samples show which
+    flags should be used when building applications using wxWidgets so in case
+    of a problem, e.g. if the instructions here are out of date, you can always
+    simply copy a makefile or project file from samples\minimal or some other
+    sample and adapt it to your application.
+
+Independently of the compiler and make/IDE you are using you must do the
+following to use wxWidgets:
+
+* Add $WXWIN/include to the
+  - compiler
+  - resource compiler
+  include paths.
+* Define the following symbols for the preprocessor:
+  - __WXMSW__ to ensure you use the correct wxWidgets port.
+  - _UNICODE unless you want to use deprecated ANSI build of wxWidgets.
+  - NDEBUG if you want to build in release mode, i.e. disable asserts.
+  - WXUSINGDLL if you are using DLL build of wxWidgets.
+* Add $WXWIN/lib/prefix_lib-or-dll to the libraries path. The prefix depends
+  on the compiler, by default it is "vc" for MSVC, "gcc" for g++ and so on.
+* Add the list of libraries to link with to the linker input. The exact list
+  depends on which libraries you use and whether you built wxWidgets in
+  monolithic or default multlib mode and basically should include all the
+  relevant libraries from the directory above, e.g. "wxmsw29ud_core.lib
+  wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib
+  wxexpatd.lib" for a debug build of an application using the core library only
+  (all wxWidgets applications use the base library).
+
+
+Microsoft Visual C++ users can simplify the linker setup by prepending the
+directory $WXWIN/msvc to the include path (it must come before $WXWIN/include
+directory!) and omitting the last step: the required libraries will be linked
+in automatically using the "#pragma comment(lib)" feature of this compiler.