Visual studio build tools 2017 что это
Скачайте 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 при написании материала.
Проект для примера
WSL и gcc-arm-none-eabi
Предполагается, что у вас уже установлен и обновлён WSL. Для компиляции проектов потребуются скачивание и распаковка GNU Arm Embedded Toolchain. Итак, находясь в папке пользователя (при запуске ubuntu), скачиваем в её корень последнюю (на момент написания статьи) версию командой:
Примечание: Ссылку к архиву других версий самостоятельно вытягиваем\копируем со страницы GNU Arm Embedded Toolchain.
Теперь можно удалить ненужный архив:
Вот и всё, подготовка WSL на этом закончена.
Подготовка проекта
Все изменения для открытия проекта в Visual Studio 2017 будут в виде добавления файлов с настройками и командами. Незначительные отличия в других файлах в основном нацелены на исправление ошибок или просто изменение параметров исходного проекта.
Итак, по порядку. В корне проекта обязательно должен быть файл CppProperties.json, он отвечает за основные настройки проекта, пример с поясняющими комментариями:
Далее есть два пути:
Или, находясь в директории проекта, ПКМ на пустом месте и в контекстном меню выбираем Open in Visual Studio:
И создать шаблоны необходимых файлов .vs\Launch.vs.json и .vs\Tasks.vs.json из контекстного меню, пункты Debug and Launch Settings (ПКМ на бинарном файле) и Configure Tasks (ПКМ на Makefile или любом не компилируемом файле), а далее откорректировать их содержимое (кликабельно):
- Второй крайне простой: скопировать папку .vs из другого проекта (из которой нужны только вышеуказанные 2 файла , другие, находящиеся там файлы и папки генерируются и при копировании папки .vs их лучше удалять!) и внести коррективы.
Итак, неважно, каким путём созданы эти файлы, теперь разберём их содержание. Файл Launch.vs.json отвечает за отладку, пример его настройки с комментариями:
Примечание: как можно заметить, настройки автоматического запуска GDB сервера закомментированы, т. к. сервер запускается, но к нему отладчик не подключается . Выяснить причину этого я пока не смог (буду рад, если напишете, в чем проблема в комментариях). Поэтому я просто запускаю GDB сервер из батника JLink-GDBServerM3.bat.
И второй файл Tasks.vs.json отвечает за все возможные задачи, которые будут отображаться для привязанного к задаче файла. Вот так это выглядит в контекстном меню:
Содержание файла для проекта RTL00_WEB с комментариями:
Примечание: как можно заметить, задача запуска GDB сервера закомментированна, т. к. сервер запускается, но Visual Studio ожидает завершения его работы и не даёт исполнять другие задачи . Как изменить логику запуска задачи, я не нашёл (буду рад, если напишете решение в комментариях).
Компиляция
Многопоточная сборка проекта за секунды. Вот практически и всё, после компиляции уже прошиваем модуль и радуемся. :)
Прошивка, отладка
На основе модуля RTL-00 вкратце опишу процесс прошивки и отладки. Вначале смотрим на распиновку модуля:
Здесь, кроме питания, нас интересуют выводы GPIOE3 (SWDIO), GPIOE4 (SWCLK) и CHIP_EN (nRESET). Подключаем их к соответствующим выводам J-Link, я проверил работу с прошитым в J-Link опенсорс отладчиком x-Link. Для стабильной работы на nRESET добавлена подтяжка 10 кОм к питанию только (+3.3 В). Вот так это выглядит на столе (подтяжка с задней стороны модуля, SMD резистором):
Запускаем GDB сервер, к которому сможет обращаться как WSL, так и отладчик Visual Studio с помощью батника JLink-GDBServerM3.bat, подключение к модулю происходит успешно:
Переключаемся опять к Visual Studio, теперь прошиваем модуль задачей из контекстного меню на Makefile. Всё проходит успешно:
Аналогично можно сразу же зашить WEB образ диска. Вот и всё, модуль автоматически стартанёт залитую в него прошивку.
И если никаких ошибок не допустили, то сама отладка начинается простым нажатием на кнопку Start (F5) или из меню Debug -> Start:
Подключение к GDB серверу:
И вуаля, остановка на бряке с просмотром значений структуры настроек в текущем потоке FreeRTOS:
Дополнительные вещи можно посмотреть в 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 устраивает, т.к. компилятор часто обновляется (раз в неделю-месяц).
Добавлено:
там внутри, если покопаться, есть прямая ссылка на последний и несколько недавних пререлизов, например:
Читайте также: