1.Boost的编译程序bjam 和 Boost库
http://www.boost.org
下载boost-jam-3.1.18.tgz 以及 boost_1_45_0.tar.gz
文档参照“http://www.boost.org/doc/libs/1_45_0/more/getting_started/unix-variants.html#easy-build-and-install”中的说明
2.编译生成可执行文件bjam
将boost-jam-3.1.18.gz解压,得到文件夹boost-jam-3.1.18。
进入boost-jam解压后的目录:cd /home/holden/下载/boost-jam-3.1.18
生成可执行文件bjam: ./build.sh
bjam文件生成后存放在目录:/home/holden/下载/boost-jam-3.1.18/bin.linuxx86
3.将boost_1_45_0.tar.gz 解压到 /home/holden/applications/boost_1_45_0 目录下
解压后文件“bootstrap.bat”所在的目录结构类似:/home/holden/applications/boost_1_45_0/bootstrap.bat
执行: /home/holden/applications/boost_1_45_0/bootstrap.bat
增加环境变量“$BOOST_ROOT”,执行:sudo gedit /etc/environment,加入:
BOOST_ROOT="/home/holden/applications/boost_1_45_0"
export PATH BOOST_ROOT
将生成的bjam,复制到/home/holden/applications/boost_1_45_0 目录下
4.将当前目录切换到/home/holden/applications/boost_1_45_0下
查看所有必须编译才能使用的库,执行命令:./bjam --show-libraries
可以看到date-time库显示在列表中,说明date-time库需要编译才能使用。
使用下面的命令仅编译date-time库,并将编译后的库文件放在“/home/holden/applications/boost_build“目录下:
./bjam --build-dir=/home/holden/applications/boost_build --toolset=gcc stage --with-date_time --build-type-complete
//./bjam install --build-dir=/home/holden/applications/boost_build --toolset=gcc stage --with-date_time --build-type-complete
在目标目录中,找到一下三个静态链接库文件:date_generators.o,greg_month.o,greg_weekday.o
将这三个文件,复制到code blocks 当前工程的中的下级目录“boost_gregorian”(即“/home/holden/study/boostdate/boost_gregorian”目录)中。
菜单: project/build options /linker settings 选项卡, link libraries 中点 “add” 按钮,加入以下三项:
"/home/holden/study/boostdate/boost_gregorian/date_generators.o"
"/home/holden/study/boostdate/boost_gregorian/greg_month.o"
"/home/holden/study/boostdate/boost_gregorian/greg_weekday.o"
菜单: project/build options /search directories 选项卡, link libraries 中点 “add” 按钮,加入 “ /home/holden/applications/boost_1_45_0” 目录 。]
可以使用 geidt 打开 Code Blocks 的工程文件(文件类型 *.cbp )查看设置好的内容 .
5.测试代码如下:
#include <iostream>
#include <string>
#include </home/holden/applications/boost_1_45_0/boost/date_time/posix_time/posix_time.hpp>
using namespace std;
using namespace boost;
using namespace boost::posix_time;
using namespace boost::gregorian;
int main()
{
std::string ts("2002-01-20 23:59:59.000");
date d(2002,Feb,1); //an arbitrary date
//construct a time by adding up some durations durations
ptime t1(d, hours(5)+minutes(4)+seconds(2)+millisec(1));
//construct a new time by subtracting some times
ptime t2 = t1 - hours(5)- minutes(4)- seconds(2)- millisec(1);
//construct a duration by taking the difference between times
time_duration td = t2 - t1;
std::cout << to_simple_string(t2) << " - "
<< to_simple_string(t1) << " = "
<< to_simple_string(td) << std::endl;
return 0;
}