If you've ever been on a team larger than 1 programmer you know that nothing quite takes the wind out of your sails like a updating a large amount of changes made over-night or over the past day, only to find out the build is broken.
What is the solution? Well after you've tried source control codes of conduct and threatening your co-workers (the preemptive solutions) The best you can be is reactive. Imagine having a dedicated programmer who's sole job was to sync each change and test the build. That is what you can have with a Build Automation System.
Besides home-brewed scripting there are a few more commercial options:
Bamboo, Jenkins, Buildbot, and my current favorite: Go Continuous Delivery
Go is open source and free (with the option for support for money) and is fairly easy to set-up. It also has a fairly good web interface and good documentation. I've set up 2 multi-platform projects on it and so far it's working really well. I am planning to extend it's use to include, nightly builds, release builds and full-rebuild testing and so far the Go system hasn't shown any issue I haven't been able to figure out.