I wanted to continue with a theme from this thread, but didn't want it to go too far off topic in it.

The subject of build difficulty in different projects came up, so I wanted to see if I can get some fuller discussion from those more experienced in the real world.

Up until a few weeks ago, my experience had solely been school and personal projects. None of these were very complicated. A handful of source files in a project; hit build/compile; run it; the end. Nothing complicated. Then late last year I started working on my first gui project - hand-coded, bare, Win32. A little more complicated (about 30 source files, 11k lines), as I had to add a few libraries to the linker settings, but still a pretty simple build (I primarily use Code::Blocks IDE with TDM-GCC compiler, although I do have VS2012 Ultimate as well). So that had been my most complicated experience until a few weeks back.

But then, a couple of weeks ago, I tried my hand at compiling something bigger. I wanted to get some experience helping out on an open source project so I thought I'd look at Code::Blocks. (kinda hard...trying to figure out how the 1100 files and 200,000 lines all fit together...). I've used it for 4 years, so I figured if I was going to attempt to contribute to anything, it could be that. Why not? But to contribute, you obviously need to be able to build the program from source to test changes and catch crash spots, etc. So I download the source, and long story short, I fumbled around for 2 days trying to get it to work, but no go. I was going to just give up, but something someone said in the thread I linked made me go back to it. They said that the complicated collection of source files, compiler and linker settings, etc. is standard fare for commercial projects. I figured if my goal is to eventually do this for a living, I may as well get used to it. So I picked it back up, and after 4 days of plugging away at it, finally got it to work (I've got it set up now so that it's as simple as right click -> svn update, switch to IDE and hit build).

I've been messing around with boost for 2 days trying to get it built, but it seems that Windows + MinGW is problematic. I've been to over a dozen different sites, but still no luck. Many others appear to have issues with such a combination as well.

I've also been trying to get QT to build as well, but again, no luck with using a MinGW based Windows setup.

In both cases, the common route and easiest compatibility seems to be Visual Studio and its compiler. That's fine, as I have that, but I want to get those things working with my other IDE too. So I guess, once again, I'll keep plugging away at them both to try and get them working.

I thought running Windows with gcc (MinGW) was fairly common and would be well documented for most cross platform projects. Is this not true? Am I just in an oddball configuration?

Now my questions are:

In the wide open source world and in the commercial world, is it always so complicated trying to get large projects built? I understand that cross platform software is going to involve more than its fair share of fiddling around with build configuration files to properly set up for different platform and compiler combinations, but...dang. Is it always like this? Am I just a noob simply needing more hands on experience with this?

What have your guys' experiences been on big projects? Smaller projects? Open source projects? Commercial/proprietary projects? Build and compilation experiences from years back? From more recent times? I imagine this gets easier with time, with issues still cropping up now and again; is this true?

Please, let's hear some thoughts and experiences from those of you who are veterans to those of us who are very much not veterans. I haven't really seen much discussion about this sort of thing anywhere that I've been to.