2009年12月22日火曜日

ubuntuでunicodeコード入力

ubuntu9.10ではiBusが標準になっているが使いにくい。
とりあえず、まず、SCIMにしよう。

1)日本語環境セットアップヘルパで「scim-anthy」 「SCIMとAnthyによる日本語入力」をチェック
2)システム->システム管理->言語サポートで「キーボード入力に使うIMシステム」でscimを選択
3)一度ログアウトして再度ログイン

SCIMで「その他-RAW CODE」を選択
これでunicode入力ができる

2009年12月16日水曜日

PDFからTEXTの抽出

ロックのかかっていないPDFファイルからテキストを抽出するのはacroreadで
ファイル(F)->テキストとして保存(V)
optionでCUIからできないかと思ったが-toPostScriptでPSファイルにできるだけでした。

ちなみにそのPDFファイルはpdftotextではちゃんと抽出できませんでした。

2009年12月8日火曜日

cmake2.8でwxWidgets

いままで、cmakeではCMAKE_CXX_FLAGSに/D_UNICODEを設定していないとリンクエラーになっていたが。
治っている。

mov 2 avi

ffmpeg -i hoge.mov -g 60 -vcodec msmpeg4v2 -acodec pcm_u8 hoge.avi

ここが詳しい。

2009年12月5日土曜日

meldで差分を見る。subversion

subversionの差分をmeldで見るには?
ここが詳しい。

まんまコピーです。ごめんなさい。 
~/.subversion/configファイルを編集
[helpers]
diff-cmd = /home/torutk/bin/svn-diff-meld
diff3-cmd = /home/torutk/bin/svn-diff3-meld
diff3-has-program-arg = false
~/bin/svn-diff-meldファイルを作成
#!/bin/sh
# SVN diff wrapper for meld
left="$6"
right="$7"
meld "$left" "$right"
~/bin/svn-diff3-meldファイルを作成
#!/bin/sh
# SVN diff3 wrapper for meld
mine="$9"
older="$10"
yours="$11"

meld "$mine" "$older" "$yours"

P.S. windowsだとここが詳しい。
c:\Documents and Settings\admin\Application Data\Subversion\config

ブランチやタグの作成したrevisionを探る

branchやtagで
svn log --stop-on-copy
ここ
一般的な使い方はここ

2009年11月24日火曜日

gif to eps

hoge.gifから pnmを介して hoge.psを作るとき
giftopnm hoge.gif | pnmtops > hoge.ps

ubuntuでPDF

日本語セットアップヘルパでadobereader-jpn-ipamonafontを入れると一部の異体字が表示されない。

2009年11月13日金曜日

undefined symbol error

undefined symbolがでたら、ライブラリにクラスを追加忘れていないか注意しよう。

FireFoxがよく落ちるのは朝日新聞のせい?

最近気がついたけれど、FireFoxがよく落ちるのは朝日新聞のサイトが開かれているとき。
Flash使いすぎか?
環境はUbuntu9.10, Firefox3.5.5

2009年11月11日水曜日

ubuntu9.10でgrub編集+FreeBSDデュアルブート

grub1.97~betaでは、設定が/boot/grub/menu.lstから/etc/default/grubに変わったようです。
ここここが詳しい。
 sudo gedit /etc/default/grub
1)デフォルト起動
GRUB_DEFAULT=0
2)起動までの時間
GRUB_TIMEOUT="10"

追記:FreeBSDは自動で認識してくれないみたいなので、2番目のここを参考にして、/etc/grub.d/40_customにでも
menuentry "FreeBSD 7.2-RELEASE i386" {
set root=(hd0,2)
chainloader +1
}
としてやればイイミタイ。ディスクの番号は自分の環境に合わせて下され。
最後にupdate-grub2を忘れないように。

2009年11月9日月曜日

wxWidgetsをVC++

error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。
と言うエラーが出たら、cmakelists.txtで add_executableにWIN3を追加
add_executable (hoge WIN32 ${hoge_SRCS})

mov to avi

avidemux

2009年11月6日金曜日

2009年11月4日水曜日

Python開発環境を整えよう

