7/18/2011

Mac OS X+XCode4+Boost

どうもJudaです。
今日はMacOSXでXCode4を使って、Boostライブラリを利用するときの話。
一般的にはMacPortをつかうみたいですが、i386のアーキテクチャ部分がうまく噛み合わなくて、ライブラリがビルドできなかったりするので、直に使う方法をとります。
基本的にはMacOSXと云えども、Unix系なので、Boostをビルドしたりはできます。
BoostをサイトからDownloadして、展開しておきます。
この段階でstatic libraryを使わないものは利用可能な状態になっています。

XCodeにインクルードパスを追加するときには、VisualStudioとでは考え方がちょっと違って、「ヘッダーを検索するためのパス」を登録しなければいけません。そのため、項目の名前がSearch Header Pathsになってます。User〜というものあるのですが、違いがわかりません。ライブラリに関しても追加ライブラリパスは「ライブラリを検索するためのパス」を登録ということになります。

とりあえずstatic libraryのいらないものはこれでなんとかなります。
次にstatic libraryとかですが、BoostをDarwinでビルドする事になります。なんだかわかんないですけど、BoostのGet Start 〜で書かれているStepにしたがって行います。この時に bootstrap.sh --Prefix=/Path/to/installっていうのがあります。
Unixに慣れている方は普通なのかもしれませんが、WindowsのVisualStudioから来た人にはわかりにくいので、
./b2 というビルドコマンドを発行するだけだと、ビルドをするだけで、./Build installだとさっきの--Prefixで指定したパスへ生成物と必要なものをコピーします。Defaultだと/usr/localになってます。このディレクトリはアクセス制御されていて、読み込みのみの許可になっているので、sudo ./b2 install という風にしてやらないとうまくコピーが出来なくて悩むことになります。

あとはDarwinがGCC4.2のコンパイラを使っているので、XCodeのDefaultのコンパイラ LLVMとは生成物の形式が違うので、dynamic link をさせたときにエラーで落ちる原因になります。要注意です。


んで、実はProgram_Optionsを使ってみようと思っていて、組んで、ビルドはできるけど、うまく実行できず。
CommandLineOptionがうまく機能していないくて大変悲しい目にあってます。

XCodeでCommandLineOptionを指定するときにはXCodeのメニューバーのProductに該当するItemの下の方のEditSchemeで表示されるDialogのRun Argumentみたいな内容の奴にCommnad Line Optionが云々というのがあります。そこを設定すれば一応起動時の引数にはなるようです。

2/10/2011

CppCheckの雑感

どうもJudaです。
CppCheckを利用してみました。
とりあえず日本語の動作がクサイので、setlocale(LC_ALL, "");でビルドをする。
動作的には問題がなさげ。
検出件数とかは、よくわからないけど、未初期化の指摘をしてくれるのが、個人的に嬉しい。
現在わかっている困った点はQtで作成されているGUIで日本語が読めないのか、そもそも日本語パスの扱いがおかしいのか、不明だが、利用できない。
これによって、日本語パス以下にあるファイルの解析がままならない。
手っ取り早く、.NET FrameworkでFork用のGUIだけ準備すればいいのではないかと思う。あとは、Includeディレクトリを常に覚えるのが困るので、とりあえずそこもなんか変えたいと思う。
そんな感じ。

2/08/2011

C++における様々なツールについて

どうもJudaです。
最近CIについて、かなり興味が湧いてきました。また、それ以上に体系的なテストの重要性を痛感している今日この頃ですが。
CIを調べながら、いくつかのツールによる自動化も調査しています。現状ではまだ列挙段階ですが、いくつかのジャンルで情報をまとめておこうと思います。
インスペクションツール
CheckStyle
Uncrustify
Artistic Style
(追記:02/2011/09)Simian
静的解析ツール
CppCheck
ドキュメント化ツール(+可視化)
Doxygen+Graphviz
OpenSource で利用可能なものはこんな感じですかねぇ。
とりあえず多くの人々がこれらを公開してくれていることに頭が下がります。
Doxygen+Graphvizは導入済みですが、これを自動化して、
Commit毎にドキュメント化するようにするところから初めてみたいですね。
あとはインスペクションツールでリファクタリングの目標を絞ること。
『パターン指向リファクタリング』、
『デザインパターン』、
『実装パターン』、
『リファクタリング』
と開発に関する良い指針となるような書籍を読み進めています。

12/08/2010

Rubyの良い教材

どうもJudaです。

Rubyの良い教材。それは高品質で低価格であること。

そんな我侭な要望を満たす様なカリキュラムがあるのです。
OSSモデルカリキュラム導入実証
ここで公開されている資料はとてもよくまとまってるので、便利である。さらにPDFなので、iPadなどで閲覧するのにうってつけである。
カリキュラムも段階をおっていて、自学習するのにもよい。
これ以外にも公開されているカリキュラムもあるので、合わせて学習してみたら良いと思う。

ちなみに私も現在Rubyの勉強中であり、ここの資料を拝借させていただいている。
主目的としてはRedmineのカスタマイズを行うためである。

Redmineのガントチャートの制御と、Pluginがなぜ動作しなくなるのかを知りたくて勉強している。呼び出しのメソッドが変わったりすると動かなくなるというのは分かる。では翻ってどうすれば正しく動くように修正できるのか。つまりは有用であるが、保守された無くなってしまったPluginを復活させたり、改修したいのである。