boost在DevC++中的安装过程
Boost的源碼主要分為兩類:
一類是源碼都在頭文件中源碼。只用這類源碼只需要包含特定的頭文件即可。
一類是源碼包含在頭文件和源文件中。想要使用該類源碼需要連接該頭文件對應的動態鏈接庫文件。
第二類的源碼主要有以下幾類:
·?Boost.Filesystem
·?Boost.GraphParallel
·?Boost.IOStreams
·?Boost.MPI
·?Boost.ProgramOptions
·?Boost.Python?(see the?Boost.Python build documentation?before building and installing it)
·?Boost.Regex
·?Boost.Serialization
·?Boost.Signals
·?Boost.System
·?Boost.Thread
·?Boost.Wave
·?Boost.DateTime
·?Boost.Graph
·?Boost.Math
·?Boost.Random
·?Boost.Test
?
如何利用DevC++中的gcc編譯器來對第二種源碼進行編譯生成動態鏈接庫:
用DEV-C++所帶的編譯器gcc來編譯BOOST庫。
首先下載BOOST庫http://sourceforge.net/project/showfiles.php?group_id=7586, 然后解壓。
為了編譯BOOST,首先要編譯bjam,然后用bjam和gcc來編譯出BOOST二進制庫。
以下為具體步驟:
1。設置GCC的環境變量PATH。
在我的電腦上點擊右鍵,選擇Properties菜單項。然后在彈出的對話框中選擇Advanced頁,點擊Environment Variables按鈕。
之后進行如下設置,選擇PATH,然后點擊Edit按鈕,在最后加上DEV-C++編譯器的路徑,如D:/Program Files/DEV-CPP/Bin,路徑之間用分號分隔。 設置完畢點擊OK按鈕保存。
2。編譯bjam。打開一個命令窗口,進入路徑D:/boost_1_42_0/tools/jam/src(只要找到build.bat命令即可),運行命令
build.bat gcc
編譯完后會生成bin.ntx86目錄,里面有bjam.exe。把bjam.exe拷貝到BOOST庫的根目錄,如E:/clib/boost_1_42_0
3。利用bjam編譯BOOST
在BOOST庫的根目錄下運行bjam --build-dir=build --toolset=gcc,?BOOST庫就開始編譯了。整個過程會持續四五十分鐘左右。生成的庫回放在build目錄下,如果你想放在不同的目錄下,可以在命令行參數--build-dir指定。
(編譯完成之后會在duild-dir指定目錄中找到編譯完成的動態鏈接庫文件。)
4.使DevC++包含boost
在Dev-C++的工具->編譯選項->目錄->C++包含文件中添加boost文件夾的上級目錄,如E:/clib/boost_1_42_0
?
?
、/
對上面兩類的源碼進行使用的例子:
例子1:該例子使用一個lambda的頭文件
#include <boost/lambda/lambda.hpp>???//只要包含該頭文件即可,就能使用該頭文件中的所有函數
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
?
int main()
{
????using namespace boost::lambda;
????typedef istream_iterator<int> in;
???
????for_each(in(cin), in(), cout << (_1 * 3) << " ");
?
????return 0;
}
?
例子2:該例子使用正則表達式regex.hpp,編譯完成之后需要鏈接regex的動態鏈接庫
步驟如下:
首先你需要建立一個project,而不能只是編譯單個的c++文件,因為在dev c++中,只有在project中才能設置linker的參數。建立project后,“Project"-->"Project Options"-->"Parameters"選項卡--->在linker框中添加:"-lboost_regex-mt",告訴linker在鏈接的時候,鏈接regex庫。That's Ok!
#include <boost/regex.hpp>
#pragma comment(lib,"D:/boost/boost_1_42_0/stage/libboost_regex-meg34-mt.lib")
#include <iostream>
#include <string>
?
int main()
{
????std::string line;
????boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );
?
????while (std::cin)
????{
????????std::getline(std::cin, line);
????????boost::smatch matches;
????????if (boost::regex_match(line, matches, pat))
????????????std::cout << matches[1]<<" "<<matches[2] << std::endl;
????}
???
????return 0;
}
?
?
?
參考文獻:
http://www.cnblogs.com/vilyLei/articles/1709941.html
http://hi.baidu.com/nkhzj/blog/item/89e675cb56d5771abe09e6a1.html
http://www.boost.org/doc/libs/1_46_0/more/getting_started/windows.html#header-only-libraries
?
總結
以上是生活随笔為你收集整理的boost在DevC++中的安装过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA编程风格
- 下一篇: 调用API的SDK相关知识:实现回调函数