システム全体にパッケージをインストールしたくないときは「Python開発環境を整えよう」を参考にしていたけれどubuntuだとpython2.6ではdist-packagesになっているのでvirtual-pythonがそのままでは使えない。こんな時はvirtualenvを使うといいらしい 。 
virtualenv-1.3.4.tar.gzを取ってきて解凍。python ./virtualenv ENVでインストールできる。ENVは入れたいところを指定しよう。
source ENV/bin/activateを~/bash_mine辺りに設定すればOK

P.S. ここの方が詳しい。

ubuntu9.10日本語環境構築

Ubuntu 9.10 Desktop 日本語 Remix CD リリースのまえにインストールしてしまったので日本語環境構築しなければならない。
Ubuntuの日本語環境を参考にしてと。方法2ではじめたが面倒くさいのでシェルスクリプトにしました。適当にファイルに書き出して、実行権限くれてやればOK

#!/bin/sh

wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
sudo wget https://www.ubuntulinux.jp/sources.list.d/karmic.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ubuntu-desktop-ja
gksu ubuntu-ja-setup-helper  

 

2009年10月28日水曜日

Boost Python VC++

cmakeでboost pythonを使うとき、
find_package( Boost COMPONENTS python ... )
とやるとVC++ではリンクできないとわめく。
set(Boost_USE_STATIC_LIBS   OFF)
add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINTIIONS})
としておくとやめる。
 
しかし、開発中のものでVC++ではエラーが出ないがgcc on UbuntuでコンパイルしたBoost Pythonが動かない。
Python argument types in .... did not match C++ signature: .... と出やがる。 
 
追記:pythonをリンクさせることを忘れていました。トホホ 

2009年10月17日土曜日

Boost::Pythonでmember function overloadを使う術

Boost::Pythonでmember function overloadを使うには、
class gaga
{
public:
void get(void);
void get(const int pos);
};
とすると
boost::python::class_("TvtkTranslation")

.def("get", (void (gaga::*)(void) ) &gaga::get)
.def("get", (void (gaga::*)(const int &) ) &gaga::get)

;

2009年9月28日月曜日

fstreamに泣く

fstreamってstd::ios::in | std::ios::outてしないと新たにファイルを書き出してしまうのであった。

2009年9月14日月曜日

VTKでアニメーション

ここを参考にすると、
1)vtkAnimationSceneがvtkAnimationCueのコレクションクラスで全体を統括。
2)vtkAnimationCue1つ1つがそれぞれの動きの時間管理を受け持つ。
3)それぞれの動きはvtkCommandを継承したクラスで行う。
vtkCommandのvirtual void Execute (vtkObject *caller, unsigned long eventId, void *callData);をvtkAnimationCueが設定にしたがって呼んで、その内容で
vtkCommand::StartAnimationCueEvent(セットアップ)
vtkCommand::EndAnimationCueEvent(終了処理)
vtkCommand::AnimationCueTickEvent(動き)
に分岐させる。

追記:上記サンプルではわざわざCueAnimatorと言うクラスを作っているけれども、いらないと思う。vtkCommandを継承したクラスに押し込めば十分。第一、vtkObjectを継承していないのもなんだかな。

2009年9月11日金曜日

cmakeでcuda

cudaではコンパイラに色々食わせなければならない。ああ面倒くさい。と言うわけでcmakeで使えるモジュール探してみました。ありました。FindCuda。
svn co https://gforge.sci.utah.edu/svn/findcuda/trunk FindCUDA
でチェックアウト
/FindCUDA/CMake/cuda/の下の
FindCUDA.cmake make2cmake.cmake parse_cubin.cmake run_nvcc.cmake
をcmake/share/cmake-2.6/Modules/の下にコピー
ちゃんと動くかどうかは、チェックアウトしたモジュール(FindCUDA.cmake make2cmake.cmake parse_cubin.cmake run_nvcc.cmake)を削除して/FindCUDA/で cmake . && make ビルドできればOK

CUDA始めました。

玄人指向のカードが安かったのでCUDA始めました。
GTS250:1G、1万3000円台でした。

2009年9月2日水曜日

cuiからcmake in Win32

