Visual studio build tools 2017 что это

Обновлено: 07.07.2024

Скачайте Visual Studio на русском языке бесплатно для Windows

Visual Studio (Визуал студио) – интегрированная среда разработки программного обеспечения. Позволяет создавать, тестировать и редактировать код, анализировать производительность, а также собирать данные телеметрии.

Функционал Visual Studio

Программа представляет собой набор компонентов для создания консольных приложений, сайтов, веб-служб, программ с графическим интерфейсом и многого другого. Каждому поддерживаемому языку программирования соответствует один инструмент. Среди них:

В среде можно разрабатывать приложения для множества платформ, включая Windows, Xbox и MacOS. Для более удобной и быстрой работы в VisualStudio реализованы следующие функции:

  • • Технология IntelliSense автоматически дописывает функции при вводе первых букв, находит и исправляет неоднозначности в названиях элементов и другие ошибки. Также он рефакторизирует код, делая его проще.
  • • Отладчик работает на машинном и исходном уровнях кода. Пользователю дается возможность устанавливать интеллектуальные точки прерывания, а историю диагностики опционально сохраняются в специальном журнале.
  • • Доступны дизайнеры классов и схем базы данных.
  • • Благодаря встроенному Web-серверу веб-приложения запускаются прямиком из VisualStudio, что ускоряет процесс, а также повышает безопасность данных при тестировании.
  • • Разработчики могут вести командные проекты, используя для передачи данных Team Foundation Server.
  • • В App Center можно за пару кликов загружать разработанные мобильные приложения в магазины, отправлять пользователям бета-версии и следить за результатами тестирования.
  • • В MarketPlace доступны тысячи различных расширений, вроде Эмулятора Android и Ассистента Visual Assist. Те, кто не нашел там нужных дополнений, могут самостоятельно разработать их и добавить в магазин.

Студентам и независимым разработчикам бесплатно предлагается VisualStudio Community, включающий основной функционал программы. Для командной работы же доступны платные варианты – Professional и Enterprise, оснащенные более продвинутыми инструментами.

Интерфейс переведен на 14 языков, включая русский. Последняя версия – Visual Studio 2017 – вышла в марте 2017.

Сразу отмечу, что этот материал подходит для версии Visual Studio 2017 не ниже v15.6.7, я же использовал v15.7.1 вначале и далее обновился до v15.7.3 при написании материала.

B62-0

Проект для примера

WSL и gcc-arm-none-eabi

Предполагается, что у вас уже установлен и обновлён WSL. Для компиляции проектов потребуются скачивание и распаковка GNU Arm Embedded Toolchain. Итак, находясь в папке пользователя (при запуске ubuntu), скачиваем в её корень последнюю (на момент написания статьи) версию командой:

Примечание: Ссылку к архиву других версий самостоятельно вытягиваем\копируем со страницы GNU Arm Embedded Toolchain.

Теперь можно удалить ненужный архив:

Вот и всё, подготовка WSL на этом закончена.

Подготовка проекта

Все изменения для открытия проекта в Visual Studio 2017 будут в виде добавления файлов с настройками и командами. Незначительные отличия в других файлах в основном нацелены на исправление ошибок или просто изменение параметров исходного проекта.

Итак, по порядку. В корне проекта обязательно должен быть файл CppProperties.json, он отвечает за основные настройки проекта, пример с поясняющими комментариями:

Далее есть два пути:

B62-1

Или, находясь в директории проекта, ПКМ на пустом месте и в контекстном меню выбираем Open in Visual Studio:

B62-2

И создать шаблоны необходимых файлов .vs\Launch.vs.json и .vs\Tasks.vs.json из контекстного меню, пункты Debug and Launch Settings (ПКМ на бинарном файле) и Configure Tasks (ПКМ на Makefile или любом не компилируемом файле), а далее откорректировать их содержимое (кликабельно):

B62-4

B62-5

  • Второй крайне простой: скопировать папку .vs из другого проекта (из которой нужны только вышеуказанные 2 файла , другие, находящиеся там файлы и папки генерируются и при копировании папки .vs их лучше удалять!) и внести коррективы.

Итак, неважно, каким путём созданы эти файлы, теперь разберём их содержание. Файл Launch.vs.json отвечает за отладку, пример его настройки с комментариями:

Примечание: как можно заметить, настройки автоматического запуска GDB сервера закомментированы, т. к. сервер запускается, но к нему отладчик не подключается . Выяснить причину этого я пока не смог (буду рад, если напишете, в чем проблема в комментариях). Поэтому я просто запускаю GDB сервер из батника JLink-GDBServerM3.bat.

И второй файл Tasks.vs.json отвечает за все возможные задачи, которые будут отображаться для привязанного к задаче файла. Вот так это выглядит в контекстном меню:

B62-3

Содержание файла для проекта RTL00_WEB с комментариями:

Примечание: как можно заметить, задача запуска GDB сервера закомментированна, т. к. сервер запускается, но Visual Studio ожидает завершения его работы и не даёт исполнять другие задачи . Как изменить логику запуска задачи, я не нашёл (буду рад, если напишете решение в комментариях).

