コンパイラとビルドプロパティの設定Set compiler and build properties

IDE では、プロジェクトをビルドするために必要なすべての情報は "プロパティ" として公開されます。In the IDE, all information that is needed to build a project is exposed as properties. この情報には、アプリケーションの名前、拡張子 (DLL、LIB、EXE)、コンパイラ オプション、リンカー オプション、デバッガーの設定、カスタム ビルド ステップ、その他多くの情報が含まれます。This information includes the application name, extension (such as DLL, LIB, EXE), compiler options, linker options, debugger settings, custom build steps, and many other things. 通常、プロパティページを使用して、これらのプロパティを表示および変更します。Typically, you use property pages to view and modify these properties. プロパティページにアクセスするには、メインメニューから [プロジェクト > _projectname_のプロパティ] を選択するか、ソリューションエクスプローラーでプロジェクトノードを右クリックし、 [プロパティ] を選択します。To access the property pages, choose Project > projectname Properties from the main menu, or right-click on the project node in Solution Explorer and choose Properties.

既定のプロパティDefault properties

プロジェクトを作成すると、システムによってさまざまなプロパティの値が割り当てられます。When you create a project, the system assigns values for various properties. プロジェクトの種類およびアプリ ウィザードで選んだオプションにより、既定値は若干異なります。The defaults vary somewhat depending on the kind of project and what options you choose in the app wizard. たとえば、ATL プロジェクトには MIDL ファイルに関するプロパティがありますが、基本的なコンソール アプリケーションにはありません。For example, an ATL project has properties related to MIDL files, but these are absent in a basic console application. 既定のプロパティは、プロパティ ページの [全般] ウィンドウに表示されます。The default properties are shown in the General pane in the Property Pages:

Visual C+ +プロジェクトの既定Visual C++ Project Defaults

ビルド構成とターゲットプラットフォームへのプロパティの適用Applying properties to build configurations and target platforms

アプリケーション名などの一部のプロパティは、ターゲット プラットフォームが何か、またはデバッグ ビルドかリリース ビルドかに関係なく、ビルドのすべてのバリエーションに適用されます。Some properties, such as the application name, apply to all build variations, regardless of the target platform or whether it is a debug or release build. ただし、ほとんどのプロパティは構成に依存します。But most properties are configuration-dependent. これは、コンパイラは、プログラムが実行される特定のプラットフォームと、正しいコードを生成するために使う特定のコンパイラ オプションを、知る必要があるためです。This is because the compiler has to know what specific platform the program will run on and what specific compiler options to use in order to generate the correct code. そのため、プロパティを設定するときは、新しい値を適用する必要がある構成とプラットフォームに注意を払う必要があります。Therefore, when you set a property, it is important to pay attention to which configuration and platform the new value should apply to. "デバッグ Win32" ビルドだけに適用する必要がありますか、それとも "デバッグ ARM" と "デバッグ x64" にも適用する必要がありますか。Should it apply only to Debug Win32 builds, or should it also apply to Debug ARM and Debug x64? たとえば、既定の [最適化] プロパティは、リリース構成では [実行速度 (/O2)] に設定されますが、デバッグ構成では無効になっています。For example, the Optimization property, by default, is set to Maximize Speed (/O2) in a Release configuration, but is disabled in the Debug configuration.

プロパティ ページは、常に見ることができ、必要に応じて、プロパティ値を適用する必要がある構成とプラットフォームを変更できるように設計されています。The property pages are designed so that you can always see, and if necessary modify, which configuration and platform a property value should apply to. 次の図のプロパティ ページでは、上部のリスト ボックスに構成とプラットフォームの情報が示されています。The following illustration shows the property pages with the configuration and platform information in the list boxes at the top. ここで [最適化] プロパティを設定すると、設定は "デバッグ Win32" ビルドだけに適用されます。赤い矢印で示されているように、それはアクティブな構成です。When the Optimization property is set here, it will apply only to Debug Win32 builds, which happens to be the active configuration, as shown by the red arrows.

