Compiling wxWidgets for Windows

wxWidgets is a cross-platform application library that lets developers write once to compile on many different platforms.  Why is wxWidgets superior to other cross-platform development methods? There are several reasons.

  1. Select your target.  wxWidgets compiles onto Windows, Mac OS X, GTK+, X11, Motif, WinCE, and many more platforms.
  2. Choose you weapon.  wxWidgets supports C++, Python, Perl, C#, and
    many more languages.  You can choose C++ for highly optimized
    applications, to Python, for a very dynamic code base.
  3. Ever spot a Java app a mile away?  The wxWidget application GUI integrate seamlessly into your desktop because it uses native GUI elements.
  4. Maturity.  wxWidgets has come a long way and is a stable platform for development.
  5. Community.  wxWidgets has a strong developer community writing code and willing to answer questions.

Compiling wxWidgets is not difficult. Here are instructions for compiling wxWidgets.

Windows

  1. Download and install Microsoft Visual C++ 2008 Express Edition.
  2. Download the latest wxWidgets stable release for Windows (under “wxMSW”).  I prefer the zip archive over the installer version.
  3. Extract wxWidgets.  For this example, I downloaded wxMSW-2.8.9.zip and extracted the “wxMSW-2.8.9″ directory to “c:\dev\libs” (directories I created).  My wxWidgets path is “c:\dev\libs\wxMSW-2.8.9\” .  Yours may be different; adjust accordingly.
  4. Open “wxMSW-2.8.9\build\msw\wx.dsw” .  This should bring up Visual C++.
  5. Choose one of the DLL build configurations under “Solution Configurations” in the toolbar.  (Do not choose a “Universal” configuration, as this configuration is limited and does not use native widgets.)

    I prefer to use the “DLL Unicode Debug” and “DLL Unicode Release” builds.  wxWidgets 3 (The Next Generation) may only support Unicode builds, and not ANSI.

    Furthermore, if you are contemplating using wxWidgets for a proprietary or closed source project, the LGPL license does not permit you to statically link your project.  However, you may use dynamic linking via DLL’s.

  6. Right click on each project in the “Solution Explorer” and choose “Build”.

    Projects must be built in the following order:
    jpeg
    png
    tiff
    zlib
    regex
    expat
    base
    net
    odbc
    core
    gl
    html
    media
    qa
    adv
    dbgrid*
    xrc
    aui
    richtext

    *If dbgrid fails to build, make sure “dbgrid” is selected in Solution Explorer.  Go to the “Project” menu / “Properties” / “Configuration Properties” / “Linker” / “Input”.  Under “Additional Dependencies”, delete the entry “..\..\lib\vc_dll\wxbase28ud_odbc.lib”.  Attempt to build dbgrid again.

  7. Go to the “Start” menu / “Control Panel” / “System” / “Advanced tab” / “Environment Variables” button.

    Click on “New” and under “Variable name:” enter “wxwin”.
    Under “Variable value:” enter “c:\dev\libs\wxMSW-2.8.9″ or the path to your wxWidgets base directory.  Click on “OK”.

  8. If all has gone well, wxWidgets is fully compiled and ready for use.  The following are important variables to feed into your compiler for your own apps:

    Additional Include Directories: “($wxwin)\include” “($wxwin)\lib\vc_dll\mswud”
    Additional Library Dependencies: “($wxwin)\lib\vc_dll”

  9. That’s it!  Open the sample applications and compile them.

About the Author