编译静态库的时候,在相关 jam 文件中,添加如下代码。
# 默认编译配置(默认编译4种最常用的库类型)
default-build =
debug release
<threading>multi
<link>static
;
if [ os.name ] = NT
{
default-build += <runtime-link>static <runtime-link>shared ;
}
# 这里的 <tag> 配合下面的 tag rule 可以定义输出的文件名,这里使用仿 boost 规则的库文件名,不过删除了版本信息
project name
: requirements <tag>@$(__name__).tag
: build-dir bin
: default-build $(default-build)
;
# 按仿 boost 规则生成 lib 文件名
rule tag ( name : type ? : property-set )
{
if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
{
return [ common.format-name
<base> <toolset> <threading> <runtime>
: $(name) : $(type) : $(property-set) ] ;
}
}
# 下面的代码把库 安装到 stage/lib 目录,这个一般应该放在根目录里的 jamfile 里,
# 这样在根目录里执行 bjam, 就可以直接编译所需要的库的各个版本,然后复制到 stage/lib 下
local libraries = lib1 lib2 lib3 ;
install stage
: $(libraries)
: <location>stage/lib
;
最后 修改 boost/config/auto_link.hpp 文件(去掉版本相关的代码),就可以创建你自己的,可以自动连接正确版本的库了。