# # A very simple example Jam project. Compiles a variant of the timeless # classic, "hello world". Illustrates one way in which you can use jam # to (a) compile a simple executable (b) place generated files in # separate subdirectories and (c) use the InstallBin rule to install # the executable. # # # Tell Jam to place the output of compilation in the "obj" directory. # This keeps our source directory relatively clean. # LOCATE_TARGET = obj ; # # Tell Jam that the executable "hello" is made from the file "hello.c". # This is what causes the actual compilation. # # Note that on Windows NT the executable is actually "hello.exe"; on # Unix-ish operating systems it will be simply "hello", etc. Jam will # figure out the appropriate suffix. # Main hello : hello.c ; # # For the sake of illustration, we do something slightly more sophisticated # for the "install" target: We install the "hello" executable into a # directory specified by the variable $(INSTALL_DIR). # # INSTALL_DIR may be set in the user's environment, or on the jam command # line (using the -s option). # # If INSTALL_DIR is not set, we cause it to be set to a default by using # the "?=" operator. Also (for the sake of illustration), we base the # default name of the install directory on the $(OS) variable, which is # set by Jam to the name of the operating system on which we are compiling. # In this example, we use it with the ":L" modifier, which returns an # all-lowercase version of the contents of $(OS). # # See the Jam manual at http://public.perforce.com/public/jam/src/Jam.html # under the topic "Variables" for more information on varibles and modifiers. # # Finally, we use the FDirName rule to construct a directory name in a # portable way. The square braces ('[' and ']') tell Jam to use the result # of calling the FDirName rule, rather than treating "FDirName" as the # name of the directory. # INSTALL_DIR ?= shipit $(OS:L) ; InstallBin [ FDirName $(INSTALL_DIR) ] : hello ;