Компиляция

B62-6

B62-19

B62-7

B62-8

Многопоточная сборка проекта за секунды. Вот практически и всё, после компиляции уже прошиваем модуль и радуемся. :)

Прошивка, отладка

На основе модуля RTL-00 вкратце опишу процесс прошивки и отладки. Вначале смотрим на распиновку модуля:

Здесь, кроме питания, нас интересуют выводы GPIOE3 (SWDIO), GPIOE4 (SWCLK) и CHIP_EN (nRESET). Подключаем их к соответствующим выводам J-Link, я проверил работу с прошитым в J-Link опенсорс отладчиком x-Link. Для стабильной работы на nRESET добавлена подтяжка 10 кОм к питанию только (+3.3 В). Вот так это выглядит на столе (подтяжка с задней стороны модуля, SMD резистором):

B62-10

Запускаем GDB сервер, к которому сможет обращаться как WSL, так и отладчик Visual Studio с помощью батника JLink-GDBServerM3.bat, подключение к модулю происходит успешно:

B62-11

Переключаемся опять к Visual Studio, теперь прошиваем модуль задачей из контекстного меню на Makefile. Всё проходит успешно:

B62-12

Аналогично можно сразу же зашить WEB образ диска. Вот и всё, модуль автоматически стартанёт залитую в него прошивку.

B62-13

И если никаких ошибок не допустили, то сама отладка начинается простым нажатием на кнопку Start (F5) или из меню Debug -> Start:

B62-14

Подключение к GDB серверу:

B62-15

И вуаля, остановка на бряке с просмотром значений структуры настроек в текущем потоке FreeRTOS:

B62-16

B62-17

Дополнительные вещи можно посмотреть в Debug вкладке меню.

Вывод

Для сборки под Linux рекомендуется запускать следующий контейнер docker:

Пример программы

В общей папке для компьютеров с операционными системами Linux и Windows (один или оба компьютера – виртуальные машины) создайте папку с проектом и разместите в ней следующие исходные коды:

  • в папке src файлы get_os_name.c и main.c ;
  • в папку include файл get_os_name.h .

Содержимое файла get_os_name.c :

Содержимое файла get_os_name.h :

Содержимое файла main.c :

Соберите пример под Windows:

Проверьте его работоспособность в обеих системах.

Сборка с помощью cmake

Создайте новый каталог для изучения примера сборки с помощью cmake и скопируйте в него папки src и include вместе с файлами.

Добавьте в новый каталог файл CMakeLists.txt :

В первой строчке конфигурации (программы для cmake) мы задаем минимальную версию cmake. Во второй – имя проекта.

Функция add_executable добавляет в проект задачу (target, цель) собрать исполняемый файл (программу). Первым аргументом этой функции является имя задачи, последующие аргументы – файлы исходных кодов.

Функция target_include_directories задает для задачи каталог с включаемыми (include, заголовочными) файлами. Первый аргумент – задача. Далее указывается область действия этой функции ( PRIVATE – только указанная задача, PUBLIC – весь проект). После чего указывается каталог.

В последней строке показано использование переменных cmake. Переменная PROJECT_SOURCE_DIR равна пути к каталогу проекта.

Сборка под Windows

Создайте каталог wbuild и перейдите в него.

Выполните в нем команду:

Программа cmake при запуске требует один аргумент – каталог проекта, в котором должен находиться файл CMakeLists.txt . Двоеточие как в Windows, так и в Linux означает родительский каталог по отношению к текущему.

При выполнении cmake пытается найти в операционной системе средства для сборки программ. После этого найденные средства для сборки тестируются. Далее генерируются конфигурационные файлы для сборки программы с помощью найденных средств сборки. Если на каком-либо этапе произойдет ошибка, то будет выдано соответствующее предупреждение.

При успешном выполнении cmake создаст в каталоге wbuild файл с именем каждой задачи и расширением .vcxproj . В терминах Visual Studio это называется проектом (project).

Также в этом каталоге будет создан файл с именем проекта и расширением .sln . В Visual Studio это называется решением (solution). Оно содержит в себе все проекты, соответствующие задачам в cmake, а также некоторые дополнительные проекты.

Соберите программу с помощью программы:

По умолчанию будет создана отладочная версия программы, которую можно найти в папке Debug . Можно также создать рабочую версию, указав msbuild ключ -p:Configuration=Release (результат будет в папке Release ).

Сборка под Linux

Создайте каталог lbuild и перейдите в него.

Выполните в нем команду:

Соберите программу с помощью программы:

Команда make собирает проект в текущей папки (понятие проекта в make и cmake совпадают). В результате получится готовая программа, имя которой совпадает с именем проекта. Запустите и проверьте правильность ее работы.

Статические библиотеки

Код функций из статической библиотеки помещается в файл программы во время ее сборки.

Создайте новый каталог для изучения примера со статической библиотекой и скопируйте в него папки src и include вместе с файлами.

Добавьте в новый каталог файл CMakeLists.txt :

В данном примере будет две задачи: создание библиотеки и готовой программы.

