To link to libraries whose build instructions aren't given in a Jamfile,
you need to create
lib targets with an appropriate
file property. Target alternatives can be used to
associate multiple library files with a single conceptual target. For
# util/lib2/Jamfile lib lib2 : : <file>lib2_release.a <variant>release ; lib lib2 : : <file>lib2_debug.a <variant>debug ;
This example defines two alternatives for
for each one names a prebuilt file. Naturally, there are no sources.
<file> feature is used to specify
the file name.
Once a prebuilt target has been declared, it can be used just like any other target:
exe app : app.cpp ../util/lib2//lib2 ;
As with any target, the alternative selected depends on the properties
lib2's dependants. If we build the
release and debug versions of
app will be linked
System libraries—those that are automatically found by the toolset by searching through some set of predetermined paths—should be declared almost like regular ones:
lib pythonlib : : <name>python22 ;
We again don't specify any sources, but give a
that should be passed to the compiler. If the gcc toolset were used to
link an executable target to
-lpython22 would appear in the command line (other
compilers may use different options).
We can also specify where the toolset should look for the library:
lib pythonlib : : <name>python22 <search>/opt/lib ;
And, of course, target alternatives can be used in the usual way:
lib pythonlib : : <name>python22 <variant>release ; lib pythonlib : : <name>python22_d <variant>debug ;
A more advanced use of prebuilt targets is described in the section called “Targets in site-config.jam”.