Общие сведения о MSBuild (Visual C++)
MSBuild — это стандартная система построения для проектов Visual C++. При построении проекта в интегрированной среде разработки Visual Studio используется средство msbuild.exe, XML-файл проекта и файлы дополнительных параметров. Хотя средство msbuild.exe и файл проекта можно использовать из командной строки, интегрированная среда разработки предоставляет пользовательский интерфейс, облегчающий задание параметров и построение проекта. В данном обзоре описывается использование системы MSBuild в Visual C++.
Предварительные требования
Прочитайте следующие документы, посвященные MSBuild.
MSBuild
Обзор принципов работы MSBuild.Справочные сведения о MSBuild
Справочные сведения о системе MSBuild.Справочные сведения о схеме файлов проектов MSBuild
Список элементов схемы XML MSBuild с указанием их атрибутов и родительских и дочерних элементов. Особое внимание уделите элементам ItemGroup, PropertyGroup, Target и Task.Справочные сведения о командной строке MSBuild
Описание аргументов и параметров командной строки, которые можно использовать вместе с msbuild.exe.Справочные сведения о задачах MSBuild
Описание задач MSBuild. Особое внимание уделите данным задачам, связанным с Visual C++: Задача BscMake, Задача CL, Задача CPPClean, Задача LIB, Связывание задачи, Задача MIDL, Задача MT, Задача RC, Задача SetEnv, Задача VCMessage, Задача XDCMake, Задача XSD.
Использование MSBuild из командной строки
Следующий отрывок из документа Справочные сведения о командной строке MSBuild показывает, что средство msbuild.exe принимает явный или неявный аргумент файла проекта project file (для проектов Visual C++ — файл VCXPROJ), а также ноль или более параметров options командной строки.
msbuild.exe [project file] [options]
Используйте параметры командной строки /target (или /t) и /property (или /p) для переопределения свойств и целевых объектов, указанных в файле проекта.
Важная функция файла проекта заключается в задании целевого объекта, который является конкретной операцией, применяемой к проекту, а также необходимых для ее выполнения входных и выходных данных. Файл проекта может задавать один или несколько целевых объектов, один из которых может быть используемым по умолчанию.
Каждый целевой объект состоит из последовательности из одной или нескольких задач. Каждая из задач представлена классом платформы .NET Framework, содержащим одну исполняемую команду. Например, задача CL содержит команду cl.exe.
Параметр задачи — это свойство задачи класса, которое обычно представляет параметр командной строки исполняемой команды. Например, параметр FavorSizeOrSpeed задачи CL соответствует параметрам /Os и /Ot компилятора.
Дополнительные параметры задачи поддерживают инфраструктуру MSBuild. Например, параметр задачи Sources задает набор задач, который может быть использован другими задачами. Дополнительные сведения о задачах MSBuild см. в разделе Справочные сведения о задачах MSBuild.
Для большинства задач требуются входные и выходные данные, например имена файлов, пути и строковые, числовые или логические параметры. Например, часто к входным данным относится имя исходного CPP-файла, предназначенного для компиляции. Важным входным параметром является строка, задающая конфигурацию и платформу построения, например "Debug|Win32". Входные и выходные данные задаются одним или несколькими пользовательскими элементами Item формата XML, содержащимися в элементе ItemGroup.
В файле проекта также могут задаваться пользовательские свойства и элементы группы определений элемента. Свойства и элементы формируют пары "имя-значение", используемые в качестве переменных при построении. Компонент имени пары определяет макрос, а компонент значения объявляет значение макроса. Обращение к макросу свойства выполняется с помощью нотации $(имя), а к макросу элемента — с помощью нотации %(имя).
Другие элементы XML в файле проекта могут позволяют тестировать макросы, а затем условно задавать значение любого макроса или контролировать выполнение построения. Имена макросов и строковые литералы можно сцепить для создания конструкций, например пути или имени файла. В командной строке параметр /property задает или переопределяет свойства проекта. Из командной строки нельзя ссылаться на элементы.
Система MSBuild может условно выполнить целевой объект до или после другого целевого объекта. Кроме того, эта система может построить целевой объект на основании того, являются ли файлы, используемые целевым объектом, более новыми, чем выдаваемые им файлы.
Использование MSBuild в интегрированной среде разработки
При задании свойств проекта в интегрированной среде разработки и сохранении этого проекта Visual C++ записывает параметры проекта в файл проекта. Этот файл проекта содержит параметры, уникальные для данного проекта, но не содержит все параметры, необходимые для построения проекта. В файле проекта находятся элементы Import, включающие в себя набор дополнительных файлов поддержки. Файлы поддержки содержат оставшиеся свойства, целевые объекты и параметры, которые необходимы для построения проекта.
Большинство целевых объектов и свойств в файлах поддержки существуют исключительно для реализации системы построения. В следующем разделе рассматриваются некоторые полезные целевые объекты и свойства, которые можно задать в командной строке MSBuild. Чтобы узнать о других целевых объектах и свойствах, просмотрите файлы в каталогах файлов поддержки.
Каталоги с файлами поддержки
По умолчанию основные файлы поддержки Visual C++ расположены в следующих каталогах.
Каталог |
Описание |
---|---|
диск:\Program Files\MSBuild\Microsoft.Cpp\v4.0\ |
Содержит основные файлы целевых объектов (с расширением TARGETS) и файлы свойств (с расширением PROPS), используемые целевыми объектами. По умолчанию макрос $(VCTargetsPath) ссылается на этот каталог. |
диск:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\платформа\ |
Содержит файлы относящихся к платформе свойств и целевых объектов, которые переопределяют целевые объекты и свойства в родительском каталоге. В этом каталоге также содержится DLL-файл, определяющий задачи, которые используются целевыми объектами в данном каталоге. Заполнитель платформа представляет подкаталог Itanium, Win32 или x64. |
диск:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\платформа\ PlatformToolsets\набор_инструментов\ |
Содержит каталоги, которые обеспечивают построение приложений версии 9.0 или Visual C++ 10.0. Заполнитель платформа представляет подкаталог Itanium, Win32 или x64. Заполнитель набор инструментов представляет подкаталог набора средств v90 или v100. |
Файлы поддержки
Каталоги с файлами поддержки содержат файлы, имеющие следующие расширения.
Расширение |
Описание |
---|---|
TARGETS |
Содержит XML-элементы Target, которые задают задачи, выполняемые целевым объектом. Кроме того, может содержать Property Group, Item Group, Item Definition Group и пользовательские элементы Item, используемые для назначения файлов и параметров командной строки параметрам задач. Дополнительные сведения см. в разделе Элемент Target (MSBuild). |
PROPS |
Содержит Property Group и пользовательские XML-элементы Property, задающие файл и значения параметров, которые используются при построении. Может также содержать Item Definition Group и пользовательские XML-элементы Item, задающие дополнительные параметры. Элементы, определенные в группе определений элемента, напоминают свойства, но их нельзя использовать из командной строки. В файлах проектов Visual C++ для представления параметров часто вместо свойств используются элементы. Дополнительные сведения см. в разделах Элемент ItemGroup (MSBuild), Элемент ItemDefinitionGroup (MSBuild) и Элемент Item (MSBuild). |
XML |
Содержит XML-элементы, которые объявляют и инициализируют элементы пользовательского интерфейса интегрированной среды разработки, например, страницы свойств, а также элементы управления текстовых полей и полей со списком. XML-файлы непосредственно поддерживают интегрированную среду разработки, но не поддерживают MSBuild. Однако значения свойств интегрированной среды разработки назначаются свойствам и элементам построения. Большинство XML-файлов находится в подкаталоге, соответствующем языковому стандарту. Например, файлы для региона с американским английским языком находятся в подкаталоге $(VCTargetsPath)\1033\. |
Пользовательские целевые объекты и свойства
Для более эффективного использования MSBuild из командной строки следует знать, какие свойства и целевые объекты удобно использовать в различных ситуациях. Большинство свойств и целевых объектов упрощают реализацию системы построения Visual C++ и поэтому не связаны с пользователем. В этом разделе описываются некоторые полезные свойства и целевые объекты, ориентированные на пользователей.
Свойство PlatformToolset
Свойство PlatformToolset определяет, используется ли при построении набор инструментов Visual C++ 2010 или Visual C++ 2008. Значение свойства сцепляется со строковыми литералами для формирования пути к каталогу, который содержит файлы свойств и целевых объектов, используемых при построении проекта для определенной платформы.
Установите для свойства PlatformToolset значение v100, чтобы использовать для построения приложения инструменты Visual C++ 2010.
msbuild myProject.vcxproj /p:PlatformToolset=v100
Установите для свойства PlatformToolset значение v90, чтобы использовать для построения приложения инструменты Visual C++ 2008. Для использования данного свойства на компьютере должен быть установлен набор инструментов Visual C++ 2008.
msbuild myProject.vcxproj /p:PlatformToolset=v90
Свойство UseEnv
По умолчанию относящиеся к платформе параметры для текущего проекта переопределяют переменные среды PATH, INCLUDE, LIB, LIBPATH, CONFIGURATION и PLATFORM. Установите для свойства UseEnv значение true для запрета переопределения переменных среды.
msbuild myProject.vcxproj /p:UseEnv=true
целевые объекты
В файлах поддержки Visual C++ доступны сотни целевых объектов. Однако большинство этих целевых объектов относится к системе, поэтому пользователь может их игнорировать. Большинство системных целевых объектов имеют префикс в виде подчеркивания (_) или имя, начинающееся с "PrepareFor", "Compute", "Before", "After", "Pre" или "Post".
В следующей таблице приведено несколько полезных целевых объектов, ориентированных на пользователей.
Целевой объект |
Описание |
---|---|
BscMake |
Выполняет программу управления информацией для просмотра Майкрософт — bscmake.exe. |
Построение |
Выполняет сборку проекта. Этот целевой объект проекта используется по умолчанию. |
ClCompile |
Выполняет компилятор Visual C++ — cl.exe. |
Clean |
Удаляет временные и промежуточные файлы построения. |
Lib |
Запускает 32-разрядный диспетчер библиотек (Майкрософт) — lib.exe. |
Ссылка |
Выполняет компоновщик Visual C++ — link.exe. |
ManifestResourceCompile |
Извлекает список ресурсов из манифеста и выполняет компилятор ресурсов Microsoft Windows — rc.exe. |
Midl |
Выполняет компилятор языка Microsoft Interface Definition Language (MIDL) — midl.exe. |
Rebuild |
Очищает проект и выполняет его построение. |
ResourceCompile |
Выполняет компилятор ресурсов Microsoft Windows — rc.exe. |
XdcMake |
Выполняет инструмент XML-документации — xdcmake.exe. |
Xsd |
Выполняет определение XML-схемы — xsd.exe. |
См. также
Другие ресурсы
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Март 2011 |
Изменен заполнитель платформа в таблице "Каталоги с файлами поддержки" для включения "x64" вместо "x86". |
Обратная связь от клиента. |