はじめに
プロジェクトの都合で、ビルドシステムに化石のようなMakeを使わなければならない場合もあるかと思います。でも、自分のマシンではXcodeで開発したいんだ! という人もいるでしょ? でしょ?
そんな人のためのセットアップドキュメントです。
筆者の検証環境
・Xcode4.6.3
・GNU Make 3.81
まずはXcodeプロジェクトを作りましょう。
まずは、Xcodeプロジェクトを作りましょう。
メニューのFile->New->Project...を選択し、出てきたダイアログでCommand Line Tool
を選択し、Nextボタンを押します。
次の画面で、Project Name
を適当に入力します。ここでは「PracticeMakefile」としました。
Type
はC
でもC++
でもどちらでもいいですが、ここではC
にします。
Nextボタンを押します。
次のファイル指定ダイアログで、プロジェクトの保存先を指定します。
Make用のターゲットを追加する。
メニューのFile->New->Target...を選択し、OSX->Other->External Build Systemを選択し、Nextボタンをクリックします。
次の画面で、Product Name
を適当に入力します。ここでは「Make」としました。Build Tool
が/usr/bin/make
となっていることを確認してください。
Finishボタンを押します。
Makefileを作成・追加する。
今回は例ですので、以下のような超シンプルなMakefileを書いてみます。
(-gオプションを忘れないでください。これがないとデバッガ使えません)
all: main.c
gcc -Wall -g -o main main.c
一度、コマンドラインでmakeを実行する。
ここで一度、コマンドラインでmakeを実行します。この先の手順で、Xcodeで実行可能ファイルを指定する必要があり、実行可能ファイルの実体が必要なためです。
Makeスキーマの設定
ディレクトリの指定
プロジェクトウィンドウの左ペインから、プロジェクト「PracticeMakefile」を選択し、その右隣のペインでターゲット「Make」を選択します。そしてその右のペインのInfo
タブをクリックすると、以下のような画面になります。ここで、Directory
のフィールドに$(PROJECT)
と入力してください。あるいは、プロジェクトフォルダへのフルパスを入力してもかまいません。
実行可能ファイルの指定
メニューのProduct->Scheme->Edit Scheme
を選択し、出てきた画面で、上部のSchemeで「Make」を選びます。次に、左ペインのRun->Runを選択し、右側のペインでInfoタブを押します。
ExcutableのNone
をクリックし、出てきたメニューでOther...
をクリック、出てきた選択ダイアログで、先ほどmakeして作成した実行可能ファイル「main」を選びます。
選択し終えたら、OKボタンを押します。
いよいよビルド、実行!
プロジェクトウィンドウ左上のRunボタンを押して、ビルド・実行してみましょう。成功するはずです。
ブレークポイントをしかければ、そこでちゃんと止まることも確認できます。
Makefileのターゲットを指定するには
Makefileのターゲットが複数あったとして
hello: main.c
gcc -Wall -O2 -g -o hello main.c
hello2: main.c
gcc -Wall -O2 -g -o hello2 main.c
hello2を実行したい場合は、
プロジェクトウィンドウの左ペインから、プロジェクト「PracticeMakefile」を選択し、その右隣のペインでターゲット「Make」を選択します。そしてその右のペインのInfo
タブをクリックすると、以下のような画面になります。ここで、Arguments
のフィールドにhello2
と入力してください。
これで、hello2のターゲットが実行されるようになります。
おわりに
いかがでしたでしょうか。プロジェクトが大きくなり、いずれ再帰的なMakefile構成になったとしても、多分このやり方でいけると思います。
Make+VimやMake+Emacsで十分という方もいらっしゃるかもしれませんが、やはりXcodeの豊富な開発支援機能の魅力は捨てがたいものがあります。
そこで、マカーな人ならMake+Xcodeというわけです。
ビルドシステムが古風な分、他はリッチな環境で行こうではありませんか。