win32ではcmakeにはguiが装備されているけれど毎回guiを起動してやるのな面倒くさいときcuiからprojectを生成してみよう。
1)まず、Cmake\binにpathを通す。
2)目的のpathへ移動。私はよく最上位のディレクトリの下にbuildディレクトリを作ってそこでプロジェクトの作業をします。
3)目的のpathをめがけて私の場合はcmake ..とすればguiと同じように出来上がり。

追記:WIN32ならGUIを起動することもできるぞ。複数のプロジェクトを扱っているとGUIを単独で起動すると、前に使ってたプロジェクトを覚えているからソースやどこに作成するか一々入力しなければならない。その点CUIからCMakeSetup.exe ..としてやればやりたいプロジェクトがすぐ起動できる。wxWidgetsでunicodeを使おうとするとGUI使って、/D_UNICODEを指定しなければならないので重宝する。

2009年8月25日火曜日

Boost::Pythonでshared_ptrを使う術

Boost::Pythonでshared_ptrを使うには、先に宣言しよう。
BOOST_PYTHON_MODULE(gaga)
{
boost::python::register_ptr_to_python<boost::shared_ptr >();
boost::python::class_("gigi")
.def("gugu", &gugu)
;
...
...
}

2009年8月22日土曜日

Boost::Python

Boost::Pythonはソースに手を入れなければならないと思われているがそんなことはない。サンプルがそのようであるからで、実際にはヘッダーファイルをインクルードしたラッパーを書けば1丁上がりである。元になるライブラリがDLLならラッパーだけのDLLができてライブラリのDLLを読みに行ってくれる。すなわち軽量。しかもラッパーはC++のソースだからわかりやすい。Python以外のLLにポートしないのならSwigよりおすすめです。

2009年8月20日木曜日

Boost::Pythonに泣く

pythonの拡張をC++でしようと思ってubuntuでやっていたことをVC++に持っていくとpython25.dllがないと怒られた。そんなもん使ってないのになんでいるんだとしばらく毒づいていた。
ふと気づいて、dependencywalkerで見てみると、なんとboost::pythonのライブラリが依存していた。そうそう、このライブラリ構築したのはpython25のときでした。「スマンカッタ。」
そこでboostライブラリの再構築。しかし時間かかるなーあ。complete指定だと優に1時間かかったが、こんどはエラー吐かなくなった。目出度しめでたし。

2009年8月8日土曜日

pythonのsetup.pyにswigでC++のオプションを付けるの術

from distutils.core import setup, Extension

setup(
ext_modules = [
Extension('_example', ['example.i', 'example.cxx', 'sample.cxx'],
library_dirs=[],
libraries=[],
extra_compile_args=[],
extra_link_args=[],
swig_opts=["-c++"],)
])

VS2005でpythonの拡張を行うの術(まとめ)

prebuildされたpython25はVS7.1、python26はVS2008でコンパイルされているためVS2005しか持っていないときはsetup.pyでbuildすることはできない。(たぶん)
これを回避するには、
1)VS2005でdllを作ってしまう。
2)mingwを導入する
3)VS7.1もしくはVS2008を導入する。
4)sourceよりpythonをコンパイルして自分の物とする。
と言う方法が考えられる。
ここでは1)についてまとめる。

手順は次のとおり。
1)VS2005でdllを作成できるようにする。(以前のエントリが少し助けになる。)
2)dllを作成し、名前を[package_name].pydに変更する。
3)C:Python26/DLLsの下に[package_name].pydと[package_name].py置く。
4)importしてみる。

おまけ。
prebuildされたpythonにはpython26_d.libは含まれていない。C,C++でpythonインタープリターを使いたいときdebugが必要なら、sourceを引っ張ってきてコンパイルしてできたpython26_d.libをC:Python26/libsの下へ入れればよい。

cmakeでリンクするファイルをdebugとreleaseでカエルの術

昨日のエントリから
target_link_libraries(example debug boost_python-vc80-mt-gd-1_39 debug ${PYTHON_DEBUG_LIBRARIES}
optimized boost_python-vc80-mt-1_39 optimized ${PYTHON_LIBRARIES})
とそれぞれのライブラリにdebugもしくはoptimizedをつければよい。

2009年8月6日木曜日

windows上でC++でpython拡張するの術

