$ brew install boost-python --with-python3
で以下のディレクトリにインストールされる。
/usr/local/Cellar/boost/1.65.1/include/ #header /usr/local/Cellar/boost-python/1.65.1/lib/ #.a, dylib
中身を確認したけど、*.a が静的ライブラリで、*.dylib が共有ライブラリ(Linuxだと*.so)、という感じに生成されていた。自前でBoost.Pythonをビルドする必要はないようだ。
$ g++ -fPIC -I/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/include/python3.6m/ -c test_hoge.cpp $ g++ -shared -I/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/include/ -L/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/ -lpython3.6 -lboost_python3 -lboost_numpy3 test_hoge.o -o test_hoge.so $ otool -L test_hoge.so test_hoge.dylib: test_hoge.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/Python (compatibility version 3.6.0, current version 3.6.0) /usr/local/opt/boost-python/lib/libboost_python3.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/local/opt/boost-python/lib/libboost_numpy3.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.4.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
で
> import test_hoge > test_hoge.hello() 'hello, world'
できた。なお、*.dylibとか*.pydとしてモジュールを作成すると、なぜかimportできなかった。なんでさ? homebrewでインストールしたPython3だとなんでこうなるのか・・・。
Mac版のコンパイル・リンクの方法はLinuxでもなぞらえてできるだろうな。Linuxの場合はapt-get installか何かでサクッとできると思う。
Windows/Mac/LinuxでPythonモジュールをC/C++で作れるようになったわけで、じゃあC++でバリバリ便利な関数を作りましょうということで。(全部C++で書くのはどうなん?(え