最近は仕事でもっぱらC++やってます。んでその職場はネットに繋げないので、ちょっと調べようと思ってもできないんですよねぇ。。。
だから自宅で環境作って試そうとおもったとです。じゃあ環境はどれにしようかと悩んだのですが、VCは既にあるしつまんないから、gccでやってみたので、備忘録。
つっても、C++の環境作るのはあっと言う間なんですよねぇ。
- 手っ取り早くpleiadesの最新(eclipse3.6 CDT)をDLすれば終了。
- これだけじゃつまらないからBoost1.45の最新を入れました。
- ついでに、pleiades付属のMinGWのアップデート
MinGWのアップデート
- Automated MinGW Installerから最新版のmingw-get-0.1-mingw32-alpha-5.1-bin.zipをDLし、展開後にできたフォルダを全て「c:\pleiades-e3.6-cpp-jre_20101025\mingw」に全て上書き
- 後は下記コマンドを叩いてアップデート
cd /d "c:\pleiades-e3.6-cpp-jre_20101025\mingw\bin"
mingw-get update
rem gccを更新
mingw-get install mingw32-gcc
boostはそのままでも使えるヘッダーはあるらしいのですが、本格的に使おうと思ったら、ビルドしないといけないらしい・・・。ネットで探したけど、情報がかなり古いので自力でインスト。
boostのビルド
- 適当な場所でDLしたzipを展開。私はeclipseと同じフォルダに置きました。(ここではc:\pleiades-e3.6-cpp-jre_20101025配下)
- 展開したフォルダの中にあるbootstrap.batを叩くと、同フォルダにbjam.exeができるので、これをDOSで実行していく
cd /d "c:\pleiades-e3.6-cpp-jre_20101025\boost_1_45_0"
setlocal
rem これはいらないかも、公式で書いてるから一応
set BOOST_ROOT="c:\pleiades-e3.6-cpp-jre_20101025\boost_1_45_0"
set path=%path%;"c:\pleiades-e3.6-cpp-jre_20101025\boost_1_45_0\bin";
bjam --toolset=gcc
endlocal
上記をバッチにして叩いて、ひたすら待ちましょう・・・・
※1回目に、toolsetのパラメータを書かずにやったら、勝手にVC8用のライブラリーを作られて萎えた・・・。なので必ず指定しましょう。
私の環境Let's Note CF-R7(core 2 duo cpu U7600 1.2GHz)では3時間かかりました(;´Д`)
因みにライブラリーができるパスはデフォルトでは
「.\boost_1_45_0\stage\lib」です
コンパイルが完了したらeclipseのプロジェクトの参照を設定する
- プロジェクト→「プロパテ」→「C/C++ ビルド」→「設定」→「GCC C++ Compiler」→「インクルード」→「インクルード・パス(-I)」→「+」→「”c:\pleiades-e3.6-cpp-jre_20101025\boost_1_45_0"」
- 同「MinGW C++ Linker」→「ライブラリー」→「ライブラリー検索パス(-L)」→「+」→「”c:\pleiades-e3.6-cpp-jre_20101025\boost_1_45_0\stage\lib"」
試しにどっかから拾ってきたコードを実行
//============================================================================
// Name : test.cpp
// Author : test
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <string>
#include <boost/tokenizer.hpp>
using namespace std;
int main( void )
{
typedef boost::escaped_list_separator<char> TokenSep;
typedef boost::tokenizer< TokenSep > Tokenizer;
string s = "orange,apple,banana,表ddd,\"Guava Juice\"";
TokenSep sep( 0,',','\"' );
Tokenizer tok( s, sep );
for( Tokenizer::iterator beg=tok.begin(); beg!=tok.end();++beg){
cout << '[' << *beg << ']' << "\n";
}
}
これで使えるようになると思います。ただコンパイルの時にいくつかエラーがでてスキップされているのがありましたが、仕事が忙しいので調べてまへん。。。

0 コメント:
コメントを投稿