example.i, example.h, example.cppを作ってコマンドラインから
Cだけなら
$ swig -python example.i
C++なら
$ swig -c++ -python example.i
とすると
example_wrap.cxx
とexample.pyができる。

CMakeList.txtにむにゃむにゃと
#-----------------------------------------------------------------------------
set (BoostPython_SRCS
example.cxx
example.h
example.i
example_wrap.cxx
)
#-----------------------------------------------------------------------------
add_library(example SHARED ${BoostPython_SRCS})
target_link_libraries(example debug boost_python-vc80-mt-gd-1_39 debug ${PYTHON_DEBUG_LIBRARIES}
optimized boost_python-vc80-mt-1_39 optimized ${PYTHON_LIBRARIES})
target_link_libraries(example boost_python-vc80-mt-gd-1_39 ${PYTHON_LIBRARIES} )
#-----------------------------------------------------------------------------
何てやってから、ビルドするとexample.dllができる。

できたexample.dllを_example.pydと名前を変えてC:Python26/DLLsの下に置く。
ついでにexample.pyもそこへ置く。

後は、
$ python
>>>import example
>>>
と読み込めればOK
VS2005でコンパイルしてもOK

2009年7月29日水曜日

vtkImagePlaneWidgets

vtkImagePlaneWidgetsでvtkCellPickerで取得した値がwindowの下に隠れて見えない。
しかたがないのでソースを読むが分からんかった。
対症療法だが、GenerateText()メソッドの中の
coord->SetValue(.01, .01);

coord->SetValue(0.01, 0.05);
に変えて見えるようになった。
と思ったら、別のパネルに貼り付ける奴では普通に見えた???
このクラスの問題ではないか???

2009年7月14日火曜日

BOOST_PP_SEQ_ELEM_III error

これもしばらく苦しんだのでメモ
"BOOST_PP_SEQ_ELEM_III" requires 2 arguments, but only 1 given とでたら、
BOOST_PP_SEQ_ELEMを遅延評価に。
BOOST Archives
参照

2009年7月13日月曜日

VC++でunit test

cmakeで作成したVC++のプロジェクトでunit testを実行するには、solutionの中のRUN_TESTSをビルドしよう。

2009年7月11日土曜日

boost::preprocessor nested seq

しばらく苦しんだのでメモ。
boost::preprocessorで入れ子のコンテナ例えばシーケンスのシーケンスを処理するとき同じマクロを2度使えない。
#define SEQ ((Red)(Blue))((Blue)(Red))((Black)(White))((While)(Black))
を処理しようとすると、

#define INNER_MACRO(r, data, i, elem) BOOST_PP_CAT(elem, data)
#define OUTER_SEQ(r, data, elem) \
BOOST_PP_SEQ_FOR_EACH_I(INNER_MACRO, _, elem)

BOOST_PP_SEQ_FOR_EACH(OUTER_SEQ, _, SEQ)
×
#define INNER_MACRO(r, data, elem) BOOST_PP_CAT(elem, data)
#define OUTER_SEQ(r, data, elem) \
BOOST_PP_SEQ_FOR_EACH(INNER_MACRO, _, elem)

BOOST_PP_SEQ_FOR_EACH(OUTER_SEQ, _, SEQ)

VC++で確認するには
cl /EP/ /I c:\Boost\include\boost-1_39 .\test.h
おまじない
"C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
も忘れないように。

追記:IDEからはプロジェクトのプロパティ->プリプロセッサ->前処理済みのファイル生成=>行番号なし、で確認できる。

2009年6月12日金曜日

vtkコンパイルエラー

新しく5.4.2が出たけれども相変わらずコンパイルエラーが出るのでメモ
tif_fax3sm.c: Cannot create output file.と出たら。

chmod +w ./VTK/Utilities/vtktiff/tif_fax3sm.c
http://www.vtk.org/Bug/view.php?id=7813

2009年6月11日木曜日

マクロの設置場所 (pythonでOpenOffieをあやつる。)

pythonで作成したマクロは
$HOME./.openoffice.org/3/user/Scripts/の下にpythonを掘って入れよう。

pythonでOpenOffieをあやつる。

