次の方法で共有


コンパイラとビルドのプロパティの設定

Visual Studio IDE では、プロジェクトのコンパイルとビルドに必要なプロパティを表示および編集できます。 この情報には、アプリケーション名、拡張機能 (DLL、LIB、EXE など)、コンパイラ オプション、リンカー オプション、デバッガー設定、カスタム ビルドステップが含まれます。

これらのプロパティは、 プロパティ ページを使用して表示および変更できます。 プロパティ ページにアクセスするには、メイン メニューで [プロジェクト]>[project-name のプロパティ] を選択するか、ソリューション エクスプローラーでプロジェクト ノードを右クリックし、[プロパティ] を選択します。

既定のプロパティ

プロジェクトを作成すると、システムによってさまざまなプロパティの値が割り当てられます。 プロジェクトの種類およびアプリ ウィザードで選んだオプションにより、既定値は若干異なります。 たとえば、Active Template Library (ATL) プロジェクトには、Microsoft Interface Definition Language (MIDL) ファイルに関連するプロパティがありますが、これらのプロパティは基本的なコンソール アプリケーションには存在しません。 既定のプロパティは、[ プロパティ ページ ] ウィンドウの [詳細設定] ウィンドウに表示されます。

[詳細] ウィンドウが選択されている [Visual Studio プロジェクトのプロパティ] ダイアログ ボックスのスクリーンショット。MFC の使用、文字セットなどのプロパティが強調表示されます。

ビルド構成とターゲット プラットフォームにプロパティを適用する

アプリケーション名などの一部のプロパティは、デバッグ ビルドかリリース ビルドかに関係なく、ビルドのバリエーションとターゲット プラットフォームのすべてに適用されます。 ただし、ほとんどのプロパティは構成に依存します。 正しいコードを生成するには、プログラムが実行される特定のプラットフォームと、使う特定のコンパイラ オプションの両方をコンパイラに指示する必要があります。 そのため、プロパティを設定するときは、新しい値を適用する必要がある構成とプラットフォームに注意を払う必要があります。 "デバッグ Win32" ビルドだけに適用する必要がありますか、それとも "デバッグ ARM64" と "デバッグ x64" にも適用する必要がありますか。 たとえば、既定の [最適化] プロパティは、リリース構成では [実行速度 (/O2)] に設定されますが、デバッグ構成では無効になっています。

プロパティ値を適用する必要がある構成とプラットフォームは、いつでも表示および変更できます。 次の図のプロパティ ページでは、構成とプラットフォームの情報が上部のコントロールに表示されています。 ここで [最適化] プロパティを設定すると、現在アクティブな構成として赤い矢印で示されている "デバッグ Win32" ビルドのみに設定が適用されます。

Visual Studio の [プロパティ ページ] ダイアログのスクリーンショット。

このページでは C/C++、最適化が開かれています。 最適化設定は無効 (/Od) に設定されており、コールアウトが示されています。矢印は、プロジェクト プロパティ ページの [構成] 設定 ([アクティブ (デバッグ)] に設定) と、ツール バーの [ソリューション構成] ドロップダウンの設定 ([デバッグ] に設定) との間の関係をコールアウトで示しています。 別の矢印は、プロジェクト プロパティ ページのプラットフォーム設定 ([アクティブ (Win32)] に設定) と、ツール バーのソリューション プラットフォーム ドロップダウンの設定 ([x86] に設定) の間の関係をコールアウトで示しています。

次の図も同じプロジェクトのプロパティ ページですが、構成がリリースに変更されています。 [最適化] プロパティの値が異なることに注意してください。 また、アクティブな構成はまだデバッグであることにも注意してください。 ここでは、任意の構成のプロパティを設定することができます。アクティブである必要はありません。

Visual Studio プロジェクトの [プロパティ ページ] ダイアログのスクリーンショット。[構成] ドロップダウンが呼び出され、[リリース] に設定されます。最適化の設定は、最大速度スラッシュ O2 に設定されます。

対象プラットフォーム

ターゲット プラットフォーム とは、実行可能ファイルが実行されるデバイスとオペレーティング システムの種類を指します。 複数のプラットフォームを対象としてプロジェクトをビルドすることができます。 C++ プロジェクトで使用可能なターゲット プラットフォームは、プロジェクトの種類によって異なります。 Win32、x64、ARM、ARM64、Android、iOS などが含まれますが、これらだけではありません。 構成マネージャーで表示される x86 ターゲット プラットフォームは、ネイティブ C++ プロジェクトの Win32 と同じです。 Win32 とは 32 ビットの Windows を意味し、x64 は 64 ビットの Windows を意味します。 これら 2 つのプラットフォームについて詳しくは、「32 ビット アプリケーションの実行」をご覧ください。

