ビルドアクションの使用
ビルドアクションを使用して、ビルドプロセス中に特定の順序でコマンドを実行できます。このようにして、ビルドプロセスをカスタマイズし、コマンド間の依存関係を使用できます。
ビルドアクションは、コマンド、入力ファイルと出力ファイルのセット、コマンドが実行されるディレクトリ、ビルドオーダーで構成されます。ビルドアクションはNinjaに送信され、この情報を使用してビルドプロセス中にコマンドが実行される順序を作成します。
プロジェクト>オプション>ビルドアクションオプション では、必要なアクションを指定できます。ビルドアクションオプションの詳細については、ビルドアクションオプションを参照してください。
ビルドアクションの使用に関するヒント
ダミーの出力ファイルを他のビルドアクションの入力として使用することで、ビルドアクション間に依存関係を作成できます。ダミーの出力ファイルは、ビルドアクションの出力ファイルとしてリストされるが、そのビルドアクションから生成されたものではないファイルです。
次の場合、ビルドアクションはビルドプロセスで実行されます。
一覧表示されている出力ファイルはすべてダミーの出力ファイルである。
リストされた入力ファイルのタイムスタンプが、リストされた出力ファイルのいずれかよりも新しい。
コマンドラインまたは作業ディレクトリが前回のビルドから変更されている。
タイムスタンプにビルドアクションを使用する
ビルド前のアクションを使用して、結果のバイナリファイルにビルドのタイムスタンプを埋め込むことができます。手順は次のとおりです。
専用のタイムスタンプファイル(
timestamp.cなど)を作成し、プロジェクトに追加します。このソースファイルで、プリプロセッサマクロ
__TIME__と__DATE__を使用して文字列変数を初期化します。プロジェクト>オプション>ビルドアクションを選択して、ビルドアクション設定 ページを開きます。
新規作成をクリックして、新しいビルドアクションダイアログボックスを表示します。
コマンドラインテキストフィールドに、次のコマンドラインを指定します。
del "$OBJ_DIR$\timestamp.o"このコマンドは、
timestamp.oオブジェクトファイルを削除します。また別の方法として、オープンソースコマンドラインユーティリティ
touch(またはソースファイルの修正時間を更新する他の適切なユーティリティ) をこの目的に使用できます。以下に例を示します。touch $PROJ_DIR$\timestamp.c
ビルドオーダーをリンクしてから実行に設定し、OKをクリックします。
プロジェクトをビルドするたびに、
timestamp.cが再コンパイルされ、正しいタイムスタンプがバイナリファイルに入ります。
ビルドアクションを使用してファイルをコピーする
ビルドアクションを使用して、ネットワークドライブなどのリモートロケーションからファイルを自動的にコピーできます。手順は次のとおりです。
プロジェクト>オプション>ビルドアクションを選択して、ビルドアクション設定 ページを開きます。
新規作成をクリックして、新しいビルドアクションダイアログボックスを表示します。
コマンドラインテキストフィールドに、たとえば次のコマンドラインを指定します。
copy \\my-network-drive\remotefile.c localcopy.cこのコマンドは、ネットワークドライブからプロジェクトディレクトリにファイルをコピーします。
出力ファイルボックスで、
localcopy.cを指定します。入力ファイルボックスで、
\\my-network-drive \remotefile.cを指定します。ビルドオーダーの設定を自動 (入力と出力がベース) のままにして、OKをクリックします。
メイクコマンドを使用するたびに、
localcopy.cが存在しないかremotefile.cより古い場合、ビルドアクションはネットワークドライブからプロジェクトディレクトリにファイルをコピーします。