Welcome to the wonderful world of wxWidgets! In this series of tutorials, I'm going to be explaining how to develop software in C++ using wxWidgets.

So, what's this wxWidgets stuff?
wxWidgets is a very interesting toolkit, which is compatible with pretty much any operating system! That's right, you can make your software for a whole range of platforms, including:

Win32

Mac OS X

GTK+

X11

Motif

WinCE

and more!

It's compatible with a whole bunch of languages, including C++, Perl and C# ~ but in these tutorials, I'll be covering development in C++

What should I already know?
As with all programming concepts, it's important that you've got a good understanding of as many of the key principals as possible. Loops, functions, etc~ oh, and object oriented programming (OOP) is a must!

OK, OK~ let me get started!
It can be quite tedious to set up wxWidgets. Unfortunately, I can only cover the setup for Windows~ sorry everyone else! You can check out the wxWiki, you should be able to find everything you need there. Also, if you have any questions, let me know and I'll do my best to help. So let's get started
Wait... what do we need? Well, a compiler. Obviously. You'll also need to download wxWidgets, and preferably an IDE. (My choice: Code::Blocks)

Where can I get all this stuff from?
First off, get your compiler. MinGW is a great compiler for Windows, and that's what I'll be using. The Microsoft installer is available from here.

As I mentioned earlier, my IDE of choice is Code::Blocks. It's cross platform, but since this tutorial covers Windows, you can get the Windows installer directly from here.

Last but certainly not least, you're going to need the wxWidgets toolkit itself! The Microsoft installer is available here, and for you non-Windows users, check out the downloads page here.

OK, so what now? Install your compiler (MinGW) and wxWidgets. Install them to the root of your drive, so on Windows, you should have:C:/MinGWC:/wxWidgets-2.8.9 (or some other version)

Now you're going to need to clean and compile the source code. Fortunately for you Windows user though, I've set up a nice little batch script to do all the work for you. If you want to get it set up automatically, use this batch script.

If you want to do it manually, all you have to do is follow the code in that snippet, typing each command into the command line. (NOT RECOMMENDED!)
(Remember that REM is simply a comment, and not part of the code)

So now it's time to set up Code::Blocks. This bit's pretty easy. Install it (preferably to the default directory in Program Files, but it doesn't matter) and run the exe.

You should now be in front of your new favourite IDE.

Go to File>New>Project, and find wxWidgets Project. (It should be right at the bottom)

Follow the instructions until you reach a dialog asking which version you want to use. This should be self explanatory, but (at the time of writing this tutorial) wxWidgets 2.8.x is the latest, so select that.

Next, it will probably ask you to set up wxWidgets. Open the Global Variable Editor, and paste this into the "base" text box:C:\wxWidgets-2.8.9 (or wherever you installed it to)

Now click close, and continue on through the setup.

You will now be asked to select the setting which match your installation. Check all three boxes (they should be "driver" "monolithic" and "unicode.") If you read the batch script, this will make sense. If not, don't worry about it, it's not important.

Continue on through the project setup, and you should eventually have a template prepared for you. This bit's important:YOU CAN ONLY COMPILE FOR "RELEASE"
This is because we configured wxWidgets for release earlier (again, you'll know if you read the batch script. Don't worry if you didn't)

So, change the Build target to Release, and hit F9 (Compile and run)

That's it! You should now have a window open, built using the example code from the Code::Blocks template!

*Note: I apologise if the end setup (for Code::Blocks) is a little off. I had to do this from memory, since it's only necessary to do it once.

And that's it! It was a long setup, but over the next tutorials in this series, you're going to find out why it was worth it!

Happy coding!

***Please feel free to ask any questions regarding this setup. I know it can be tedious, I had problems myself when setting it up. I'll do my best to answer them.

In short, yes you can still do it. It just takes a little bit of work. Install like you would normally. Then you will need to follow this tutorial:http://wiki.wxwidget...l_C%2B%2B_Guide
to get everything linked to your project correctly.

You have to create a file in your project before the appropriate menu will be visible (I know from experience).

I suggest downloading the app called "Minimal" if you can (wxcommunity seems to be offline for me...) then you can import the project into VC++ and it should already have all the necessary settings.

Why does it say on the WxWidgets Homepage that your build will take up 400 to 800 MB (or even 10 GIG) when doing it with your .bat takes up next to none? Furthermore, how do they expect to create something so insanely large from that number of resources?

I did it and trusts me it is that big. and it does take 2 hours to build the full batch file. I recommend you just build each one individually in the order that they tell you. It is a lot smaller and faster to build. It gets so large due to the fact that all the linker information and logs information need to be saved as well. I watched it build for about 30 min and it was building each one of the solutions for each type of build available. from debug to release dll ect.

Thank you so much for this tutorial, I count the time this has saved me in days.

Just a quick note for Open Source n00bs (like myself):
There is a Code::Blocks installer out there, which already includes the MinGW compiler. If you use this - probably unknowingly - AND install MinGW a second time with its separate installer (which does not alert that MinGW is already present), you probably won't be able to build wxWidgets with the second installation, even using the batch file provided in the main post. Well, compilation worked for me, but the linker (ld.exe) ended with error status 1 (which was even more annoying, since the erroneous build took about two hours).

It took me several hours to even notice the first installation of MinGW within my CodeBlocks folder. Using this one, I was finally able to compile AND link wxWidgets.

Oh and by the way, dual MinGW installations not only limit the compilation process of wxWidgets itself, but also compilation of your projects within Code::Blocks.

i'm trying to follow the tutorial, and i want to use the latest version wxwidgets, but after managing to get the library to build (i think), i cant get the projects to compile. it keeps asking for .a without the u's on them. i'm going to use the "wxpack" 2.8.1 since projects seem to compile so far with that.

That really helps alot. Except i deleted the folders i had tried to build on my hd. I pretty sure before i had set it to build multiple libs and it was then that i had encountered this problem. Right now i'm using the batch file with the default settings and it keeps dying halfway through the scintilla bits, wxBLAHBLAH - object not recognized - memory depleted
i've got 2.74 physical and my paging file is set to 24 gigs. I'm confused.

Should i try compiling again without cleaning?
Should i change the settings and build into separate libraries?

After that how to i use the library detection tool in code::blocks properly?

when you do a batch build clean it first
next go to project the project dependencies and use that to set the build order
the build order should be...
wxScintilla
stc
richtext
propgrid
aui
xrc
xml
qa
html
media
adv
core
net
base
gl
wxexpat
wxtiff
wxjpeg
wxpng
wxzlib
wxregex

as far as code blocks i'm not sure. i'm using the sln located in your wxWidgets dir/build/MSW/the latest sln

if you start getting errors about the lib like what was suggested earlier then use the fix i presented.

So I know this is old as hell but I'm just setting up wxWidgets and I've run into a problem. This tutorial is fantastic and saved me a huge amount of time but once I've gone through the entire process, Code::Blocks gives me a warning when i create the project telling me that there is no configured release build in the wxWidgets directory (2.8.11) and my release build will not compile. Any ideas on how I should fix this?