2014年2月25日火曜日

Xcode5 外部ライブラリの設定、およびデバッグオプションつけかた

前回、GMPを使ったpi計算プログラムをMacで動かしました。最初はコマンドラインだけでやってましたが、せっかくなのでXcodeのプロジェクトにし、デバッグしてみました。(1億桁の変数ってどれくらいメモリをとるのか確認してみたかった)
非常に基本的なXcodeの使い方なんですが、調べてみたら結構初心者向けに書いてあるところがなく、またVisual Studioとはかなり使い方が違っていたので、メモを残します。

1.プロジェクトの作成
プロジェクトの作成方法は、大して他の統合環境と変わりません。
new projectで、右上のCommand Line Toolを選択します。(今回は元々、コマンドラインで作成していたプログラムをXcodeでデバッグできるようにしますから、これを選択します。)

2.ソースファイルの作成
事前に作ってあったソースコードを元にプロジェクト内に必要なファイルを作成します。

3.外部ライブラリ(GMP)の指定
上記で作成したソースコードはヘッダやライブラリとして/usr/local以下にあるGMPのヘッダやライブラリが必要です。それをコンパイル・リンク時にプロジェクトが参照できるようにしないといけません。
Xcodeの画面左側ビュー内のプロジェクトを選択すると、画面中央がBuild settingsになります。
設定項目が多数ありますが、このうちSearch Pathsの項目で外部ライブラリのヘッダ、ライブラリがある場所を以下の項目に設定します。
・Header Search Paths
・Library Search Paths
それぞれ、Debug用、Release用を設定してやる必要があります。またHeader Search Pathsにはデフォルトでシステム用のパスが既に入っており、それに追加する形になります。ここが少し悩んだのですが、WindowsやLinuxだとパス名の追加は":"(コロン)でパス名を区切って続けることが多いんですが、Xcodeではそれでは区切り文字として認識してくれませんでした。色々調べてもわからず試してみたら空白で外部ライブラリのパス名を区切れば通りました。

4.外部ライブラリの指定
3項では外部ライブラリの場所を指定しただけで、リンク時のライブラリ名を追加してやらないといけません。これは先ほどのSearch Pathsより上にあるLinkingのところで、Other Linker Flagsに"-lgmp"とDebug/Release双方に設定してやればOKです。(gccのリンクオプション、そのままです。まあVisual StudioでもGUIで色々オプション指定できますが、最後の確認としてコマンドラインのオプション一覧を表示できますから、やってることは一緒か)

5.Debug/Releaseの切り替え
さて次はDebug/Releaseどちらでビルド・実行するかの指定です。これはメニューで、Product→Scheme→Edit Schemeで表示されるダイアログで切り替えます。

ここのBuild ConfigurationでDebug/Releaseを切り替えます。(このダイアログに前回書いたデバッガのLLDBの選択が表示されています。これLLDB以外のデバッガってあるんだろうか?なんか追加できそうなUIになっていますが)
またこのダイアログの別タブで、実行時の引数とか指定できます。

あとVisualStudio等と違って、実行コマンドはメニューからRunしかありません。先ほどのBuild ConfigurationがDebugになっていたらRunすれば自動的にデバッグモードでの実行になります。Visual Studioだとメイン画面のUIで直接切り替えれたし、メニューにもRun, Debug両方あったため、そちらに慣れてしまい、当初はどうやってデバッグしたらいいのかかなり悩みました。ただ考えてみれば一度Release版でビルドしたら、そうそうDebug/Releaseを行き来するシチュエーションも通常はないでしょうから、これはこれで合理的かも。

0 件のコメント:

コメントを投稿