Repositories can thus be used as a quick way to build variants of a program, without adding complicated conditions to the makefile. A repository is actually not just a single directory, it's a whole directory hierarchy. Makepp automatically creates any directories that exist in the repository but not in the current directory. All of the above examples show files from a repository being linked into the current directory or its subdirectories, but you can actually have makepp link them into any place in the file system that you have write access to. This is useful for more complicated builds, where there may be several library subdirectories.
Repositories work completely transparently if the makefiles use only relative filenames .
Repositories will not work if there are hidden dependencies that makepp doesn't know about. Sometimes these dependencies can be fairly subtle. For example, the libtool command will not only create .lo and .la files as listed on the command line, but it also may create a subdirectory called .libs which contains the actual object files. Because libtool is so widely used, makepp recognizes this special case and handles it appropriately by scanning the command . However, the scanner may not find all dependencies properly because the command is too obscure.