アクティブな構成が示されている Visual C++ のプロパティ ページVisual C++ Property Pages showing active configuration

次の図も同じプロジェクトのプロパティ ページですが、構成がリリースに変更されています。The following illustration shows the same project property page, but the configuration has been changed to Release. [最適化] プロパティの値が異なることに注意してください。Note the different value for the Optimization property. また、アクティブな構成はまだデバッグであることにも注意してください。Also note that the active configuration is still Debug. ここでは、任意の構成のプロパティを設定することができます。アクティブである必要はありません。You can set properties for any configuration here; it doesn't have to be the active one.

リリース構成が示されている Visual C++ のプロパティ ページVisual C++ Property Pages showing release config

ターゲット プラットフォームTarget platforms

"ターゲット プラットフォーム" とは、実行可能ファイルが実行されるデバイスとオペレーティング システムの種類のことです。Target platform refers to the kind of device and/or operating system that the executable will run on. 複数のプラットフォームを対象としてプロジェクトをビルドすることができます。You can build a project for more than one platform. C++ プロジェクトで使用可能なターゲット プラットフォームは、プロジェクトの種類によって異なります。Win32、x64、ARM、Android、iOS などが含まれますが、これらだけではありません。The available target platforms for C++ projects depend on the kind of project; they include but are not limited to Win32, x64, ARM, Android, and iOS. 構成マネージャーで表示される x86 ターゲット プラットフォームは、ネイティブ C++ プロジェクトの Win32 と同じです。The x86 target platform that you might see in Configuration Manager is identical to Win32 in native C++ projects. Win32 とは 32 ビットの Windows を意味し、x64 は 64 ビットの Windows を意味します。Win32 means 32-bit Windows and x64 means 64-bit Windows. これら 2 つのプラットフォームについて詳しくは、「32 ビット アプリケーションの実行」をご覧ください。For more information about these two platforms, see Running 32-bit applications.

構成マネージャーに表示されるターゲット プラットフォームの値 [任意の CPU] は、ネイティブ C++ プロジェクトには影響を与えません。これは、C++/CLI および他の .NET プロジェクトの種類に関係がある値です。The Any CPU target platform value that you might see in Configuration Manager has no effect on native C++ projects; it is relevant for C++/CLI and other .NET project types. 詳細については、「/CLRIMAGETYPE (CLR イメージのタイプの指定)」を参照してください。For more information, see /CLRIMAGETYPE (Specify Type of CLR Image).

デバッグビルドのプロパティの設定の詳細については、以下を参照してください。For more information about setting properties for a Debug build, see:

C++コンパイラオプションとリンカーオプションC++ compiler and linker options

C++コンパイラオプションとリンカーオプションは、左側のウィンドウの [構成プロパティ] の下にある [C/C++ ] ノードと [リンカー] ノードの下にあります。C++ compiler and linker options are located under the C/C++ and Linker nodes in the left pane under Configuration Properties. これらは、コンパイラに渡されるコマンドラインオプションに直接変換されます。These translate directly to command-line options that will be passed to the compiler. 特定のオプションに関するドキュメントを読むには、中央のウィンドウでオプションを選択し、 F1キーを押します。To read documentation about a specific option, select the option in the center pane and press F1. または、 MSVC Compiler optionsMSVC リンカーオプションのすべてのオプションに関するドキュメントを参照することもできます。Or, you can browse documentation for all the options at MSVC Compiler Options and MSVC Linker Options.

[プロパティページ] ダイアログボックスには、現在のプロジェクトに関連するプロパティページのみが表示されます。The Property Pages dialog box shows only the property pages that are relevant to the current project. たとえば、プロジェクトに .idl ファイルが含まれていない場合、MIDL プロパティ ページは表示されません。For example, if the project does not have an .idl file, the MIDL property page is not displayed. 各プロパティページの設定の詳細については、「プロパティページC++()」を参照してください。For more information about the setting on each property pages, see Property Pages (C++).

ディレクトリとパスの値Directory and path values

