# # Top level Jamfile for the abstract multi-subdirectory example. # # This illustrates one way to use Jam to compile a project with several # subdirectories. # # # This call to SubDir sets the variable $(TOP) to the directory in which # this Jamfile resides. We use this as an "anchor point" for other rules # and variables, and to tell Jam where the Jamrules file for this project # is. # SubDir TOP ; # # Tell Jam to look in sub directories "a", "b", and "c" for header files. # The FSubDirPath utility rule (defined in the Jambase which is compiled # into the Jam executable by default) creates a platform-appropriate # path name from the arguments passed. # # Note that we use "+=" here rather than "=", so we're adding these # directories to the search path rather than overriding any existing # search path. # # Also note the use of square braces ('[' and ']'), which tells Jam to # use the results of calling the FSubDirPath rule, as opposed to treating # FSubDirPath as a (file) name. # HDRS += [ FSubDirPath TOP a ] [ FSubDirPath TOP b ] [ FSubDirPath TOP c ] ; # # The executable which we wish to build is called "abstract". It is # built from the source file "abstract.c" and the libraries "a_lib", # "b_lib" and "c_lib". # Main abstract : abstract.c ; LinkLibraries abstract : a_lib b_lib c_lib ; # # The contents of the libraries are in these sub directories, so we tell # Jam about them: # SubInclude TOP a ; SubInclude TOP b ; SubInclude TOP c ;