entr
entr is useful to rerun commands on file change.
It takes list of files to watch in stdin, and the command to run as arguments.
Example
find src | entr make
It looks like it doesn't manage removed files particularly well (it exists by default), so maybe it's more useful for single file editing/compiling?