要链接到 Jamfile 中没有给出构建指令的库,您需要创建一个带有适当 file
属性的 lib
目标。目标替代可以用来将多个库文件与单个概念目标关联起来。例如
# util/lib2/Jamfile lib lib2 : : <file>lib2_release.a <variant>release ; lib lib2 : : <file>lib2_debug.a <variant>debug ;
此示例为 lib2
定义了两种替代方案,并为每种方案命名了预构建文件。自然,没有源代码。而是使用 <file>
功能来指定文件名。
一旦预构建目标被声明,它就可以像任何其他目标一样使用
exe app : app.cpp ../util/lib2//lib2 ;
与任何目标一样,选择的替代方案取决于从 lib2
的依赖项传播的属性。如果我们构建了 app
的发行版和调试版,则将分别使用 lib2_release.a
和 lib2_debug.a
进行链接。
系统库 - 那些通过搜索一些预定路径由工具集自动找到的库 - 应该像普通库一样被声明
lib pythonlib : : <name>python22 ;
我们再次不指定任何源代码,但给出了一个应该传递给编译器的 name
。如果使用 gcc 工具集将可执行目标链接到 pythonlib
,则命令行中将出现 -lpython22
(其他编译器可能使用不同的选项)。
我们也可以指定工具集应该在哪里查找库
lib pythonlib : : <name>python22 <search>/opt/lib ;
当然,目标替代可以像往常一样使用
lib pythonlib : : <name>python22 <variant>release ; lib pythonlib : : <name>python22_d <variant>debug ;
预构建目标的更高级用法在 名为“Targets in site-config.jam”的部分 中描述。