まずは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 件のコメント:
コメントを投稿