インストール
Boost C++ LibrariesのDownloadリンクから、boostのソースをダウンロード(boost_1_37_0.tar)。configureを実行してコンパイル。結構時間がかかる。。。tar xfv boost_1_37_0.tar
cd bost_1_37_0
./configure
make
sudo make install
環境設定
コンパイルしようと思ったら、怒られました。というわけで、.zshrcに以下を記述export C_INCLUDE_PATH=/usr/local/include export CPLUS_INCLUDE_PATH=/usr/local/include/boost-1_37
コンパイルのオプションに付けるとかでもいいらしいけど、面倒なので上のやついいか。
g++ -I/usr/local/include/boost-1_37 hoge.cpp
flymake
zshから叩く時は上の設定でよかったんだけど、flymakeがなんかうまくいかない。エラーないのにエラーとか言ってくる。と思っら、emacsの環境のほうもセッティングしてやらないといけないようだ。(setenv "CPLUS_INCLUDE_PATH" "/usr/local/include/boost-1_37")
これでいいのか全然分からないけど、動いたのでこれでよし。flymakeの設定は以下を放りこんでおくとか。
(require 'flymake) (defun flymake-cc-init () (let* ((temp-file (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace)) (local-file (file-relative-name temp-file (file-name-directory buffer-file-name)))) (list "g++" (list "-Wall" "-Wextra" "-fsyntax-only" local-file)))) (push '("\\.cpp$" flymake-cc-init) flymake-allowed-file-name-masks) (add-hook 'c++-mode-hook '(lambda () (flymake-mode t)))
適当なサンプルコード
全然C++知らないんだけど、とりあえずなんか書いてみる。#include <iostream> #include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/io.hpp> int main() { using namespace boost::numeric::ublas; vector<int> v( 3 ); for( int i=0; i!=3; ++i ) v( i ) = i+1; matrix<int> a( 3, 3 ); for( int i=0; i!=3; ++i ) for( int j=0; j!=3; ++j ) a( i, j ) = (i+1)*(j+1); std::cout << prod(a,v) << std::endl; return 0; }
ん、C++って空白4つだっけか?Rubyなれしすぎている。。。