C++/Tclを使ってみた。
高木です。おはようございます。
最近、北本がTcl/TkとCの連携をやっているようです。
私もTcl/Tkは好きなので普段からよく使います。
そして、Tcl/TkとCやC++の連携もよくやります。
Tcl/TkとC++を連携するには、基本は北本が紹介している(これから紹介する?)のと同じ方法を使います。
けれども、決まり切ったコードを何度も書かなければならず、なるべくなら楽をしたいものです。
そんなときのためにC++とTclを連携するためのライブラリがあれば便利です。
今回紹介するC++/Tclもそんなライブラリのひとつです。
実は、C++/Tclはかなり前から知っていたのですが、Boost C++ Librariesに依存していたりしてあまり使う気にならなかったのです。
その後、C++もバージョンアップし、C++/Tclで使われてたBoost C++ Librariesの機能であるshared_ptrやbindは標準ライブラリに取り込まれました。
誰でも考えることは同じで、新しいバージョンのC++を使うことでBoost C++ Librariesへの依存をなくし、その他もろもろの改良を加えた形でC++/Tclがメンテナンスされているようです。
最新のバージョンは2.2.1で今年の4月にリリースされたようです。
早速ダウンロードして内容を確認してみました。
Boost C++ Librariesには依存しなくなっていますが、今度はCMakeに依存するようになっています。
CMakeはMSYS2の環境では使いにくいので個人的には好きではありません。
案の定、MSYS2上のMinGW64でのビルドを試みましたが、エラーが発生してうまくいきません。
ある程度は試行錯誤しましたが、ちょっと面倒なのでMSYS2は後回しにして、先にFedora上でビルドしてみることにしました。
Fedoraではあっさりとビルドに成功しました。
examplesにあったサンプルも動作することを確認しました。
C++/Tclはよくできたライブラリで、結構な高機能です。
ただ、C++とTclの連携をしやすくする程度のライブラリであれば、私としてはCMakeなんかに依存せずにインクルードするだけですぐに使えるほうが好みです。
それに、C++のクラスをTclにバインドするとか、そんな凝った機能はまったくいらないんですよ。
以前、Tcl/Tkのラッパーライブラリを作ろうとしたことがありました。
しかし、よくよく考えてみると、Tclの簡単なラッパーさえあればそれで十分ということに気付きました。
今後は自分が普段使うためのインクルードレベルのライブラリを整備していきたいと考えています。