+1 for CMake.
Adding to what dchapiesky wrote:
CMake allows you to generate Makefiles. But it
also allows you to generate Ninja files, NMake Makefiles (for command-line use with Visual Studio), it allows you to build Visual Studio solutions, for Win32 and Win64, Debug and Release, all from the same configuration you are building your Unix Makefiles from (and without configurations slowly drifting apart over time).
(This was what made me dive into CMake in the first place -- my 9-to-5 job included holding hands for five different "build setups", one for each target system, and I was so
sick of it...)
You not only get CTest tests forwarded to a CDash dashboard, you also get CPack package building -- RPM, DEB, TGZ, NSIS setup.exe for both 32 and 64 bit releases etc., without doing much (if any) additional configuration work.
With
MXE.cc, you get out-of-the-box cross-compiling capabilities, compiling
and packaging your software for Windows from a Linux box by doing nothing more than using MXE's CMake wrapper script instead of your native cmake.
Plus, there are
pre-built solutions for integrating LaTeX doc generation, Doxygen doc generation, Javadoc generation, source reformatting / beautifying, continuous and nightly builds, ...
Today the latest version of our software is built every night, for all target platforms, with
one crontab'ed command per platform, using one single CMake configuration (which is 99% identical to the JAWS setup I linked above).
You
can achieve many of these things with "plain" Makefiles as well. But be honest, who
ever actually did that? CMake does most of these things more or less for free...