You can pass to umake a list of files and directory. Files can be sources, headers and libraries. Directory will be searched and all the sources and libraries they contain will be included in the build.
$ ls -R ..: uobj1 uobj2 ./uobj1: myuobj1.cc ./uobj2: myuobj2.cc$ umake uobj1 uobj2/usr/local/gostai/core/linux/libtool --tag=CXX --mode=compile g++ -O2 -pthread -I/usr/local/gostai/core/include -c uobj1/myuobj1.cc -o uobj1/1.lo g++ -O2 -pthread -I/usr/local/gostai/core/include -c uobj1/myuobj1.cc -o uobj1/1.o /usr/local/gostai/core/linux/libtool --tag=CXX --mode=compile g++ -O2 -pthread -I/usr/local/gostai/core/include -c uobj2/myuobj2.cc -o uobj2/2.lo g++ -O2 -pthread -I/usr/local/gostai/core/include -c uobj2/myuobj2.cc -o uobj2/2.o /usr/local/gostai/core/linux/libtool --mode=link --tag=CXX g++ -O2 -pthread -L/usr/local/gostai/core/linux/remote -o urbiengine-linux-remote uobj1/1.o uobj2/2.o /usr/local/gostai/core/linux/remote/*.la mkdir .libs libtool: link: warning: library `/usr/local/gostai/core/linux/remote/libkernel-remote.la' was moved. libtool: link: warning: library `/usr/local/gostai/core/linux/remote/libkernel-remote.la' was moved. g++ -O2 -pthread -o urbiengine-linux-remote uobj1/1.o uobj2/2.o -L/usr/local/gostai/core/linux/remote /usr/local/gostai/core/linux/remote/libkernel-remote.a -L/tmp/urbi/gostai/core/linux/remote$ ls -R ..: uobj1 uobj2 urbiengine-linux-remote ./uobj1: myuobj1.cc ./uobj2: myuobj2.cc