MSBuild では、特定の文字列値 (ディレクトリやパスなど) に対して "マクロ" と呼ばれるコンパイル時の定数を使用できます。MSBuild supports the use of compile-time constants called "macros" for certain string values include directories and paths. これらは、プロパティページで公開されます。プロパティページでは、プロパティエディターを使用して参照したり変更したりできます。These are exposed in the property pages, where you can refer to and modify them by using the Property Editor.

次の図は、Visual Studio C++プロジェクトのプロパティページを示しています。The following illustration shows the property pages for a Visual Studio C++ project. 左側のウィンドウでは [VC++ ディレクトリ] ルール が選択され、右側のウィンドウには、そのルールに関連付けられているプロパティの一覧が表示されています。In the left pane, the VC++ Directories rule is selected, and the right pane lists the properties that are associated with that rule. 値はマクロと呼ばれます。 $(...)The $(...) values are called macros. "マクロ" とは、Visual Studio や MSBuild システムによって定義されている値またはユーザー定義の値を参照できるコンパイル時定数です。A macro is a compile-time constant that can refer to a value that is defined by Visual Studio or the MSBuild system, or to a user-defined value. ディレクトリパスなどのハードコーディングされた値ではなくマクロを使用することにより、コンピューター間および Visual Studio のバージョン間でプロパティの設定をより簡単に共有できるようになります。また、プロジェクト設定をプロパティに正しく参加させることができます。 継承By using macros instead of hard-coded values such as directory paths, you can more easily share property settings between machines and between versions of Visual Studio, and you can better ensure that your project settings participate correctly in property inheritance.

プロジェクトのプロパティ ページProject property pages

プロパティ エディターを使って、すべての使用可能なマクロの値を見ることができます。You can use the Property Editor to view the values of all available macros.

定義済みマクロPredefined macros

グローバル マクロglobal macros
プロジェクト構成のすべての項目に適用されます。Applies to all items in a project configuration. $(name) の構文を持ちます。Has the syntax $(name). Visual Studio インストールのルート ディレクトリを格納するグローバル マクロの例は $(VCInstallDir) です。An example of a global macro is $(VCInstallDir), which stores the root directory of your Visual Studio installation. グローバル マクロは、MSBuild の PropertyGroup に対応します。A global macro corresponds to a PropertyGroup in MSBuild.

項目マクロitem macros
%(name) の構文を持ちます。Has the syntax %(name). ファイルの場合、項目マクロはそのファイルのみに適用されます。たとえば、%(AdditionalIncludeDirectories) を使用して、特定のファイルだけに適用するインクルード ディレクトリを指定します。For a file, an item macro applies only to that file—for example, you can use %(AdditionalIncludeDirectories) to specify include directories that apply only to a particular file. この種類の項目マクロは、MSBuild の ItemGroup のメタデータに対応します。This kind of item macro corresponds to an ItemGroup metadata in MSBuild. プロジェクト構成のコンテキストで使用される場合、項目マクロは、特定の種類のすべてのファイルに適用されます。When it's used in the context of a project configuration, an item macro applies to all files of a certain type. たとえば、C/C++ の [プリプロセッサの定義] 構成プロパティは、プロジェクトのすべての .cpp ファイルに適用する %(PreprocessorDefinitions) 項目マクロを使用できます。For example, the C/C++ Preprocessor Definitions configuration property can take a %(PreprocessorDefinitions) item macro that applies to all .cpp files in the project. この種類の項目マクロは、MSBuild の ItemDefinitionGroup のメタデータに対応します。This kind of item macro corresponds to an ItemDefinitionGroup metadata in MSBuild. 詳細については、「項目定義」を参照してください。For more information, see Item Definitions.

ユーザー定義マクロUser-defined macros

プロジェクトのビルドで変数として使う "ユーザー定義マクロ" を作成できます。You can create user-defined macros to use as variables in project builds. たとえば、ユーザー定義のマクロを作成して、カスタム ビルド ステップまたはカスタム ビルド ツールに値を渡すことができます。For example, you could create a user-defined macro that provides a value to a custom build step or a custom build tool. ユーザー定義マクロは、名前と値のペアです。A user-defined macro is a name/value pair. プロジェクト ファイル内では、 $( name ) という表記を使って、その値にアクセスします。In a project file, use the $(name) notation to access the value.