Задача создания библиотеки создается функцией add_library . Первый ее аргумент – название задачи, обычно совпадающее с именем библиотеки. Далее указывается тип библиотеки (статическая), после чего указываются файлы исходных кодов.

Функция target_include_directories , как и в предыдущем примере, задает каталоги с заголовочным файлами. В отличие от предыдущего примера указывается область действия PUBLIC, чтобы подключить эти заголовочные файлы и ко второй задаче (создание программы).

Функция add_executable используется так же, как и в предыдущем примере.

Функция target_link_libraries подключает ко второй задаче библиотеку, создаваемую в первой задаче.

Соберите пример под Windows и под Linux (используя те же команды, что и в предыдущем примере).

Проверьте правильность работы программ.

Определите, какие файлы получились в результате выполнения каждой задачи под каждой ОС.

Попробуйте удалить файлы, полученные в результате выполнения задач по созданию библиотеки, и запустить программы без этих файлов.

Динамические библиотеки

Код функций из динамической библиотеки помещается в отдельный от программы файл. Функции из таких библиотек компонуются к основной программе во время работы программы (поэтому и называются динамическими). Достоинством динамических библиотек является возможность использовать их одновременно из нескольких программ (отсюда второе название – разделяемые (shared) библиотеки). Их недостаток – необходимость контролировать их наличие в операционной системе и версию.

Создайте новый каталог для изучения примера со статической библиотекой и скопируйте в него папки src и include вместе с файлами.

Добавьте в новый каталог файл CMakeLists.txt :

Отличие конфигураций статически и динамически присоединяемых библиотек заключается в использовании ключевых слов STATIC и SHARED в функции add_library . Для Linux отличия заканчиваются.

Если сборка ведется под Windows (что проверяется командой if(WIN32) ), переменную CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS нужно установить в значение ON с помощью функции set . Это указывает cmake сгенерировать дополнительные файлы.

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

Соберите пример под Windows и под Linux (используя те же команды, что и в предыдущем примере).

Проверьте правильность работы программ.

Определите, какие файлы получились в результате выполнения каждой задачи под каждой ОС.

    Состав:
  • Visual C++ Compilers (targeting x86, X64 and ARM)
  • Visual C++ headers & libraries (CRT & STL)
  • Visual C++ build scripts (targeting Windows desktop)
  • Microsoft Build Tools 2015 (MSBuild)
  • Windows SDK 8.1 (optional, on by default)
  • Windows SDK 10 (optional, off by default)
  • C++ Build tools specific command prompts
  • MFC and ATL (added with VS 2015 Update 3)

Таким образом, Enterprise WDK содержит все необходимое для сборки драйверов и базовых тестовых Win32-приложений. Установка продукта крайне проста --- в соответствии с заявленными целями он поставляется в виде единственного zip-файла "весом" около 1,8 Гб, который надо просто распаковать и запустить скрипт настройки от имени администратора. Распакованный архив занимает уже около 5,7 Гб.

Подчеркнем еще раз, что эти продукты имеют интерфейс командной строки --- никакой визуальной среды разработки, даже простого редактора кода, в своем составе они не имеют.

Преимущества и недостатки
1. Visual C++ Build Tools 2015
Неудобная загрузка --- инсталлятор часто глючит
Необходим администраторский доступ для установки, следовательно, при переустановке системы надо заново устанавливать

2. Enterprise Windows Driver Kit (EWDK)
Легкая загрузка --- качаем единственный zip-архив

Формально, как написано в официальном сайте, для запуска скриптов необходим администраторский доступ, но можно работать и без этого; как --- опишу ниже. Официальный сайт предлагает пользоваться утилитой MSBuild, но в этом случае, чтобы скомпилировать даже простой "проект" "Hello, world", надо составить файл проекта .vcxproj, причем формат этого файла кое-в-чем отличается от, так скажем, стандартного. В статье Walkthrough: Using MSBuild to Create a Visual C++ Project приводится пример такого файла
Подробнее.
Однако, этот файл, скажем так, несколько устарел. Ниже приведен модифицированный мной пример MyTest.vcxproj
Подробнее.
Теперь можно и собирать:
MSBuild MyTest.vcxproj /p:configuration=release /p:platform=Win32

:: @call "%VS140COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit %1 %2

:: @call "%VS140COMNTOOLS%VCVarsQueryRegistry.bat" No32bit 64bit %1 %2

А как выходить из проблемы?
Например, неплохо бы обсудить, как прицепить консольный компилятор к Visual Studio Code или допустим к IntelliJ.

Кстати, сейчас основная задача в редакторе - заставить работать IntelliSense.

Скачивается и устанавливается свежая версия компилятора с библиотеками, будет работать либо из командной строки, либо можно прописать пути к нему из любой студии (2008 и выше) или редактора (CodeBlocks и т.п.).

P. S. Сам тоже вначале радовался насчет Visual C++ Build Tools 2015

> нельзя ли прямую ссылку организовать на него?

Не знаю, меня nuget устраивает, т.к. компилятор часто обновляется (раз в неделю-месяц).

Добавлено:
там внутри, если покопаться, есть прямая ссылка на последний и несколько недавних пререлизов, например:

Читайте также: