graphics.hatenablog.com

技術系テクニカルアーティストのあれこれ

VisualStudio で SWIG やるときのテンプレ(仮)。

そのうちプロジェクト整理して github にでもあげるけど、とりあえずのメモ。


SWIG 用にビルドターゲットつくって、
ビルド前イベントで swig コマンド打って、
ビルド後イベントで Python 側のテストコード走らせてる。

これだと Python コードだけ編集したときにテストが走らなくて不便なんだけど、真面目に実行ターゲットつくってごにょごにょするの面倒だし、個人レベルではこのあたりが楽かなと。

自動生成されるコードは C++ 側のビルドに含めたくないから、マクロで切り分けてる。

#ifdef _SWIG_PY
#include "rte2_wrap.cxx"
#endif

Python 側のテストコードはだいたいこんなかんじ。

# encoding: utf-8
import sys
import os
sys.path.append(os.path.join(os.getcwd(), "..", "SwigPy"))

import unittest
(以下略)

ビルド時の出力はこんなかんじ。

1>------ ビルド開始: プロジェクト:rte2, 構成:SwigPy Win32 ------
1>  _swig_py_wrap.cpp
1>     ライブラリ D:\home\Documents\Visual Studio 2013\Projects\rte2\SwigPy\_rte2.lib とオブジェクト D:\home\Documents\Visual Studio 2013\Projects\rte2\SwigPy\_rte2.exp を作成中
1>  コード生成しています。
1>  コード生成が終了しました。
1>  rte2.vcxproj -> D:\home\Documents\Visual Studio 2013\Projects\rte2\SwigPy\_rte2.pyd
1>  ......
1>  ----------------------------------------------------------------------
1>  Ran 6 tests in 0.001s
1>  
1>  OK
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

以下、プロジェクト設定のスクショ。

f:id:hal1932:20150706050059j:plain
f:id:hal1932:20150706045936j:plain
f:id:hal1932:20150706045942j:plain
f:id:hal1932:20150706045945j:plain
f:id:hal1932:20150706045952j:plain
f:id:hal1932:20150706045955j:plain