Making a small cross platform project is pretty easy, you write some code and create makefiles or IDE projects for each platform and away you go. Unfortunately as soon as the project goes from a couple files to even a dozen, maintaining different build solutions for each platform becomes difficult if you want to maintain an agile working environment. The simple act of renaming or moving a file in such an environment can be difficult and as such, something people will tend to avoid.
For this reason, there are a number of cross platform "makefile" replacement systems such as …