Boost程序库完全开发指南(一)

  1. 导读
    C++11新语言特性:
    nullptr:强类型的空指针,代替NULL宏
    auto/decltype:自动推到表达式类型,不必手写变量的类型
    for:基于范围的新式循环,形式更加“优雅”
    lambda表达式:又称闭包(closure),能够非常便捷的定义函数对象,通常的形式为【】(…){…},其中[]是补货列表,()是函数参数,{}势函数体。
  2. gitHub 源码 https://github.com/chronolaw/boost_guide.git

1.绪论
Boost是一个功能强大,构造精巧,跨平台,开源并且完全免费的C++程序库。
Boost库安装:

  • 从Boost官网下载最新版本。boost_1_72_0.tar.gz
 tar boost_1_72_0.tar.gz 
  • 在解压后的目录下运行 ./booststrap.sh ; ./b2 install
  • 生成的头文件在use/loacl/include 库文件在/use/local/lib
  • 可以只用buildtype选项指定编译类型 ./b2 --buildtype=complete install。可以安装所有调试版,发行版的静态库和动态库。

1.1定制安装

  • ./b2 --show-libraries //查看所有编译后才能使用的库

  • ./b2 --with-date_time --buildtype=complete install 使用–with或–without选项打开或关闭某个库的编译。

  • ./b2 link-static install //编译安装所有静态链接库
    此外,还可以指定安装路径,指定debug或release版扥,可以使用–help选项或参考Boost文档已获得更多的消息。
    2 编译验证

  • 头文件<boost/version.hpp>里面有两个宏,定义了当前Boost程序库的版本号。
    #define BOOST_VERSION 107200
    #define BOOST_LIB_VERSION “1_72”

  • 头文件<boost/config.hhp>里面的三个宏:BOOST_PLATFORM,BOOST_COMPILER,BOOST_STDLIB,分别定义了当前操作系统,编译器和标准库。

 #include <iostream>
using namespace std;
#include <boost/version.hpp>
#include <boost/config.hpp>

int main()
{
    cout<<__cplusplus<<endl;
    cout<<BOOST_VERSION<<endl;
    cout<<BOOST_LIB_VERSION<<endl;

    cout<<BOOST_PLATFORM<<endl;
    cout<<BOOST_COMPILER<<endl;
    cout<<BOOST_STDLIB<<endl;
    return 0;
}

运行

g++ -o a.out version.cpp -I 

编译程序。
3.构建工具
3.1 安装b2
安装b2-boost build v2。[b2是专门为构建Boost这样的复杂度的软件开发的构建工具]
在Boost解压缩后的根目录下执行以下命令

cd tools/build
./booststrap.sh 
./b2 install

b2会默认安装到/usr/local/bin目录下
3.2 构建脚本
和make等构建工具一样,b2也能使用文本格式的构建脚本来管理代码,其名称通常是“jamfile”或“Jamfile”。此外b2还有一个特殊的“jamroot”文件,需要放在整个项目的根目录下,用于管理项目树,定义整个项目的构建设置。
jamroot一般用于定义整个项目里通用的编译参数,包含路径等设置,避免每个子目录里的jamfile重复定义。常见的格式如下

import testing ;

using gcc : : g++     #使用g++
        : <cxxflags>-std=c++11   #指定使用C++11标准,也可使用用C++14标准
          <cxxflags>-fPIC
          <cxxflags>-Wno-multichar  #for boost::mpl
        ;

path-constant DEV_ROOT : . ;

project : requirements   #设置整个项目的选项
        <threading>multi   #多线程
        <link>static   #静态变量

        <include>./common/  #相当于 -I
        ;

use-project /lib : lib ; #指定lib项目的别名

3.3 构建语言
b2使用的构建语言陈伟bjam,是一种解释性语言,拥有完整的语法定义,包括变量,分支,循环语句,函数,甚至还包括类。

  • 构建目标程序e,使用源码xxx.cpp,yyy.cpp和库zzz,
 exe e : xxx.cpp yyy.cpp zzz;
  • 构建目标t,并且在编译后自动运行,通常用于单元测试:
 unit-test t : xxx.cpp
  • 定义链接库zzz,它依赖depend_libs:
 lib zzz : depend_lists

bjam是居于token语言,使用空格,tab等空白字符来区分语法元素,不仅是单词,即使是“:”“;”,这样的标点符号前后也必须要有空格,否则bjam将无法识别标点。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值