チュートリアル: MSBuild を使用した Visual C++ プロジェクトの作成
更新 : 2011 年 4 月
このチュートリアルでは、MSBuild を使用して、コマンド プロンプトで Visual C++ プロジェクトをビルドする方法を説明します。 まず、Visual C++ コンソール アプリケーション用の C++ ソース ファイルと XML ベースのプロジェクト ファイルを作成する方法を学習します。 次に、プロジェクトをビルドしてから、ビルド処理をカスタマイズする方法を学習します。
このチュートリアルでは、次の作業について説明します。
プロジェクトの C++ ソース ファイルの作成。
XML MSBuild プロジェクト ファイルの作成。
MSBuild を使用したプロジェクトのビルド。
MSBuild を使用したプロジェクトのカスタマイズ。
必須コンポーネント
このチュートリアルを完了するための要件は次のとおりです。
Visual Studio 2010
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="4.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> <ShowAllFiles>false</ShowAllFiles> </PropertyGroup>
このプロジェクトの現在の C++ 設定のパスを指定する次の <Import/> 要素を追加します。
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
次の <ClCompile> 子要素を <ImportGroup> 要素に追加します。 この子要素は、コンパイルする C/C++ ソース ファイルの名前を指定します。
<ItemGroup> <ClCompile Include="main.cpp" /> </ItemGroup>
次の <ClInclude> 子要素を <ImportGroup> 要素に追加します。 この子要素は、C/C++ ソース ファイルに対応するヘッダー ファイルの名前を指定します。
<ItemGroup> <ClInclude Include="main.h" /> </ItemGroup>
このプロジェクトのターゲットを定義するファイルのパスを指定する次の <Import> 要素を追加します。
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />
完成したプロジェクト ファイル
次のコードは、前の手順で作成したプロジェクト ファイルのすべての内容です。
<Project DefaultTargets="Build" ToolsVersion="4.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>
<ShowAllFiles>false</ShowAllFiles>
</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 と他のツールセットの併用。
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 と他のツールセットの併用
Visual C++ 9.0 と 10.0 の両方のライブラリ (ツールセット) がインストールされている場合、MSBuild は Visual C++ 9.0 と 10.0 のどちらかのアプリケーションをビルドできます。 Visual C++ 9.0 ツールセットを指定するには、次のプロパティ グループ要素を Myproject.vcxproj プロジェクト ファイルの Microsoft.Cpp.props の <Import /> 要素の後に追加します。
<PropertyGroup>
<PlatformToolset>v90</PlatformToolset>
</PropertyGroup>
Visual C++ 9.0 ツールセットでプロジェクトをビルドし直すには、次のコマンドのいずれかを入力します。
msbuild myproject.vcxproj /p:PlatformToolset=v90 /t:rebuild
msbuild myproject.vcxproj /t:rebuild
MSBuild のカスタマイズの追加
MSBuild では、さまざまな方法でビルド処理をカスタマイズできます。 次のトピックでは、MSBuild プロジェクトにカスタム ビルド ステップ、ツール、およびイベントを追加する方法を示します。
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2011 年 4 月 |
最初のコード スニペットで "xmlns" 属性に引用符を追加しました。 |
カスタマー フィードバック |