spreadsheetをCSVにしようとはじめたが嵌まった。なんぼやってもplane textで保存できなかった。
保存するときの引数を渡すときそれぞれがオブジェクトだということを忘れてました。
結局こう
saveProperty=[]

p=PropertyValue()
p.Name="FilterName"
p.Value="Text - txt - csv (StarCalc)"
saveProperty.append(p)

p=PropertyValue()
p.Name="FilterOptions"
p.Value="44,34,76,1"
saveProperty.append(p)

p=PropertyValue()
p.Name="SelectionOnly"
p.Value=True
saveProperty.append(p)

doc.storeToURL(unohelper.systemPathToFileUrl(fname), tuple(saveProperty))

ちなみにpythonでoooを操るときはそっけなくてあちこち行かなければならないAPIみるよりhttp://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.xhtmlのほうがましかも。

2009年6月8日月曜日

reportlabでバーコード

http://two.pairlist.net/pipermail/reportlab-users/2008-November/007685.html
を写経してPDFにバーコードに文字列付けてhumanReadableで出力しようとしたところ。
Traceback (most recent call last):
File "./barcode2.py", line 16, in
barcode.drawOn(pdf,50*mm,250*mm)
File "/usr/lib/python2.6/dist-packages/reportlab/platypus/flowables.py", line 105, in drawOn
self._drawOn(canvas)
File "/usr/lib/python2.6/dist-packages/reportlab/platypus/flowables.py", line 89, in _drawOn
self.draw()#this is the bit you overload
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 219, in draw
self.drawHumanReadable()
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 164, in drawHumanReadable
self.annotate(x+width/2.,-y,s,fontName,fontSize)
File "/usr/lib/python2.6/dist-packages/reportlab/graphics/barcode/common.py", line 176, in annotate
getattr(canv,func)(text,x,y)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfgen/canvas.py", line 1287, in drawCentredString
width = self.stringWidth(text, self._fontname, self._fontsize)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfgen/canvas.py", line 1392, in stringWidth
(fontSize,self._fontsize)[fontSize is None])
File "/build/buildd/python-reportlab-2.3/src/rl_addons/rl_accel/_rl_accel.c", line 1104, in stringWidthU
File "/build/buildd/python-reportlab-2.3/src/rl_addons/rl_accel/_rl_accel.c", line 1147, in _instanceStringWidthU
AttributeError: decode
とエラー。
調べてみるとcommon.pyの line 176
175: else: func = 'drawString'
176: getattr(canv,func)(text,x,y)
177: canv.restoreState()
でcanvas.pyのline 1283のdrawCentredStringを呼んでいるけれど、定義はこう
1283: def drawCentredString(self, x, y, text):
ということで
176: getattr(canv,func)(x, y, text)
でしょう。

追記:patchを投げておきました。trunkは変わっています。

2009年5月22日金曜日

printer parallel portで嵌まる。

「嵌まる。」またかよ。
ご老体のubuntuを9.04にアップグレードしたらPrinterがみつからなくなった。[システム]->[システム管理]->[印刷]でプリンターの設定ダイアログで新規プリンタを検索してもパラレルポートが見つからなかった。神様[google]に聞くと
http://ubuntuforums.org/archive/index.php/t-1135964.html
で発見。
sudo modprobe parport_pc
で解決

2009年5月20日水曜日

wxWidgets文字列変換

wxString -> std::string
std::string str(wstring.mb_str(wxConvUTF));

std::string -> wxString
wxString wstr(str, wxConvUTF);

2009年5月19日火曜日

boostインストールで嵌まる。

「嵌まる。」多いな最近。
boost_1_39_0をUnixにinstallしようとコンパイルしたところ、localにprefixを設定したはずなのにインストールしてくれない。
結論、bootstrap.shのbug、252行の
251: if test "x$LIBDIR" = x; then
252: LIBDIR="$EXPREFIX/lib"
253: fi
て、
252: LIBDIR="$EPREFIX/lib"
でしょうが。

2009年5月16日土曜日

pythonでバーコード

http://cybernetics.hudora.biz/projects/wiki/huBarcode
からhuBarcodeをゲット。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from huBarcode import ean13