構成マネージャーに表示されるターゲット プラットフォームの値 [任意の CPU] は、ネイティブ C++ プロジェクトには影響を与えません。 これは、C++/CLI とその他の .NET プロジェクトの種類のみに関係がある値です。 詳細については、「/CLRIMAGETYPE (CLR イメージのタイプの指定)」を参照してください。

デバッグ ビルド用のプロパティの設定の詳細については、以下を参照してください。

C++ のコンパイラとリンカーのオプション

C++ のコンパイラ オプションとリンカー オプションは、左側のウィンドウの [構成プロパティ] の下にある [C/C++] ノードと [リンカー] ノードの下に配置されています。 これらのオプションは、コンパイラに渡されるコマンドライン オプションに直接変換されます。 特定のオプションに関するドキュメントを参照するには、中央のウィンドウでオプションを選択し、F1 を押します。 または、MSVC コンパイラ オプションMSVC リンカー オプションで、すべてのオプションのドキュメントを参照できます。

[プロパティ ページ] ダイアログ ボックスには、現在のプロジェクトに適用するプロパティ ページのみが表示されます。 たとえば、プロジェクトに .idl ファイルが含まれていない場合、MIDL プロパティ ページは表示されません。 各プロパティ ページの設定の詳細については、「プロパティ ページ (C++)」を参照してください。

ディレクトリとパスの値

MSBuild では、インクルード ディレクトリやインクルード パスなどの特定の文字列値に対して "マクロ" と呼ばれるコンパイル時定数の使用がサポートされています。 マクロでは、Visual Studio や MSBuild システムによって定義されている値、またはユーザー定義の値を参照することができます。 マクロは $(macro-name)%(item-macro-name) のようになります。 プロパティ ページに表示され、プロパティ エディターを使用して参照したり変更したりできます。 ディレクトリ パスなどのハードコードされた値の代わりにマクロを使用します。 マクロを使用すると、マシン間および Visual Studio のバージョン間でプロパティ設定を共有しやすくなります。 また、プロジェクト設定が プロパティの継承に正しく参加していることを確認することもできます。

次の図は、Visual Studio C++ プロジェクトのプロパティ ページを示しています。 左側のウィンドウでは [VC++ ディレクトリ] "ルール" が選択され、右側のウィンドウには、そのルールに関連付けられているプロパティの一覧が表示されています。 プロパティ値は多くの場合、$(VC_SourcePath) などのマクロです。

さまざまなディレクトリのルールを示す Visual Studio の [プロパティ ページ] ダイアログのスクリーンショット。

[VC++ ディレクトリ] ページが開き、VC++ ディレクトリのルールのプロパティが表示されます。 ルールの例としては、$(VC_SourcePath) に設定されるソース ディレクトリがあります。 インクルードディレクトリ、ライブラリディレクトリ、実行可能ディレクトリなどには規則があります。

プロパティ エディターを使って、すべての使用可能なマクロの値を見ることができます。

定義済みマクロ

  • グローバル マクロ
    グローバル マクロは、プロジェクト構成のすべての項目に適用されます。 グローバル マクロの構文は $(name) のようになります。 Visual Studio インストールのルート ディレクトリを格納するグローバル マクロの例は $(VCInstallDir) です。 グローバル マクロは、MSBuild の PropertyGroup に対応します。

  • 項目マクロ
    項目マクロの構文は %(name) のようになります。 ファイルの場合、項目マクロはそのファイルにのみ適用されます。 たとえば、 %(AdditionalIncludeDirectories) を使用して、特定のファイルにのみ適用されるインクルード ディレクトリを指定できます。 この種類の項目マクロは、MSBuild の ItemGroup のメタデータに対応します。 プロジェクト構成のコンテキストで使うと、項目マクロは特定の種類のすべてのファイルに適用されます。 たとえば、C/C++ の [プリプロセッサの定義] 構成プロパティは、プロジェクトのすべての .cpp ファイルに適用する %(PreprocessorDefinitions) 項目マクロを使用できます。 この種類の項目マクロは、MSBuild の ItemDefinitionGroup のメタデータに対応します。 詳細については、「 項目定義」を参照してください。

ユーザー定義マクロ

プロジェクトのビルドで変数として使う "ユーザー定義マクロ" を作成できます。 たとえば、ユーザー定義のマクロを作成して、カスタム ビルド ステップまたはカスタム ビルド ツールに値を渡すことができます。 ユーザー定義マクロは、名前と値のペアです。 プロジェクト ファイルでは、$(name) という表記を使用して、その値にアクセスします。

ユーザー定義マクロは、プロパティ シートに格納されます。 プロジェクトにプロパティ シートが含まれていない場合は、「Visual Studio プロジェクトの設定を共有または再利用する」の手順に従って作成できます。

