2011年9月13日火曜日

XCode4でgoogletestを使う方法

GoogleのC++テストフレームワークgoogletestをXCode4で使う方法です。
静的ライブラリlibgtest.aをビルドして使います。

実行環境
  • Mac OSX version10.7.1 
  • XCode version4.1 
  • gcc version4.2.1
  • googletest version1.6.0

1.google testをダウンロード

googletestのページから安定版をダウンロードします。

2011年9月11日日曜日

テンプレート関数の分割コンパイル

テンプレート関数をヘッダとソースに分割してコンパイルする方法です。

通常、テンプレート関数はヘッダとソースを同じファイルに書きます。分割して書くには、二つの方法があります。

1.ソースファイルをインクルードする

ヘッダファイル内でソースファイルをインクルードします。
参照が循環してしまうので、ソースにもインクルードガード(ifndef〜)を書きます。

ヘッダファイル linktest.h

ソースファイル linktest.cpp

ただし、このようにすると、これを利用する側で常にヘッダとソース両方が必要になってしまいます。

例えばこの方法でビルドしたライブラリをつくります。 そのライブラリを使うクライアント側に、ヘッダだけでなくソースファイルも渡してあげないとインクルードエラーがでます。

2.ソースの最後に個別のクラステンプレートを書く

ソースの最後に個別にクラス指定した関数を書きます。

ヘッダファイル linktest2.h

ソースファイル linktest2.cpp

こちらの場合は1番のようにソースが常に必要となる問題はありません。
しかし、ソースの最後に使う全てのクラスでの組合せを書かないといけないので、ちょっと大変です。上の例ではintとdoubleしか書いていませんが、floatなど必要なものは全て書く必要があります。

参考

1番の方法はこちらを参考にしました。

2番の方法はこちらを参考にしました。



XCode4でターゲットを追加する方法

プロジェクトにターゲットを追加する方法です。2つやり方があります。

1.Fileメニューから追加

File→New→New Targetから追加します。

2.プロジェクト設定画面から追加

2つの赤枠のうち、どちらかをクリックして、

下側にあるAdd Targetをクリックして追加します。

ターゲットの変更方法

ターゲット名をクリックして、

変更したいターゲットを選びます。