1. 程式人生 > >Windows 7 下編譯boost庫

Windows 7 下編譯boost庫

吐槽:樓主出來工作快2年了,自我感覺在公司還不錯,得到領導的認可,但是由於一些原因前段時間準備換工作,面試的時候被面試官問的無地自容。哎。深感自責,於是呼決定發奮圖強,不苟安於現狀,希望後面能夠再接再厲更上一層樓。

買了一本書,boost開發指南,希望能夠從中汲取到營養,也和大家分享。共同進步。

話不多說,先從安裝和編譯開始。苦逼樓主是用的作業系統是win7。當然比不上平時自己在家都使用某命令列的高大上了。

後面的分享都是在win7的系統上進行操作的。

1、先下載boost庫,苦逼樓主下載的是最新版,程式猿也追求時尚啊boost_1_55_0

2、解壓,樓主是把解壓後的目錄放到d盤的。D:\boost_1_55_0

3、進入D:\boost_1_55_0,找到bootstrap.bat,執行得到bjam.exe

4、到這一步都沒問題的話,那就恭喜你進入後面的編譯。苦逼樓主使用的是vs2010因此:

toolset=msvc-10.0,後面的版本根據vs的版本來填值得,具體對應參看下面:

 vs2003 : msvc-7.1

 vs2005 : msvc-8.0

 vs2008 : msvc-9.0

 vs2010 : msvc-10.0

build-type選項指定編譯型別,

layout選項指定需要編譯的庫名及標頭檔案的地址目錄名的生成策略。預設Windows下為versioned

下面是樓主編譯時的編譯指令:

 bjam stage --toolset=msvc-10.0--build-type=complete --layout=versioned

5、編譯過程中可能會產生一些警告,這個可以不管。當然你要是追求完美的話,非看他不順眼的話也可以去掉,去掉的方法如下:

修改D:\boost\boost_1_55_0\tools\build\v2\user-config.jam,在

#-------------------

# MSVCconfiguration.

#-------------------

# Configure msvc(default version, searched for in standard locations and PATH).

# using msvc ;

# Configure specificmsvc version (searched for in standard locations and PATH).

# using msvc : 8.0 ;

下方新增:

using msvc : 8.0 : :<compileflags>/wd4819 <compileflags>/D_CRT_SECURE_NO_DEPRECATE<compileflags>/D_SCL_SECURE_NO_DEPRECATE<compileflags>/D_SECURE_SCL=0 ;

注意:如果是VS2008或VS2010則,分別要對應修改成:

using msvc : 9.0 : :<compileflags>/wd4819 <compileflags>/D_CRT_SECURE_NO_DEPRECATE<compileflags>/D_SCL_SECURE_NO_DEPRECATE<compileflags>/D_SECURE_SCL=0 ;

using msvc : 10.0 :: <compileflags>/wd4819 <compileflags>/D_CRT_SECURE_NO_DEPRECATE<compileflags>/D_SCL_SECURE_NO_DEPRECATE<compileflags>/D_SECURE_SCL=0 ;

其中,/wd 是Visual C++編譯器選項,用於指定編譯器如何為給定編譯生成警告。

/wd n表示禁用指定的編譯器警告,其中 n 是編譯器警告編號。例如,/wd4819 禁用編譯器警告 C4819。

在系統中編譯 ANSI原始檔時,如果有一個內碼表不能表示該檔案中的所有字元,則會出現 C4819 警告。

/D(前處理器定義)用於定義原始檔的預處理符號。_CRT_SECURE_NO_DEPRECATE、_SCL_SECURE_NO_DEPRECATE、_SECURE_SCL等預處理巨集定義分別能遮蔽一部分warning警告資訊,詳細參見MSDN。

因此,上述新增內容中只是添加了幾個編譯選項,用於遮蔽一些非必要警告資訊。

6、編譯是一個漫長的等待過程,這時候你可以去泡泡茶、喝杯咖啡了……

      …….一隻烏鴉悄悄地飛過…..拉了一泡屎…...落在了淺嘗者的頭上…...

7、到這一步,說明你已經編譯完成了,開啟你的vs吧,然後新建一個工程,那就是helloword,樓主的是vs2010,然後再工程屬性中新增boost的標頭檔案目錄和lib庫,我的是這樣設定的:

8、編寫第一個boost程式碼程式

#include <iostream>
#include "boost/thread/thread.hpp"
using namespace std;
using namespace boost;

void Hello()
{
	cout<<"hello"<<endl;
	return ;
}

int main()
{
	thread thd(&Hello);
	thd.join();
	getchar();
	return 0;
}

編譯執行:

如圖所示,這說明你的boost‘已經正確安裝和編譯了,下面我們將繼續討論boost元件的應用