VC PlusPlus:カスタムビルドステップ Custom Build Step

提供:yonewiki

VC PlusPlusに戻る

概要

 Visual Studioには1つのファイルのような位置づけでソリューションというものがあります。テキストエディタで例えるならば、名前を付けて保存を使って作られるテキストファイル(*.txt)のようなものがソリューション(*.sln)です。ひとつのアプリケーション一式がソリューションです。アプリケーションはいくつかのライブラリ(内部的に必要な静的ライブラリのlib、外部に作られる動的ライブラリ)とプログラム(*.exe)やその他の設定ファイル(*.ini, *.config, *.conf)や参照ファイル(*.data, *.dat, *.log, *.pak, *.xml, *.qm,* qml, *.mdあるいは*.(プログラム固有拡張子))から構成されます。管理人のような人間に成り損なったモノが作る簡単なアプリケーションならば、構成されているものは一つのプログラム(*.exe)だけだったりもします。優秀な人もいますよね。


 ソリューションの説明の後に述べたような個々のモノはソリューションの中にあるプロジェクトと呼ばれる単位になります。一プロジェクトあたりに出力は一つという感じです。*.vcxprojという拡張子のファイルです。


 vcxprojファイルには、プロジェクトに含まれるプログラムファイル名、コンパイラオプション、リンカーオプション、その他のプログラムファイル生成オプションがテキスト形式で記述されます。そしてビルドイベントとして、①ビルド前、②リンク前、③ビルド後の3つの部分で動作させるコマンドラインバッチ処理と④カスタムビルドステップ、⑤カスタムビルドルールという部分にもコマンドラインバッチ処理が実行できます。プログラムの他に使い方を記したテキストをプログラムから生成するというような使い方ができます。テキストの成型を手動で全部対応していると大変なのは、Web編集と同じです。このほか、プログラム以外のものを自動生成したい場合は、他のプロジェクトでプログラムを作って、それと連携してカスタムビルドを動かしたりするといったように様々なことが実施できます。ステップとイベントとツールと同じようなコマンドがあるけど、何なん?というと違いは動くタイミングです。

  • ①ビルド前のイベント
  • ⑤各ファイルに対するカスタム ビルド ツール
  • MIDL
  • リソース コンパイラ
  • C/C++ コンパイラ
  • ②Pre-Link イベント
  • リンカーまたはライブラリアン (必要に応じて)
  • マニフェスト ツール
  • BSCMake
  • ④プロジェクトに対するカスタム ビルド ステップ
  • ③ビルド後のイベント

 というようなタイミングで動作させることが出来ます。これは元々、MSBuildという名前のファイルで書かれていたコマンドだったのですが、vcxprojがこの機能を吸収した感じになっています。なので、本来は*.vcxprojに対して手動でテキストを記入するような感じだったのです。実は、2019の現在、今も手書きでカスタムビルドのようなコマンドを書くこともあります。この場合、プロジェクトのプロパティ(メニューの[プロジェクト]-[プロパティ]のカスタムビルド…の部分)からはどういうコマンドが実行されるのかわからない感じになります。*.vcxprojファイルをみないとわからない。人からもらってきた*.vcxprojはそのようになっていることもあります。不要なビルドステップが適当に書かれていたりもして、デバッグの都度、更新をしてもいないような、説明書や多国語対応のテキスト生成がされたりすることも起こります。人からもらってきた*.vcxprojなら中身をのぞいてみるような習慣は付けておいた方が良いでしょう。作者の意図を読み取ることができます。

 ちなみに不要なコマンドはバッチ処理と変わらない記述方法なので、毎回実行する必要のないコマンドはコメント化のために先頭に「REM 」のような記述をすると良いでしょう。


以下のような感じで*.vcxprojの中にカスタムビルドコマンドは定義されています。

<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
setlocale
REM echo"Custom Build Step"

:VCEnd
</Command>

 

VC PlusPlusに戻る