Поделиться через


Внутренние компоненты MSBuild для проектов C++

Когда вы задаете свойства проекта в интегрированной среде разработки, а затем сохраняете проект, Visual Studio записывает параметры проекта в файл проекта. Файл проекта содержит параметры, уникальные для проекта. Однако он не содержит все параметры, необходимые для сборки проекта. Файл проекта содержит Import элементы, содержащие сеть дополнительных файлов поддержки. Файлы поддержки содержат оставшиеся свойства, целевые объекты и параметры, необходимые для сборки проекта.

Большинство целевых объектов и свойств в файлах поддержки существуют исключительно для реализации системы построения. В этой статье рассматриваются полезные целевые объекты и свойства, которые можно указать в командной строке MSBuild. Чтобы найти дополнительные целевые объекты и свойства, просмотрите файлы в каталогах файлов поддержки.

Каталоги файлов поддержки

По умолчанию основные файлы поддержки Visual Studio расположены в указанных ниже каталогах. Эта информация зависит от версии.

Visual Studio 2022 и 2019

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\

    Содержит основные целевые файлы () и файлы свойств (.targets.props), которые используются целевыми объектами. По умолчанию $(VCTargetsPath) макрос ссылается на этот каталог. Заполнитель <version> относится к версии Visual Studio: версии 170 для Visual Studio 2022, версии 160 для Visual Studio 2019 или версии 150 для Visual Studio 2017.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\

    Содержит файлы цель и свойство платформы, которые переопределяют целевые объекты и свойства в родительском каталоге. Этот каталог также содержит DLL-файл, который определяет задачи, используемые целевыми объектами в данном каталоге. Заполнитель <platform> представляет подкаталог ARM, ARM64, Win32 или x64.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Содержит каталоги, позволяющие сборке создавать приложения C++ с помощью указанного.<toolset> Заполнитель <platform> представляет подкаталог ARM, ARM64, Win32 или x64. Заполнитель <toolset> представляет подкаталог набора инструментов.

Visual Studio 2017

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\

    Содержит основные целевые файлы () и файлы свойств (.targets.props), которые используются целевыми объектами. По умолчанию $(VCTargetsPath) макрос ссылается на этот каталог.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\

    Содержит файлы цель и свойство платформы, которые переопределяют целевые объекты и свойства в родительском каталоге. Этот каталог также содержит DLL-файл, который определяет задачи, используемые целевыми объектами в данном каталоге. Заполнитель <platform> представляет подкаталог ARM, ARM64, Win32 или x64.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\PlatformToolsets\<toolset>\

    Содержит каталоги, позволяющие сборке создавать приложения C++ с помощью указанного.<toolset> Заполнитель <platform> представляет подкаталог ARM, Win32 или x64. Заполнитель <toolset> представляет подкаталог набора инструментов.

Visual Studio 2015 и более ранние версии

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\

    Содержит основные целевые файлы () и файлы свойств (.targets.props), которые используются целевыми объектами. По умолчанию макрос $(VCTargetsPath) ссылается на этот каталог.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\

    Содержит файлы цель и свойство платформы, которые переопределяют целевые объекты и свойства в родительском каталоге. Этот каталог также содержит DLL-файл, который определяет задачи, используемые целевыми объектами в данном каталоге. Заполнитель <platform> представляет подкаталог ARM, Win32 или x64.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Содержит каталоги, позволяющие сборке создавать приложения C++ с помощью указанного.<toolset> Заполнитель <version> — V110 для Visual Studio 2012, V120 для Visual Studio 2013 и V140 для Visual Studio 2015. Заполнитель <platform> представляет подкаталог ARM, Win32 или x64. Заполнитель <toolset> представляет подкаталог набора инструментов. Например, это версия 140 для создания приложений Windows с помощью набора инструментов Visual Studio 2015. Кроме того, v120_xp сборку для Windows XP с помощью набора инструментов Visual Studio 2013.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\Platforms\<platform>\PlatformToolsets\<toolset>\

    Пути, позволяющие сборке создавать приложения Visual Studio 2008 или Visual Studio 2010, не включают в <version>себя. В этих версиях <platform> заполнитель представляет подкаталог Itanium, Win32 или x64. Заполнитель <toolset> представляет подкаталог набора инструментов версии 90 или версии 100.

Файлы поддержки

Каталоги файлов поддержки содержат файлы со следующими расширениями:

Расширение Description
.targets Содержит Target элементы XML, которые задают задачи, выполняемые целевым объектом. Может также содержать PropertyGroup, ItemGroup, ItemDefinitionGroup, и определяемых пользователем Item элементов, используемых для назначения параметров задачи файлы и параметры командной строки.

Дополнительные сведения см. в разделе Target "Элемент (MSBuild)".
.props Содержит Property Group и определяемых пользователем Property XML-элементов, укажите файл и параметры, которые используются во время построения.

