OMake is a build tool for C/C++, OCaml, and LaTeX with automatic dependency analysis. It easily can build projects over multiple directories, and it finds changes based on MD5 sum rather than timestamp. It also has a mode where it can be run in the background, building your project whenever a file is modified. Generally, it takes less code to build common kinds of projects (C/C++ or OCaml programs and libraries) than make does. I haven't tried it for bigger projects.
Note that if you want to program in OCaml, this tool is really useful since the OCaml linker requires compiled modules to appear on the command line in dependency order, and figuring out this order every time something changes is non-trivial.