はじめに
今までC/C++に限らずCLIなプログラミングをする時はEmacs + tmux + cmakeとかでほとんど生きてきましたが、ちょっとはいまどきの開発環境を使おうかと思って試した結果の備忘録です。他のIDEはあまり試していませんが、ひとまず手始めにXcodeから手を出してみました。CLI開発でもIDEを使うメリットは以下のとおりです。
- 構文エラーを即座に表示してくれる。save→画面切り替え→コンパイル→エラー確認→コードに戻るという反復がなくなる
- 実行もコマンド一つでコンパイル→実行までして表示結果してくれるため動作が少なくてすむ
- デバッグ時にソースコードと連動して作業できる。gdbのように部分的にではなくソース全体を見ながらデバッガを使える
また以下の様なデメリットもあるので、自分の状況にあわせるのが重要です。
- 学習コスト。例えばキーバインドは慣れ親しんだものに近づけることはできるが完全には同じにならない
- 基本的にマウスの併用が必要。キーボードだけで操作することも無理ではないが、ある程度マウスの利用が想定されているのでそちらに従ったほうが効率がいい
今あるプロジェクトをXcodeプロジェクトに変換する
cmakeを使うと一発で出来ます。
% cmake -G Xcode .
とやることで、<プロジェクト名>..xcodeproj というディレクトリが作成されます。もし今現在cmakeで開発をしていなくても、さっとcmakeに乗り換えたほうがXcode環境を作るのが楽なのではないか、というぐらい簡単に扱えます。プロジェクト変換の際にはキャッシュファイルなど(CMakeFiles、CMakeCache.txtなど)を事前に削除しておく必要があります。
通常、cmakeでソースコードファイルを指定する時は以下のように*.ccなどのファイルを指定するだけでもコンパイルされますが、
FILE(GLOB BASESRCS "src/*.cc")
ADD_EXECUTABLE(myapp ${BASESRCS})
以下のようにヘッダもちゃんと指定しておくことで、Xcodeにヘッダファイルもちゃんと読み込まれるようになります。
FILE(GLOB BASESRCS "src/*.cc" "src/*.h")
ADD_EXECUTABLE(myapp ${BASESRCS})
<プロジェクト名>.xcodeproj をFinderからダブルクリックするとXcodeプロジェクト化した自分のプロジェクトが立ち上がります。
サーチパスを指定する
他ライブラリのインクルードファイルの読み込みや、リンクするライブラリへのパスを指定します。
- メイン画面で左上のShow the Project navigatorを選択
- プロジェクト名をダブルクリック
- ターゲットを選択する(重要)
- 検索ボックスに search path と入力
- Header Search Paths, Library Search Pathsをそれぞれダブルクリック
- パスを入力
すくなくともYosemiteでは/usr/local以下はデフォルトで無視されるので、homebrewのライブラリを使っている場合などは追加必須です。あと、ターゲットを目的の実行ファイルにあわせて設定しないと適切に動作しない場合があります。
編集する
基本的にCocoaフレームワークなので、Emacsキーバインドで動作します。
以下、キーバインド以外で今のところ主に使っている操作です。
コンパイル&実行
-
cmd-b
: でコンパイル -
cmd-r
: で現在指定しているターゲットを実行する
実行時引数や環境変数の指定
- メニューから Product → Schema → Edit Schema (cmd-<) を選択
- 左側の一覧からRun → Argument を選択して、Argument Passed on Launch や Environment Variables を設定可能
選択範囲のインデントを揃える
ctrl-i
宣言元の参照
-
cmd
+ クリック: 宣言元を開く -
cmd
+ ダブルクリック: 宣言元を別ウィンドウで開く
補完候補の呼び出し
ctrl-space
- 基本的には自動で補完候補が表示される
X.cc と X.h ファイルの切り替え
-
cmd-ctrl-上キー
orcmd-ctrl-下キー
レポジトリの操作
すでにgitで管理されているプロジェクトの場合、何も設定しなくてもgitを利用可能です。
メニューのSource Controlからcommit, push, pull, branch操作ができます。