Пошаговое руководство. Использование MSBuild для создания проекта Visual C++
В данном пошаговом руководстве демонстрируется порядок использования MSBuild для построения проекта Visual C++ в командной строке.Будет показано создание исходных файлов C++ и XML-файла проекта для консольного приложения Visual C++.После построения проекта будет показан порядок настройки процесса построения.
В данном пошаговом руководстве рассмотрены следующие задачи:
создание исходных файлов C++ для проекта;
создание XML-файла проекта MSBuild;
использование MSBuild для построения проекта;
использование MSBuild для настройки проекта.
Обязательные компоненты
Для выполнения данного пошагового руководства необходимо следующее:
Visual Studio 2010
общее понимание системы MSBuild.
Создание исходных файлов C++
В данном пошаговом руководстве будет создан проект, имеющий исходный файл и файл заголовка.Исходный файл main.cpp содержит главную функцию для консольного приложения.Файл заголовка main.h содержит код, включающий файл заголовка iostream.Эти файлы C++ можно создать с помощью Visual Studio или текстового редактора.
Создание исходных файлов C++ для проекта
Создайте каталог для проекта.
Создайте файл с именем main.cpp и добавьте в него следующий код:
// main.cpp : the application source code. #include <iostream> #include "main.h" int main() { std::cout << "Hello, from MSBuild!\n"; return 0; }
Создайте файл с именем main.h и добавьте в него следующий код:
// main.h: the application header code. /* Additional source code to include. */
Создание XML-файла проекта MSBuild
Файл проекта MSBuild — это XML-файл, содержащий корневой элемент проекта (<Project>).В следующем примере проекта элемент <Project> содержит семь дочерних элементов:
три тега группы элементов (<ItemGroup>), указывающие конфигурацию и платформу проекта, имя исходного файла и имя файла заголовка;
три тега импорта (<Import>), указывающие расположение параметров Visual C++ Microsoft;
тег группы свойств (<PropertyGroup>), указывающий параметры проекта.
Создание файла проекта MSBuild
С помощью текстового редактора создайте файл проекта с именем myproject.vcxproj, а затем добавьте в него следующий корневой элемент <Project>.Вставьте элементы в следующих этапах процедуры между тегами корневого элемента <Project>:
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns=https://schemas.microsoft.com/developer/msbuild/2003> </Project>
Добавьте в элемент <ItemGroup> следующие два дочерних элемента <ProjectConfiguration>.Этот дочерний элемент задает конфигурации отладки и выпуска для 32-разрядной операционной системы Windows:
<ItemGroup> <ProjectConfiguration Include="Debug|Win32"> <Configuration>Debug</Configuration> <Platform>Win32</Platform> </ProjectConfiguration> <ProjectConfiguration Include="Release|Win32"> <Configuration>Release</Configuration> <Platform>Win32</Platform> </ProjectConfiguration> </ItemGroup>
Добавьте следующий элемент <Import/>, задающий путь к параметрам C++ по умолчанию для этого проекта:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
Добавьте следующий элемент группы свойств (<PropertyGroup>), задающий два свойства проекта:
<PropertyGroup> <ConfigurationType>Application</ConfigurationType> <ShowAllFiles>false</ShowAllFiles> </PropertyGroup>
Добавьте следующий элемент <Import/>, задающий путь к текущим параметрам C++ для этого проекта:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
Добавьте следующий дочерний элемент <ClCompile> в элементе <ItemGroup>.Этот дочерний элемент задает имя исходного файла C/C++ для компиляции:
<ItemGroup> <ClCompile Include="main.cpp" /> </ItemGroup>
Добавьте следующий дочерний элемент <ClInclude> в элементе <ItemGroup>.Этот дочерний элемент задает имя файла заголовка для исходного файла C/C++:
<ItemGroup> <ClInclude Include="main.h" /> </ItemGroup>
Добавьте следующий элемент <Import>, задающий путь к файлу, в котором определен целевой объект для этого проекта:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />
Полный файл проекта
В следующем коде показан полный файл проекта, созданный на предыдущем этапе.
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
<PropertyGroup>
<ConfigurationType>Application</ConfigurationType>
<ShowAllFiles>false</ShowAllFiles>
</PropertyGroup>
<Import Project="$(VCTargetsPath)/Microsoft.Cpp.props" />
<ItemGroup>
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="main.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />
</Project>
Использование MSBuild для построения проекта
Для построения консольного приложения введите в командной строке следующую команду:
msbuild myproject.vcxproj /p:configuration=debug
MSBuild создает каталог для выходных файлов, а затем компилирует и связывает проект для создания программы Myproject.exe.После завершения процесса построения запустите приложение с помощью следующей команды:
myproject
Приложение должно отобразить в окне консоли надпись "Hello, from MSBuild!"
Настройка проекта
MSBuild предоставляет возможность выполнения предварительно определенных целевых объектов построения, применения заданных пользователем свойств, а также использования настраиваемых инструментов, событий и этапов построения.В данном разделе рассматриваются следующие задачи:
использование MSBuild с целевыми объектами построения;
использование MSBuild со свойствами построения;
использование MSBuild с различными наборами инструментов;
добавление настроек MSBuild.
Использование MSBuild с целевыми объектами построения
Целевой объект построения — это именованный набор предварительно определенных или заданных пользователем команд, который могут выполняться во время построения.Для указания целевого объекта построения используется параметр командной строки /t.В случае примера проекта myproject предварительно определенный целевой объект clean удаляет все файлы в папке отладки и создает новый файл журнала.
В командной строке введите следующую команду, чтобы очистить myproject:
msbuild myproject.vcxproj /t:clean
Использование MSBuild со свойствами построения
Параметр командной строки /p позволяет переопределять свойство в файле построения проекта.В примере проекта myproject конфигурация построения выпуска или отладки задается свойством Configuration.Операционная система, в которой должно выполняться построенное приложение, задается свойством Platform.
Чтобы создать построение отладки приложения myproject, которое должно работать в 32-разрядных версиях Windows, введите в командной строке следующую команду:
msbuild myproject.vcxproj /p:configuration=debug /p:platform=win32
Предположим, что пример проекта myproject также задает конфигурацию для 64-разрядных версий Windows и еще одну конфигурацию для пользовательской операционной системы с именем myplatform.
Чтобы создать построение выпуска для работы в 64-разрядных версиях Windows, введите в командной строке следующую команду:
msbuild myproject.vcxproj /p:configuration=release /p:platform=x64
Чтобы создать построение выпуска для myplatform, введите в командной строке следующую команду:
msbuild myproject.vcxproj /p:configuration=release /p:platform=myplatform
Использование MSBuild с другим набором инструментов
Если установлены обе библиотеки (наборы инструментов) Visual C++ — 9.0 и 10.0, MSBuild может построить приложения для Visual C++ либо 9.0, либо 10.0.Чтобы задать набор инструментов Visual C++ 9.0, добавьте в файл проекта Myproject.vcxproj после элемента <Import /> для Microsoft.Cpp.props следующий элемент группы свойств:
<PropertyGroup>
<PlatformToolset>v90</PlatformToolset>
</PropertyGroup>
Чтобы заново построить проект с набором инструментов Visual C++ 9.0, введите какую-либо из следующих команд:
msbuild myproject.vcxproj /p:PlatformToolset=v90 /t:rebuild
msbuild myproject.vcxproj /t:rebuild
Добавление настроек MSBuild
MSBuild предоставляет множество способов настройки процесса построения.В следующих темах рассматривается порядок добавления пользовательских этапов построения, инструментов и событий в проект MSBuild: