Настройка компилятора и свойств сборкиSet compiler and build properties

В интегрированной среде разработки все сведения, необходимые для сборки проекта, представлены в виде свойств.In the IDE, all information that is needed to build a project is exposed as properties. Эти сведения включают в себя имя приложения, расширение (например, DLL, EXE, LIB), параметры компилятора, параметры компоновщика, параметры отладчика, настраиваемые этапы сборки и многие другие компоненты.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. Чтобы перейти к страницам свойств, в главном меню выберите Проект > Свойства имя_проекта или щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите пункт Свойства.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, которую вы могли заметить в Configuration Manager, идентична Win32 в собственных проектах C++.The x86 target platform that you might see in Configuration Manager is identical to Win32 in native C++ projects. Win32 означает 32-разрядную версию Windows, а x64 — 64-разрядную.Win32 means 32-bit Windows and x64 means 64-bit Windows. Дополнительные сведения об этих двух платформах см. в разделе Запуск 32-разрядных приложений.For more information about these two platforms, see Running 32-bit applications.

Значение целевой платформы Любой ЦП, которые вы могли заметить в Configuration Manager, не влияет на собственные проекты 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 и Параметры компоновщика MSVC.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). Пример глобального макроса — свойство $(VCInstallDir), которое сохраняет корневой каталог установки Visual Studio.An example of a global macro is $(VCInstallDir), which stores the root directory of your Visual Studio installation. Глобальный макрос соответствует элементу PropertyGroup в MSBuild.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. Этот тип макроса элемента соответствует метаданным ItemGroup в MSBuild.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++ Определения препроцессора может принимать макрос элемента %(PreprocessorDefinitions), который применяется ко всем CPP-файлам в проекте.For example, the C/C++ Preprocessor Definitions configuration property can take a %(PreprocessorDefinitions) item macro that applies to all .cpp files in the project. Этот тип макроса элемента соответствует метаданным ItemDefinitionGroup в MSBuild.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. Если раскрывающийся список содержит команду <Edit> , можно выбрать ее, чтобы открыть редактор свойств для данного свойства.If the drop-down list contains <Edit>, then you can choose it to display the Property Editor for that property.

Раскрывающийся элемент управления свойством используется для доступа к редактору свойствA property drop-down control is used to access the Property Editor

В редакторе свойств можно нажать кнопку Макросы, чтобы просмотреть доступные макросы и их текущие значения.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.

Диалоговое окно редактора свойств для свойств каталогов включенияThe Property Editor dialog for the Include Directories property

Добавление каталога включения к набору каталогов по умолчанию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. При сборке с помощью интегрированной среды разработки для задания этих переменных среды используются свойства, заданные на странице свойств Каталоги 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, и ВКЛЮЧАЕТ уже заданы, например с помощью командной строки разработчика, они заменяются значениями соответствующих свойств 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 creating 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.

В правой области измените параметры проекта Среда или Объединение среды, а затем нажмите кнопку ОК.In the right pane, modify the Environment or Merge Environment project settings and then choose the OK button.

Содержание разделаIn this section

Совместное или повторное использование параметров проекта Visual StudioShare 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