ユーザー定義マクロを作成するには

  1. プロパティ マネージャー ウィンドウを開きます メニューバーで、表示>その他のウィンドウ>プロパティ マネージャー を選択します。 プロパティ シートのショートカット メニュー (名前は .user で終わる) を開き、[プロパティ] を選択 します。 そのプロパティ シートの [プロパティ ページ] ダイアログ ボックスが開きます。

  2. ダイアログ ボックスの左ウィンドウで、[ユーザー マクロ] を選びます。 右ウィンドウで [マクロの追加] ボタンを選んで、[ユーザー マクロの追加] ダイアログ ボックスを開きます。

  3. ダイアログ ボックスで、マクロの名前と値を指定します。 必要に応じて、[ビルド環境でこのマクロを環境変数として設定します] チェック ボックスをオンにします。

プロパティ エディター

プロパティ エディターを使用して、特定の文字列プロパティを変更し、値としてマクロを選択できます。 プロパティ エディターにアクセスするには、プロパティ ページのプロパティを選択し、右側のドロップダウン矢印をクリックします。 ドロップダウン リストに [<編集>] が含まれている場合、それを選ぶと、そのプロパティのプロパティ エディターを表示できます。

Visual Studio プロジェクトにおける VC++ ディレクトリのプロパティ ページのスクリーンショット。

[インクルード ディレクトリ] 設定のプロパティ エディターが開きます。 インクルード ディレクトリに評価された値 (C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\Include) が表示されます。 2 つの継承された値 $(VC_IncludePath) と $(WindowsSDK_IncludePath) が表示されます。 [親またはプロジェクトの既定値から継承] チェックボックスがオンになっています。

プロパティ エディターで [マクロ] を選んで、使用できるマクロとその現在の値を見ることができます。 次の図は、[追加のインクルード ディレクトリ] プロパティのプロパティ エディターを [マクロ] ボタンを選んだ後に示しています。 [親またはプロジェクトの既定値から継承] チェック ボックスをオンにして新しい値を追加すると、現在継承されているすべての値に追加されます。 チェック ボックスをオフにすると、継承された値が新しい値に置き換えられます。 ほとんどの場合、チェック ボックスはオンのままにします。

[マクロ] ボタンを選んだ後のプロパティ エディター ダイアログのスクリーンショット。

[インクルード ディレクトリ] のプロパティ エディターが開いています。 評価された値は継承された値と共に表示されます。 リストボックスには、Unicode に設定されている $(CharacterSet) など、さまざまなマクロとその値が含まれています。

既定のディレクトリ セットにインクルード ディレクトリを追加する

プロジェクトにインクルード ディレクトリを追加する場合、すべての既定のディレクトリをオーバーライドしないことが重要です。 ディレクトリを追加する正しい方法は、 C:\MyNewIncludeDir\などの新しいパスを追加し、プロパティ値に $(IncludePath) マクロを追加することです。

すべてのプロパティをすばやく参照および検索するには

[すべてのオプション] プロパティ ページ ([プロパティ ページ] ダイアログ ボックスの >[C/C++] ノードの下) には、現在のコンテキストで使用できるプロパティを簡単に参照および検索する方法が用意されています。 これには特別な検索ボックスと単純な構文が用意されており、結果をフィルター処理できます。

  • プレフィックスなし: プロパティ名のみを検索します (大文字と小文字を区別しない部分文字列)。

  • '/' または '-': コンパイラ スイッチでのみ検索します (大文字と小文字を区別しないプレフィックス)。

  • v: 値でのみ検索します (大文字と小文字を区別しない部分文字列)。

ビルドの環境変数を設定する

MSVC コンパイラ (cl.exe) では、特定の環境変数 (具体的には LIBLIBPATHPATH、および INCLUDE) が認識されます。 IDE でビルドすると、VC++ ディレクトリのプロパティ ページで設定されたプロパティを使用して環境変数が設定されます。 LIBLIBPATH、および INCLUDE の値が (たとえば、開発者コマンド プロンプトによって) 既に設定されている場合、それらは対応する MSBuild プロパティの値に置き換えられます。 その後、ビルドによって、VC++ ディレクトリの実行ファイル ディレクトリのプロパティの値が PATH に追加されます。 ユーザー定義マクロを作成して [ビルド環境でこのマクロを環境変数として設定します] チェック ボックスをオンにすると、ユーザー定義の環境変数を設定できます。

デバッグ セッションの環境変数を設定する

プロジェクトの [プロパティ ページ] ダイアログ ボックスの左ウィンドウで [構成プロパティ] を展開し、[デバッグ] を選びます。

右ウィンドウで [環境] または [マージ環境] のプロジェクト設定を変更して、[OK] をクリックします。

このセクションの記事

関連項目