チュートリアル: MSBuild を使用した Visual C++ プロジェクトの作成
このチュートリアルでは、MSBuild を使用して、コマンド プロンプトで Visual C++ プロジェクトをビルドする方法を説明します。 まず、Visual C++ コンソール アプリケーション用の C++ ソース ファイルと XML ベースのプロジェクト ファイルを作成する方法を学習します。 次に、プロジェクトをビルドしてから、ビルド処理をカスタマイズする方法を学習します。
このチュートリアルでは、次の作業について説明します。
プロジェクトの C++ ソース ファイルの作成。
XML MSBuild プロジェクト ファイルの作成。
MSBuild を使用したプロジェクトのビルド。
MSBuild を使用したプロジェクトのカスタマイズ。
必須コンポーネント
このチュートリアルを完了するための要件は次のとおりです。
Visual Studio 2013
MSBuild システムの基本的な知識
C++ ソース ファイルの作成
このチュートリアルでは、ソース ファイルとヘッダー ファイルがあるプロジェクトを作成します。 main.cpp という名前のソース ファイルには、コンソール アプリケーションの main 関数を含めます。 main.h という名前のヘッダー ファイルには、iostream ヘッダー ファイルをインクルードするためのコードを含めます。 これらの C++ ファイルは、Visual Studio またはテキスト エディターを使用して作成できます。
プロジェクトの C++ ソース ファイルを作成するには
プロジェクトのディレクトリを作成します。
main.cpp という名前のファイルを作成し、このファイルに次のコードを追加します。
// main.cpp : the application source code. #include <iostream> #include "main.h" int main() { std::cout << "Hello, from MSBuild!\n"; return 0; }
main.h という名前のファイルを作成し、このファイルに次のコードを追加します。
// main.h: the application header code. /* Additional source code to include. */
プロジェクト ファイルXML MSBuild プロジェクト ファイルの作成
MSBuild プロジェクト ファイルは、プロジェクトのルート要素 (<Project>) が含まれる XML ファイルです。 次の例に示すプロジェクトでは、<Project> 要素に 7 個の子要素が含まれています。
3 個の項目グループ タグ (<ItemGroup>) によって、プロジェクトの構成とプラットフォーム、ソース ファイル名、およびヘッダー ファイル名が指定されます。
3 個のインポート タグ (<Import>) によって、Microsoft Visual C++ の設定の場所が指定されます。
1 個のプロパティ グループ タグ (<PropertyGroup>) によって、プロジェクト設定が指定されます。
MSBuild プロジェクト ファイルを作成するには
テキスト エディターを使用して myproject.vcxproj という名前のプロジェクト ファイルを作成し、次のルート <Project> 要素を追加します。 次のプロシージャ ステップの要素をルート <Project> タグの間に挿入します。
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="https://schemas.microsoft.com/developer/msbuild/2003"> </Project>
次の 2 個の <ProjectConfiguration> 子要素を <ItemGroup> 要素に追加します。 この子要素は、32 ビットの Windows オペレーティング システムのデバッグおよびリリース構成を指定します。
<ItemGroup> <ProjectConfiguration Include="Debug|Win32"> <Configuration>Debug</Configuration> <Platform>Win32</Platform> </ProjectConfiguration> <ProjectConfiguration Include="Release|Win32"> <Configuration>Release</Configuration> <Platform>Win32</Platform> </ProjectConfiguration> </ItemGroup>
このプロジェクトの既定の C++ 設定のパスを指定する次の <Import/> 要素を追加します。
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
2 個のプロジェクト プロパティを指定する次のプロパティ グループ要素 (<PropertyGroup>) を追加します。
<PropertyGroup> <ConfigurationType>Application</ConfigurationType> <PlatformToolset>v120</PlatformToolset> </PropertyGroup>
このプロジェクトの現在の C++ 設定のパスを指定する次の <Import/> 要素を追加します。
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
次の <ClCompile> 子要素を <ItemGroup> 要素に追加します。 この子要素は、コンパイルする C/C++ ソース ファイルの名前を指定します。
<ItemGroup> <ClCompile Include="main.cpp" /> </ItemGroup>
次の <ClInclude> 子要素を <ItemGroup> 要素に追加します。 この子要素は、C/C++ ソース ファイルに対応するヘッダー ファイルの名前を指定します。
<ItemGroup> <ClInclude Include="main.h" /> </ItemGroup>
このプロジェクトのターゲットを定義するファイルのパスを指定する次の <Import> 要素を追加します。
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />
完成したプロジェクト ファイル
次のコードは、前の手順で作成したプロジェクト ファイルのすべての内容です。
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
<PropertyGroup>
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ItemGroup>
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="main.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />
</Project>
MSBuild を使用したプロジェクトのビルド
コマンド プロンプトで次のコマンドを入力して、コンソール アプリケーションをビルドします。
msbuild myproject.vcxproj /p:configuration=debug
MSBuild は、出力ファイルのディレクトリを作成し、プロジェクトをコンパイルおよびリンクして Myproject.exe プログラムを生成します。 ビルド処理が完了したら、次のコマンドを使用してアプリケーションを実行します。
myproject
アプリケーションによって、コンソール ウィンドウに "Hello, from MSBuild!" と表示されます。
プロジェクトのカスタマイズ
MSBuild では、定義済みのビルド ターゲットを実行したり、ユーザー定義のプロパティを適用したりできるほか、カスタム ツール、イベント、およびビルド ステップを使用することができます。 このセクションでは、次の作業について説明します。
MSBuild とビルド ターゲットの併用。
MSBuild とビルド プロパティの併用。
MSBuild と 64 ビットのコンパイラおよびツールの併用。
MSBuild と他のツールセットの併用。
MSBuild のカスタマイズの追加。
MSBuild とビルド ターゲットの併用
ビルド ターゲットは、ビルド時に実行できる定義済みまたはユーザー定義のコマンドの名前付きセットです。 ターゲット コマンド ライン オプション (/t) を使用して、ビルド ターゲットを指定します。 myproject サンプル プロジェクトの場合、定義済みの clean ターゲットがデバッグ フォルダーのすべてのファイルを削除し、新しいログ ファイルを作成します。
コマンド プロンプトで次のコマンドを入力して、myproject を削除します。
msbuild myproject.vcxproj /t:clean
MSBuild とビルド プロパティの併用
プロパティ コマンド ライン オプション (/p) によって、プロジェクト ビルド ファイルのプロパティをオーバーライドできます。 myproject サンプル プロジェクトでは、Configuration プロパティによってリリース用またはデバッグ用のビルド構成が指定されます。 また、ビルド済みアプリケーションを実行するためのオペレーティング システムが、Platform プロパティで指定されます。
コマンド プロンプトで次のコマンドを入力して、32 ビット Windows で実行される予定の myproject アプリケーションのデバッグ ビルドを作成します。
msbuild myproject.vcxproj /p:configuration=debug /p:platform=win32
myproject サンプル プロジェクトが、64 ビット Windows の構成と、別の myplatform という名前のカスタム オペレーティング システムの構成も定義していると想定します。
コマンド プロンプトで次のコマンドを入力して、64 ビット Windows で実行するリリース ビルドを作成します。
msbuild myproject.vcxproj /p:configuration=release /p:platform=x64
コマンド プロンプトで次のコマンドを入力して、myplatform のリリース ビルドを作成します。
msbuild myproject.vcxproj /p:configuration=release /p:platform=myplatform
MSBuild と 64 ビットのコンパイラおよびツールの併用
64 ビット Windows に Visual C++ がインストールされている場合、既定では、64 ビットの x64 ネイティブおよびクロス ツールがインストールされます。 PreferredToolArchitecture プロパティを設定することで、アプリケーションのビルドには 64 ビットのコンパイラおよびツールが使用されるように MSBuild を構成できます。 このプロパティは、プロジェクトの構成とプラットフォームのプロパティには影響しません。 既定では、32 ビット版のツールが使用されます。 64 ビット版のコンパイラおよびツールを指定するには、次のプロパティ グループ要素を Myproject.vcxproj プロジェクト ファイル内の <Import /> 要素 Microsoft.Cpp.default.props の後に追加します。
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
64 ビット ツールを使用してアプリケーションをビルドするには、コマンド プロンプトで次のコマンドを入力します。
msbuild myproject.vcxproj /p:PreferredToolArchitecture=x64
MsBuild と他のツールセットの併用
他バージョンの Visual C++ 用のツールセットおよびライブラリがインストールされている場合、MSBuild では、現在の Visual C++ バージョンまたはインストールされている別のバージョン用にアプリケーションをビルドできます。 たとえば Visual Studio 2012 の Visual C++ がインストールされている場合、Windows XP 用の Visual C++ 11.0 ツールセットを指定するには、次のプロパティ グループ要素を Myproject.vcxproj プロジェクト ファイル内の Microsoft.Cpp.props <Import /> 要素の後に追加します。
<PropertyGroup>
<PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup>
Visual C++ 11.0 Windows XP ツールセットでプロジェクトをリビルドするには、次のコマンドのいずれかを入力します。
msbuild myproject.vcxproj /p:PlatformToolset=v110_xp /t:rebuild
msbuild myproject.vcxproj /t:rebuild
MSBuild のカスタマイズの追加
MSBuild では、さまざまな方法でビルド処理をカスタマイズできます。 次のトピックでは、MSBuild プロジェクトにカスタム ビルド ステップ、ツール、およびイベントを追加する方法を示します。