まずはPyUblasのインストール
ここから最新版をダウンロード http://pypi.python.org/pypi/PyUblas
tar xvzf PyUblas-VERSION.tar.gz
解凍して
cd PyUblas-VERSION ./configure.py --boost-python-libname=boost_python --use-iterators sudo make install
boost-python-libnameは/usr/libにあるlibboost_python*.soのlibと.soを除いた部分を設定。
今回はCMakeでサンプルをビルドしてみた。別にMakeでもよい
cd test
すると
sample_ext.cppとsample.pyがある
自分で考えろという意味なのか、Makefileとかがない。
調べると必要なものは
Include: boost, python, pyublas
Library: boost_python, python
で、自分の環境では、
Include:
/usr/local/lib/python2.7/dist-packages/PyUblas-ほげほげ/include
/usr/lib/python2.7
Library:
/usr/lib/libboost_python.so
/usr/lib/libpython2.7.so
にあった
ちなみに、PyUblasのIncludeパスはhttp://documen.tician.de/pyublas/faq.html#where-do-the-headers-get-installedを参考に見つけた。
これを元に、Makefileを作っても良いが、楽をするために、CMakeでやった。
cmake_minimum_required(VERSION 2.8) find_package(Boost COMPONENTS python REQUIRED) find_package(PythonLibs REQUIRED) find_path(PYUBLAS_DIR pyublas /usr/local/lib/python2.7/dist-packages/PyUblas-2011.1-py2.7-linux-x86_64.egg/include) # 共有オブジェクトを作成する add_library( sample_ext SHARED sample_ext.cpp ) # インクルードディレクトリ -Iにあたる include_directories( ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIR} ${PYUBLAS_DIR} ) # リンクディレクトリ -Lにあたる link_directories( ${Boost_LIBRARY_DIRS} ) # リンク -lにあたる。libboost_python.soとlibpython2.7.soが設定されている target_link_libraries( sample_ext ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ) # libsample_extとならないようにする set_target_properties( sample_ext PROPERTIES PREFIX "" )
パッケージが見つからなかったときの処理とかは書いていない。
これをCMakeLists.txtというファイル名でsample_ext.cppと同じディレクトリにおいて、
そこから
mkdir build ccmake ..して見つからなかったところを設定して、(特にPYUBLAS_DIRのところ)
ジェネレートして、makeして、OKだったら
mv sample_ext.so ../ cd .. python sample.py
2倍されている結果が帰ってくる
0 件のコメント:
コメントを投稿