For Erlang specifically, you should probably use rebar (http://github.com/basho/rebar). It is pretty much the best thing ever.
A common pattern lately is to use rebar with a very minimal makefile that just makes things like "make" and "make test" do the equivalent rebar actions so that people unfamiliar with it don't even notice.
There is no real documentation yet, which is unfortunate. "rebar -c" is pretty helpful for what commands it has, and most of the layout conventions are not rebar's, but OTP's (those are documented here: http://www.erlang.org/doc/design_principles/applications.htm...). A rebar.config.sample file is provided in the GitHub repo which lists every configuration option. The mailing list and its archives are also pretty useful if you get stuck.
For Erlang and many other languages, plain Rake is good. For Java and some JVM based languages buildr ( http://buildr.apache.org/ ) provides a nice abstraction on top of Rake and also support for Maven repositories.
This is a good article about fixing dumb makefiles in Joe's book, but please don't use Rake with any actual Erlang projects. Rebar does everything you want and probably more.
A common pattern lately is to use rebar with a very minimal makefile that just makes things like "make" and "make test" do the equivalent rebar actions so that people unfamiliar with it don't even notice.