encoder = ean13.EAN13Encoder("123456789012")
encoder.save("ean13.png")
でけた。

2009年5月9日土曜日

Atheros ether chipでFreeBSD

P5KPL-CMと言うマザーボードにのっかているAtherosのetherドライバがないのかインストール直後のFreeBSD7.1では繋がらなかった。GENERIC読んだらaleと言うのがあるのだがドライバがないと怒られている。
load.confに
if_ale_load="YES"
としてOK
http://www.freebsd.org/cgi/man.cgi?query=ale&sektion=4&manpath=FreeBSD+8-current

NEC LaVie Cのubuntu linux起動オプションメモ

acpi=off noprobe
これを付けないとブラックアウトする。PC-LG30SUUGFと言うタイプ。
ご老体で、蛍光管は点かなくなるし、CDは書き込めなくなるし。

cmakeでGUIに変数表示

自分で定義したcmakeの変数をGUIに表示させるには、
set (TEST false CACHE BOOL "Create tests")
TESTと言う変数をキャッシュさせる。(肝)後は、変数の属性を指定(BOOLならON,OFFと表示されるぞ!)最後に変数の説明。
advance optionとして表示させたいなら
mark_as_advanced(TEST)
とする。

2009年5月7日木曜日

2009年4月27日月曜日

wxDocViewでまたハマる。

wxUSE_STD_IOSTREAMを有効にしてwxWidgetsライブラリを作っていなかったから、保存読み込みができなかった。トホホ。

2009年4月24日金曜日

wxStringへの数値を代入するには

float size=0.1;
wxString str;
str << size;
でOK

解決

4月21日のエントリーで「wxVTKRenderWindowInteractorは、vtk5.0なら動くけれどvtk5.4では一部動かない。」と書いたが解決。Joystickのタイマー作ってるmethodが変更になったみたいで、ヘッダーファイルに、
#if (VTK_MAJOR_VERSION >= 5 && VTK_MINOR_VERSION > 0)
int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
int InternalDestroyTimer(int platformTimerId);
#else
int CreateTimer(int timertype);
int DestroyTimer();
#endif
ソースに
#if (VTK_MAJOR_VERSION >= 5 && VTK_MINOR_VERSION > 0)
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::InternalCreateTimer(int timerId, int timerType, unsigned long duration)
{
bool oneShoot(false);
if (timerType==1){
oneShoot=false;
}
if (!timer.Start(duration, oneShoot))
assert(false);
wxLogDebug(wxT("Create Internal Timer"));
return timerId;
}
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::InternalDestroyTimer(int platformTimerId)
{
// do nothing
wxLogDebug(wxT("Destry Internal Timer"));
return 1;
}
#else
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::CreateTimer(int WXUNUSED(timertype))
{
// it's a one shot timer
if (!timer.Start(10, TRUE))
assert(false);
wxLogDebug(wxT("Create Timer"));
return 1;

}
//---------------------------------------------------------------------------
int wxVTKRenderWindowInteractor::DestroyTimer()
{
// do nothing
wxLogDebug(wxT("Destry Timer"));
return 1;
}
#endif
で動きました。(環境はWindows XP、VC++2005、VTK-5.4.0)

2009年4月21日火曜日

wxVTKRenderWindowInteractorに嵌まる。

wxVTKRenderWindowInteractorは、vtk5.0なら動くけれどvtk5.4では一部動かない。
wxSampleでいきなりマウスでポイントしてジョイスティックで回転させようとするとError吐いて動かない。

2009年4月14日火曜日

boost::shared_ptrをキャスト

boost::shared_ptrをキャストするときは
boost::shared_polymorphic_castを使おう
boost::shared_dynamic_castは、キャストが失敗した時に例外を投げない。

と書いていたが、boost::shared_polymorphic_castは非標準らしい。
ラッパーを書くのがベター。boost

2009年4月8日水曜日

cmakeで作成したCodeBlocksのプロジェクトでデバッグするには

cmakeで作成したCodeBlocksのプロジェクトでデバッグするには、
cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles"

http://www.cmake.org/Wiki/CMake_FAQ
How can I build multiple modes without switching ? 辺りを参照するといい。
CodeBlocksのブレークポイントも効く。