Linking with Libraries

Usually, you build a library because you want to link it with one or more programs. You link libraries with a program by specifying the libraries in the LIBS construction variable, and by specifying the directory in which the library will be found in the LIBPATH construction variable:

      Library('foo', ['f1.c', 'f2.c', 'f3.c'])
      Program('prog.c', LIBS='foo', LIBPATH='.')
    

Notice, of course, that you don't need to specify a library prefix (like lib) or suffix (like .a or .lib). SCons uses the correct prefix or suffix for the current system.

On a POSIX or Linux system, a build of the above example would look like:

      % scons -Q
      cc -c -o f1.o f1.c
      cc -c -o f2.o f2.c
      cc -c -o f3.o f3.c
      ar r libfoo.a f1.o f2.o f3.o
      ranlib libfoo.a
      cc -c -o prog.o prog.c
      cc -o prog prog.o -L. -lfoo
    

On a Windows system, a build of the above example would look like:

      C:\>scons -Q
      cl /nologo /c f1.c /Fof1.obj
      cl /nologo /c f2.c /Fof2.obj
      cl /nologo /c f3.c /Fof3.obj
      lib /nologo /OUT:foo.lib f1.obj f2.obj f3.obj
      cl /nologo /c prog.c /Foprog.obj
      link /nologo /OUT:prog.exe /LIBPATH:. foo.lib prog.obj
    

As usual, notice that SCons has taken care of constructing the correct command lines to link with the specified library on each system.