bjam参数

来源:互联网 发布:新西兰4g网络 编辑:程序博客网 时间:2024/04/30 05:44

下载boost库,然后下载bjam.exe,放在boost库的安装目录下,因为需要用到boost-build.jam,所以不能随便放置。

然后你就可以进入控制台去输入指令了:

bjam -show--libraries 可以看见需要编译的库的名称

然后就可以开始编译你想要的库了,下面是典型的格式

F:/sdk/boost>bjam --toolset=msvc-8.0 --with-date_time --with-thread
--link=static --threading=multi --runtime-link=shared debug stage

为了方便,你还可以这样:

F:/sdk/boost>bjam --with-date_time --build-type=complete --toolset=msvc-8.0 stage

注意,--build-type=complete表示生成debug release static shared的各种版本

还有一个非常需要注意的地方,我在一次编译的时候遇见过很变态的问题,由于安装了VS2008,所以我想用VC9来编译,结果VC9的设置似乎与环境变量冲突,在打开命令行工具的时候会提示:此时不应有:<此处为系统的所有环境变量>。这个奇怪的问题很可能是由于环境变量里的路径过长或包含不该有的符号而导致的,但奇怪的是,VS2005并没有这个冲突问题。所以,这时候如果要编译boost的话只有两条路走:1、搞定VS2008的冲突,重装环境变量里路径过长的程序。2、用VS2005的命令行工具去编译。顺带一提的是,这时候最好不要用系统中的cmd,而是在开始->程序 ->VS2005->工具->命令提示里执行bjam的工作。

其他参考:

bjam参数
--build-dir=<builddir> 编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了)
--stagedir=<stagedir> 存放编译后库文件的路径,默认是stage
--build-type=complete 编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared)
variant=debug|release 决定编译什么版本(Debug or Release?)
link=static|shared 决定使用静态库还是动态库。
threading=single|multi 决定使用单线程还是多线程库。
runtime-link=static|shared 决定是静态还是动态链接C/C++标准库。
--with-<library> 只编译指定的库,如输入--with-regex就只编译regex库了。
--show-libraries 显示需要编译的库名称

 

*********************************************************************

 

package_url="http://downloads.sourceforge.net/project/boost/boost/1.39.0/boost_1_39_0.tar.bz2?use_mirror=nchc"
package_dir=boost_1_39_0
package_name=$(package_dir).tar.bz2
 
all: expand build32
 
download:
        wget -O $(package_name) $(package_url)
 
expand:
        tar -jxvf $(package_name)
 
build32:
        cd $(package_dir) && ./bootstrap.sh && CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 ./bjam -d+2 address-model=32 cflags=-m32 cxxflags=-m32 linkflags=-m32 --with-date_time --with-filesystem --with-regex --with-serialization --with-signals --with-system --with-thread link=static -a $(options)
 
build64:
        cd $(package_dir) && ./bootstrap.sh && ./bjam -d+2 address-model=64 linkflags=-m --with-date_time --with-filesystem --with-regex --with-serialization --with-signals --with-system --with-thread link=static -a $(options)