Может также содержать ItemDefinitionGroup и определяемых пользователем Item XML-элементы, задающие Дополнительные параметры. Элементы, определенные в группе определений элементов, похожи на свойства, но не могут быть доступны из командной строки. В файлах проекта Visual Studio для представления параметров часто вместо свойств используются элементы.

Дополнительные сведения см. в разделе "Элемент (MSBuild)", ItemDefinitionGroup "Элемент " (MSBuild)" иItem "Элемент " (MSBuild)".ItemGroup
.xml Содержит XML-элементы, которые объявляют и инициализируют элементы пользовательского интерфейса интегрированной среды разработки. Например, таблицы свойств, страницы свойств, элементы управления текстовым полем и элементы управления listbox.

Файлы .xml напрямую поддерживают интегрированную среду разработки, а не MSBuild. Тем не менее присваиваются значения свойств интегрированной среды Разработки для создания свойств и элементов.

Большинство .xml файлов находятся в подкаталоге языкового стандарта. Например, файлы для английского региона США находятся в $(VCTargetsPath)\1033\.

Пользовательские целевые объекты и свойства

Чтобы эффективно использовать MSBuild, он помогает узнать, какие свойства и целевые объекты полезны и релевантны. Большинство свойств и целевых объектов помогают реализовать систему сборки Visual Studio и не относятся к пользователю. В этом разделе описываются пользовательские свойства и целевые объекты, о которые стоит знать.

Свойство PlatformToolset

Свойство PlatformToolset определяет, какой набор средств MSVC используется для сборки. По умолчанию используется текущий набор средств. Если это свойство задано, его значение объединяется с литеральными строками, чтобы сформировать путь. Это каталог, содержащий свойство и целевые файлы, необходимые для создания проекта для определенной платформы. Версия набора средств платформы, требуемая для сборки, должна быть установлена.

Например, чтобы использовать для сборки приложения средства и библиотеки Visual Studio 2015, присвойте свойству PlatformToolset значение v140:

msbuild myProject.vcxproj /p:PlatformToolset=v140

Свойство PreferredToolArchitecture

PreferredToolArchitecture Свойство определяет 32-разрядной или 64-разрядных компилятора и средств, используются ли в сборке. Это свойство не влияет на архитектуру или конфигурацию выходной платформы. По умолчанию MSBuild использует версию компилятора и средств x86, если это свойство не задано.

Например, чтобы использовать для сборки приложения 64-разрядный компилятор и средства, присвойте свойству PreferredToolArchitecture значение x64:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

Свойство UseEnv

По умолчанию параметры для конкретной платформы для текущего проекта переопределяют PATHпеременные среды , , INCLUDE, CONFIGURATIONLIBLIBPATHа также PLATFORM переменные среды. UseEnv Задайте свойство, чтобы true гарантировать, что переменные среды не переопределяются.

msbuild myProject.vcxproj /p:UseEnv=true

Целевые объекты

Существуют сотни целевых объектов в файлах поддержки Visual Studio. Однако большинство являются целевых объектов, ориентированных на системы, пользователь может их игнорировать. Большинство системных целевых объектов префиксируются символом подчеркивания (_) или имеют имя, начинающееся с PrepareFor, Compute, , PreBeforeAfterили .Post

В таблице ниже перечислены несколько полезных целевых объектов, ориентированных на пользователя.

Назначение Description
BscMake Выполняет программу технического обслуживания microsoft Browse Information Maintenance, bscmake.exe.
Build Выполняет построение проекта.

Этот целевой объект используется по умолчанию для проекта.
ClCompile Выполняет средство компилятора MSVC. cl.exe
Clean Удаляет временные и промежуточные файлы сборки.
Lib Выполняет средство lib.exeдиспетчера библиотек Microsoft 32-разрядной версии.
Link Выполняет средство компоновщика MSVC. link.exe
ManifestResourceCompile Извлекает список ресурсов из манифеста, а затем выполняет средство компилятора ресурсов Microsoft Windows. rc.exe
Midl Выполняет средство midl.exeкомпилятора языка определения интерфейса Майкрософт (MIDL).
Rebuild Выполняет очистку, а затем выполняет построение проекта.
ResourceCompile Выполняет средство компилятора ресурсов Microsoft Windows. rc.exe
XdcMake Выполняет средство XML-документации, xdcmake.exe.
Xsd Выполняет средство определения схемы XML, xsd.exe. См. примечание.

Примечание.

В Visual Studio 2017 и более поздних версиях поддержка проектов C++ для .xsd файлов не рекомендуется. Вы по-прежнему можете использовать Microsoft.VisualC.CppCodeProvider , добавив CppCodeProvider.dll вручную в GAC.

См. также

Справочник по задачам MSBuild
BscMake задача
CL задача
CPPClean задача
LIB задача
Link задача
MIDL задача
MT задача
RC задача
SetEnv задача
VCMessage задача
XDCMake задача