ユーザー定義マクロは、プロパティ シートに格納されます。A user-defined macro is stored in a property sheet. プロジェクトにプロパティシートがまだ含まれていない場合は、「 Visual Studio プロジェクトの設定を共有または再利用する」の手順に従って作成できます。If your project does not already contain a property sheet, you can create one by following the steps under Share or reuse Visual Studio project settings.

ユーザー定義マクロを作成するにはTo create a user-defined macro

  1. [プロパティマネージャー] ウィンドウを開きます。Open the Property Manager window. (メニューバーで、[表示 > プロパティマネージャーまたはその他のウィンドウ > プロパティマネージャー表示 > します)] を選択します。プロパティシート (名前の末尾が. user) のショートカットメニューを開き、 [プロパティ] を選択します。(On the menu bar, choose View > Property Manager or View > Other Windows > Property Manager.) Open the shortcut menu for a property sheet (its name ends in .user) and then choose Properties. そのプロパティ シートの [プロパティ ページ] ダイアログ ボックスが開きます。The Property Pages dialog box for that property sheet opens.

  2. ダイアログ ボックスの左ウィンドウで、 [ユーザー マクロ] を選びます。In the left pane of the dialog box, select User Macros. 右ウィンドウで [マクロの追加] ボタンを選んで、 [ユーザー マクロの追加] ダイアログ ボックスを開きます。In the right pane, choose the Add Macro button to open the Add User Macro dialog box.

  3. ダイアログ ボックスで、マクロの名前と値を指定します。In the dialog box, specify a name and value for the macro. 必要に応じて、 [ビルド環境でこのマクロを環境変数として設定します] チェック ボックスをオンにします。Optionally, select the Set this macro as an environment variable in the build environment check box.

プロパティエディターProperty Editor

プロパティ エディターを使用して、特定の文字列プロパティを変更し、値としてマクロを選択できます。You can use the Property Editor to modify certain string properties and select macros as values. プロパティ エディターにアクセスするには、プロパティ ページのプロパティを選択し、右側のドロップダウン矢印をクリックします。To access the Property Editor, select a property on a property page and then choose the down arrow button on the right. ドロップダウン リストに [<編集>] が含まれている場合、それを選ぶと、そのプロパティのプロパティ エディターを表示できます。If the drop-down list contains <Edit>, then you can choose it to display the Property Editor for that property.

Property_Editor_DropdownProperty_Editor_Dropdown

プロパティ エディターで [マクロ] を選んで、使用できるマクロとその現在の値を見ることができます。In the Property Editor, you can choose the Macros button to view the available macros and their current values. 次の図は、 [マクロ] を選んだ後の [追加のインクルード ディレクトリ] プロパティのプロパティ エディターを示したものです。The following illustration shows the Property Editor for the Additional Include Directories property after the Macros button was chosen. [親またはプロジェクトの既定値から継承] チェック ボックスをオンにして新しい値を追加すると、現在継承されているすべての値に追加されます。When the Inherit from parent or project defaults check box is selected and you add a new value, it is appended to any values that are currently being inherited. チェック ボックスをオフにすると、継承された値が新しい値に置き換えられます。If you clear the check box, your new value replaces the inherited values. ほとんどの場合、チェック ボックスはオンのままにします。In most cases, leave the check box selected.

プロパティ エディター、Visual C++Property editor, Visual C++

既定のディレクトリのセットにインクルードディレクトリを追加するAdd an include directory to the set of default directories

プロジェクトにインクルード ディレクトリを追加する場合、すべての既定のディレクトリをオーバーライドしないことが重要です。When you add an include directory to a project, it is important not to override all the default directories. ディレクトリを追加するための正しい方法は、"C:\MyNewIncludeDir" のような新しいパスを追加し、プロパティ値に $(IncludePath) マクロを追加することです。The correct way to add a directory is to append the new path, for example "C:\MyNewIncludeDir", and then to Append the $(IncludePath) macro to the property value.

すべてのプロパティをすばやく参照および検索するQuickly browse and search all properties

[すべてのオプション] プロパティ ページ ( [プロパティ ページ] ダイアログ ボックスの [構成プロパティ] > [C/C++] ノードの下) には、現在のコンテキストで使用できるプロパティを簡単に参照および検索する方法が用意されています。The All Options property page (under the Configuration Properties | C/C++ node in the Property Pages dialog box) provides a quick way to browse and search the properties that are available in the current context. これには特別な検索ボックスと単純な構文が用意されており、結果をフィルター処理できます。It has a special search box and a simple syntax to help you filter results:

プレフィックスなし:No prefix:
プロパティ名のみで検索 (大文字と小文字を区別しない部分文字列)。Search in property names only (case-insensitive substring).

'/' または '-' :'/' or '-' :
コンパイラ スイッチのみで検索 (大文字と小文字を区別しないプレフィックス)。Search only in compiler switches (case-insensitive prefix)

v:v:
値のみで検索 (大文字と小文字を区別しない部分文字列)。Search only in values (case-insensitive substring).

ビルドの環境変数を設定するSet environment variables for a build

MSVC コンパイラ (cl.exe) は、特定の環境変数 (具体的には LIB、LIBPATH、PATH、INCLUDE) を認識します。The MSVC compiler (cl.exe) recognizes certain environment variables, specifically LIB, LIBPATH, PATH, and INCLUDE. IDE でビルドすると、VC++ ディレクトリのプロパティ ページで設定されたプロパティを使用して環境変数が設定されます。When you build with the IDE, the properties that are set in the VC++ Directories Property Page property page are used to set those environment variables. LIB、LIBPATH、および INCLUDE の値が既に設定されている場合 (たとえば、開発者コマンド プロンプトによって)、それらは対応する MSBuild プロパティの値に置き換えられます。If LIB, LIBPATH, and INCLUDE values have already been set, for example by a Developer Command Prompt, they are replaced with the values of the corresponding MSBuild properties. その後、ビルドによって、VC++ ディレクトリの実行ファイル ディレクトリのプロパティの値が PATH に追加されます。The build then prepends the value of the VC++ Directories executable directories property to PATH. ユーザー定義マクロを作成して [ビルド環境でこのマクロを環境変数として設定します] チェック ボックスをオンにすると、ユーザー定義の環境変数を設定できます。You can set a user-defined environment variable by created a user-defined macro and then checking the box that says Set this macro as an environment variable in the build environment.

デバッグセッションの環境変数を設定するSet environment variables for a debugging session

プロジェクトの [プロパティ ページ] ダイアログ ボックスの左ウィンドウで [構成プロパティ] を展開し、 [デバッグ] を選びます。In the left pane of the project's Property Pages dialog box, expand Configuration Properties and then select Debugging.

右ウィンドウで [環境] または [マージ環境] のプロジェクト設定を変更して、 [OK] をクリックします。In the right pane, modify the Environment or Merge Environment project settings and then choose the OK button.

このセクションの内容In this section

Visual Studio プロジェクトの設定を共有または再利用するShare or reuse Visual Studio project settings
共有または再利用が可能なカスタムビルド設定を使用して、props ファイルを作成する方法。How to create a .props file with custom build settings that can be shared or reused.

プロジェクト プロパティの継承Project property inheritance
ビルドプロセスにおける、props、.targets、.vcxproj ファイル、および環境変数の評価順序について説明します。Describes the order of evaluation for the .props, .targets, .vcxproj files and environment variables in the build process.

プロジェクト ファイルを変更しないでプロパティとターゲットを変更するModify properties and targets without changing the project file
プロジェクトファイルを変更することなく、一時的なビルド設定を作成する方法。How to create temporary build settings without having to modify a project file.

関連項目See also

Visual Studio プロジェクト - C++Visual Studio Projects - C++
.vcxproj と .props のファイル構造.vcxproj and .props file structure
プロパティ ページの XML ファイルProperty page XML files