バージョン
Visual Studio 2017: 15.9.4
CMake: 3.13.1
cmake_example: 8818f49
cmake_exampleとは
PyBind11のHello World。CMakeでパッケージ化できる。
Visual StudioのCMake integrationは?
混合モード(Python / C++)でのデバッグに対応していない。Mixed mode debugging for cmake projects
準備
-
Visual Studio Installerで
-
32ビット版Pythonをインストール。理由:「C++ を使用するには、32 ビットの Python インタープリターを使用する必要があります (Python 3.6 以降を推奨)」いつの間にか64ビットでもmixed-modeのデバッグができるようになっていた。Debug Python and C++ together - Python ネイティブ開発ツールをインストール
-
シェルを開いて
32ビット版Pythonにパスを通す。例:
set Path=C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_86;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_86\Scripts;%Path%
手順
まずはリポジトリから取ってくる。そしてCMakeLists.txtからsln / vcxprojファイルを生成。
git clone --recursive https://github.com/pybind/cmake_example.git
cd cmake_example
cmake -G "Visual Studio 15 2017" -A Win32 # 64ビットならx64
以下はVisual Studio 2017のGUIで。
cmake_example.slnを開いて、cmake_exampleプロジェクトをビルド。Debugフォルダにcmake_example.cp36-win32.pydができていることを確かめる。
-
ソリューションに新しいプロジェクト(Pythonアプリケーション)を追加
- これはPythonからpydを叩くテスト用モジュール
- 名前はpython_testとしておく
-
python_testプロジェクトのプロパティで
- 「インタープリター」に
32ビット版Pythonを指定 - 「ネイティブコードのデバッグを有効にする」にチェック
- 「インタープリター」に
ソリューションエクスプローラーでpython_testプロジェクトの中の「検索パス」を右クリック、「フォルダーを検索パスに追加」でDebugフォルダを追加
python_test.pyの中身を書く
import sys
print(sys.path)
import cmake_example
assert cmake_example.add(1,2) == 3
python_test.pyを実行。もしimport cmake_exampleでコケるなら、sys.pathがDebugフォルダに通っているかどうか確かめる。
main.cppにブレークポイントを設定して実行してみて、ブレークポイントが効くことを確かめる。