Пошаговое руководство. Использование MSBuild для создания проекта Visual C++
В данном пошаговом руководстве демонстрируется порядок использования MSBuild для построения проекта Visual C++ в командной строке. Будет показано создание исходных файлов C++ и XML-файла проекта для консольного приложения Visual C++. После построения проекта будет показан порядок настройки процесса построения.
В данном пошаговом руководстве рассмотрены следующие задачи:
создание исходных файлов C++ для проекта;
создание XML-файла проекта MSBuild;
использование MSBuild для построения проекта;
использование MSBuild для настройки проекта.
Обязательные компоненты
Для выполнения данного пошагового руководства необходимо следующее:
Visual Studio 2013
общее понимание системы 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="12.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> <PlatformToolset>v120</PlatformToolset> </PropertyGroup>
Добавьте следующий элемент <Import/>, задающий путь к текущим параметрам C++ для этого проекта:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
Добавьте в элемент <ImportGroup> следующий дочерний элемент <ClCompile>. Этот дочерний элемент задает имя исходного файла C/C++ для компиляции:
<ItemGroup> <ClCompile Include="main.cpp" /> </ItemGroup>
Добавьте в элемент <ImportGroup> следующий дочерний элемент <ClInclude>. Этот дочерний элемент задает имя файла заголовка для исходного файла C/C++:
<ItemGroup> <ClInclude Include="main.h" /> </ItemGroup>
Добавьте следующий элемент <Import>, задающий путь к файлу, в котором определен целевой объект для этого проекта:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />
Полный файл проекта
В следующем коде показан полный файл проекта, созданный на предыдущем этапе.
<Project DefaultTargets="Build" ToolsVersion="12.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>
<PlatformToolset>v120</PlatformToolset>
</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 с 64-разрядным компилятором и инструментами.
использование 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 с 64-разрядным компилятором и инструментами
При установке Visual C++ в 64-разрядной ОС Windows, по умолчанию устанавливаются 64-разрядные собственные инструменты x64 и межплатформенные инструменты. Можно настроить MSBuild для использования 64 разрядного компилятора и инструментов сборки приложения, установив свойство PreferredToolArchitecture. Это свойство не влияет на конфигурацию проекта или свойства платформы. По умолчанию используются 32-разрядные версии инструментов. Чтобы задать 64-разрядную версию компилятора и набора инструментов, добавьте следующий элемент группы свойств в файл проекта Myproject.vcxproj после элемента Microsoft.Cpp.default.props <Import />:
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
В командной строке введите следующую команду, чтобы использовать 64-разрядные средства для сборки приложения.
msbuild myproject.vcxproj /p:PreferredToolArchitecture=x64
Использование MSBuild с другим набором инструментов
При наличии установленных наборов инструментов и библиотек для других версий Visual C++ MSBuild может выполнять сборку приложений как для текущей версии Visual C++, так и для других установленных версий. Например, если вы установили Visual C++ в Visual Studio 2012, чтобы задать набор инструментов Visual C++ 11.0 для Windows XP, добавьте следующий элемент группы свойств в файл проекта Myproject.vcxproj после элемента <Import /> Microsoft.Cpp.props:
<PropertyGroup>
<PlatformToolset>v110_xp</PlatformToolset>
</PropertyGroup>
Чтобы заново построить проект с набором инструментов Visual C++ 11.0 Windows XP, введите какую-либо из следующих команд:
msbuild myproject.vcxproj /p:PlatformToolset=v110_xp /t:rebuild
msbuild myproject.vcxproj /t:rebuild
Добавление настроек MSBuild
MSBuild предоставляет множество способов настройки процесса построения. В следующих темах рассматривается порядок добавления пользовательских этапов построения, инструментов и событий в проект MSBuild: