Настройка компилятора и свойств сборки
В интегрированной среде разработки свойства предоставляют сведения, необходимые для создания проекта. Эти сведения включают в себя имя приложения, расширение (например, DLL, EXE, LIB), параметры компилятора, параметры компоновщика, параметры отладчика, настраиваемые этапы сборки и многие другие компоненты. Как правило, для просмотра и изменения этих свойств используются страницы свойств. Чтобы получить доступ к страницам свойств, выберите >"Свойства проекта" в главном меню или щелкните правой кнопкой мыши узел проекта в Обозреватель решений и выберите "Свойства".
Свойства по умолчанию
При создании проекта система задает значения для различных свойств. Значения по умолчанию варьируются в зависимости от типа проекта и параметров, выбранных в мастере приложений. Например, проект ATL имеет свойства, связанные с ФАЙЛАми MIDL, но эти свойства отсутствуют в базовом консольном приложении. В области "Общие" на страницах свойств отображаются свойства по умолчанию:
Откроется страница "Общие". Выделен раздел "Параметры проекта по умолчанию", который включает тип конфигурации для приложения (.exe), использование MFC, установленного для использования стандартных библиотек Windows, символьный набор — Юникод, для поддержки среды CLR задано значение No Common Language Runtime Support, для оптимизации всей программы задано значение "Нет всей оптимизации программы", а для поддержки приложений Магазина Windows задано значение No.
Применение свойств к конфигурациям сборок и целевым платформам
Некоторые свойства, такие как имя приложения, применяются ко всем вариантам сборки и целевым платформам, будь то отладка или сборка выпуска. Однако большинство свойств зависит от конфигурации. Чтобы создать правильный код, компилятор должен знать как определенную платформу, на которой выполняется программа, так и какие конкретные параметры компилятора следует использовать. Поэтому при установке свойства важно обратить внимание на конфигурацию и платформу, к которой должно применяться новое значение. Должно ли оно применяться только к сборкам Win32 отладки или к отладке ARM64 и отладке x64? Например, свойство Оптимизации по умолчанию имеет значение Наибольшая скорость (/O2) в конфигурации выпуска, но отключено в конфигурации отладки.
Вы всегда можете просмотреть и изменить конфигурацию и платформу, к каку следует применить значение свойства. На следующем рисунке показаны страницы свойств с элементами управления конфигурацией и сведениями о платформе в верхней части экрана. Если свойство оптимизации задано здесь, оно применяется только к сборкам Win32 отладки, текущей активной конфигурации, как показано красными стрелками.
Страница открыта для C/C++, оптимизации. Параметр оптимизации имеет значение Disabled (/Od), который вызывается. Стрелка вызывает связь между параметром конфигурации на странице свойств проекта, которая имеет значение Active(Debug) и параметр в раскрывающемся списке конфигурации решения, который имеет значение Debug. Другая стрелка вызывает связь между параметром платформы на странице свойств проекта, которая имеет значение Active(Win32) и параметром в раскрывающемся списке платформы решений на панели инструментов, которое имеет значение x86.
На следующем рисунке показана та же страница свойств проекта, но конфигурация изменена на выпуск. Обратите внимание на другое значение для свойства "Оптимизация". Кроме того, обратите внимание, что активной конфигурацией по-прежнему является отладка. Здесь вы можете задать свойства для любой конфигурации, а не только активной.
Целевые платформы
Целевая платформа относится к типу устройства и операционной системы, на которую будет работать исполняемый файл. Вы можете создать проект для нескольких платформ. Доступные целевые платформы для проектов C++ зависят от типа проекта. Они включают в себя, но не ограничиваются Win32, x64, ARM, ARM64, Android и iOS. Целевая платформа X86, которую вы могли заметить в Configuration Manager, идентична Win32 в собственных проектах C++. Win32 означает 32-разрядную версию Windows, а x64 — 64-разрядную. Дополнительные сведения об этих двух платформах см. в разделе Запуск 32-разрядных приложений.
Значение любой целевой платформы ЦП , которое может отображаться в Configuration Manager , не влияет на собственные проекты C++. Он относится только к C++/CLI и другим типам проектов .NET. Дополнительные сведения см. в разделе /CLRIMAGETYPE
(Указание типа образа СРЕДЫ CLR).
Дополнительные сведения настройке свойств отладочной сборки см. в следующих разделах:
- Параметры проекта для конфигурации отладки C++
- Параметры отладчика и подготовка
- Подготовка к отладке: типы проектов Visual C++
- Указание файлов символов (PDB) и файлов с исходным кодом в отладчике Visual Studio
Параметры компилятора и компоновщика 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)
:
Откроется страница VC плюс каталогов и каталогов, которая имеет свойства для правил каталогов VC++. Примером правила является каталоги source, для которых задано значение $(VC_SourcePath). Существуют правила включения каталогов, каталогов библиотек, исполняемых каталогов и т. д.
Редактор свойств можно использовать для просмотра значений всех доступных макросов.
Предустановленные макросы
Глобальные макросы:
Глобальные макросы применяются ко всем элементам в конфигурации проекта. Глобальный макрос имеет синтаксис$(name)
. Пример глобального макроса — свойство$(VCInstallDir)
, которое сохраняет корневой каталог установки Visual Studio. Глобальный макрос соответствует элементуPropertyGroup
в MSBuild.Макросы элементов
Макросы элементов имеют синтаксис%(name)
. В случае файла макрос элемента применяется только к этому файлу — для примера можно использовать%(AdditionalIncludeDirectories)
, чтобы определить каталоги, которые применяются только к конкретному файлу. Этот тип макроса элемента соответствует метаданнымItemGroup
в MSBuild. При использовании в контексте конфигурации проекта макрос элемента применяется ко всем файлам определенного типа. Например, свойство конфигурации C/C++ Определения препроцессора может принимать макрос элемента%(PreprocessorDefinitions)
, который применяется ко всем CPP-файлам в проекте. Этот тип макроса элемента соответствует метаданнымItemDefinitionGroup
в MSBuild. Дополнительные сведения см. в разделе Определения элементов.
Пользовательские макросы
Вы можете создавать пользовательские макросы для использования в качестве переменных в сборках проекта. Например, можно создать пользовательский макрос, предоставляющий значение пользовательскому шагу сборки или пользовательскому средству сборки. Пользовательский макрос — это пара "имя-значение". Для доступа к этому значению в файле проекта используется нотация $(name)
.
Пользовательский макрос хранится на странице свойств. Если проект еще не содержит лист свойств, его можно создать, выполнив действия, описанные в разделе "Общий доступ" или повторное использование параметров проекта Visual Studio.
Создание пользовательского макроса
Откройте окно Диспетчер свойств. (В строке меню выберите Просмотр>диспетчера свойств или просмотра>другого диспетчера свойств Windows>.) Откройте контекстное меню для листа свойств (его имя заканчивается)
.user
и выберите пункт "Свойства". Откроется диалоговое окно Страницы свойств для данной страницы свойств.В левой области диалогового окна выберите Пользовательские макросы. В правой области нажмите кнопку Добавить макрос, чтобы открыть диалоговое окно Добавление пользовательского макроса.
В диалоговом окне задайте имя и значение для макроса. Кроме того, можно установить флажок Задание данного макроса в качестве переменной среды в среде сборки.
Редактор свойств
Редактор свойств можно использовать для изменения некоторых строковых свойств и выбора макросов в качестве значений. Чтобы открыть редактор свойств, выберите свойство на странице свойств, а затем нажмите кнопку со стрелкой вниз справа. Если раскрывающийся список содержит <правку>, его можно выбрать для отображения редактора свойств для этого свойства.
Откроется редактор свойств для параметра "Включить каталоги". В нем отображается вычисляемое значение для каталогов include, которое является C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\Include. В нем показаны два унаследованных значения: $(VC_IncludePath) и $(WindowsSDK_IncludePath). Установлен флажок "Наследовать от родительского или проекта по умолчанию".
В редакторе свойств можно нажать кнопку Макросы, чтобы просмотреть доступные макросы и их текущие значения. На следующем рисунке показан редактор свойств для свойства Дополнительные каталоги включаемых файлов после нажатия кнопки Макросы. Если установлен флажок "Наследовать от родительского или проекта" по умолчанию и добавляется новое значение, он добавляется к любым значениям, которые в настоящее время наследуются. Если снять флажок, новое значение заменяет наследуемые значения. В большинстве случаев следует не снимать этот флажок.
Откроется редактор свойств для каталогов include. Вычисляемое значение отображается вместе с унаследованными значениями. Список содержит различные макросы и их значения, такие как $(CharacterSet), для которого задано значение Юникод.
Добавление каталога включения к набору каталогов по умолчанию
При добавлении каталога включения в проект важно не переопределить все каталоги по умолчанию. Правильным способом добавления каталога является добавление нового пути, например "C:\MyNewIncludeDir\
", а затем добавление $(IncludePath)
макроса в значение свойства.
Быстрый просмотр и поиск всех свойств
Страница свойств "Все параметры" (в узле "Свойства>конфигурации C/C++" в диалоговом окне "Страницы свойств") предоставляет быстрый способ просмотра и поиска свойств, доступных в текущем контексте. Она имеет специальное поле поиска и простой синтаксис, который помогает отфильтровать результаты.
Без префикса:
поиск только в именах свойств (подстрока без учета регистра).
'/
' или '-
':
поиск только в параметрах компилятора (префикс без учета регистра)
v
:
поиск только в значениях (подстрока без учета регистра).
Задание переменных среды для сборки
Компилятор MSVC (cl.exe) распознает определенные переменные среды, в частности LIB
, LIBPATH
PATH
и INCLUDE
. При сборке с помощью интегрированной среды разработки свойства, заданные на странице свойств каталогов VC++, используются для задания этих переменных среды. Если LIB
значения LIBPATH
и INCLUDE
значения уже заданы, например командная строка разработчика, они заменяются значениями соответствующих свойств MSBuild. Затем сборка добавляет значение свойства PATH
исполняемых каталогов VC++ в . Для задания пользовательской переменной среды можно создать пользовательский макрос и затем установить флажок Задание данного макроса в качестве переменной среды в среде сборки.
Задание переменных среды для сеанса отладки
В левой области диалогового окна Страницы свойств проекта разверните узел Свойства конфигурации и выберите пункт Отладка.
В правой области измените параметры проекта Среда или Объединение среды, а затем нажмите кнопку ОК.
В этом разделе
Совместное или повторное использование параметров проекта Visual Studio
.props
Создание файла с пользовательскими параметрами сборки, которые можно использовать или использовать повторно.
Наследование свойств проекта
Описывает порядок оценки переменных .props
, .targets
.vcxproj
файлов и среды в процессе сборки.
Изменение свойств и целевых объектов без изменения файла проекта
Создание временных параметров сборки без изменения файла проекта.
См. также
Проекты Visual Studio — C++
.vcxproj
и .props
структура файлов
XML-файлы страницы свойств