- Пошаговое руководство. Сборка и отладка C++ с помощью WSL 2 и Visual Studio 2022
- Базовые сведения о наборе инструментов WSL 2
- Установка средств сборки
- Кроссплатформенная разработка CMake с помощью дистрибутива WSL 2
- Дополнительные рекомендации по проектам WSL 2 и CMake
- Проекты Linux на основе WSL 2 и MSBuild
Пошаговое руководство. Сборка и отладка C++ с помощью WSL 2 и Visual Studio 2022
В Visual Studio 2022 появился собственный набор инструментов C++ для разработки подсистемы Windows для Linux версии 2 (WSL 2). Этот набор инструментов доступен в Visual Studio 2022 версии 17.0 или более поздней.
WSL 2 — это новая, рекомендуемая версия подсистемы Windows для Linux (WSL). Она позволяет повысить производительность файловой системы Linux, обеспечивает поддержку графического пользовательского интерфейса и полную совместимость системных вызовов. Набор инструментов WSL 2 в Visual Studio позволяет использовать Visual Studio для сборки и отладки кода C++ в дистрибутивах WSL 2 без добавления SSH-подключения. Для создания и отладки кода C++ в дистрибутивах WSL 1 вы можете использовать встроенный набор инструментов WSL 1, представленный в Visual Studio 2019 версии 16.1.
Набор инструментов WSL 2 в Visual Studio поддерживает проекты Linux на основе CMake и MSBuild. CMake рекомендуется для любой кроссплатформенной разработки на C++ с помощью Visual Studio. Рекомендуется использовать CMake, поскольку он позволяет создавать и отлаживать один и тот же проект как в Windows, так и в WSL и удаленных системах.
Видеоролик с информацией, приведенной в этом разделе, см. в статье Видео: отладка C++ с помощью дистрибутивов WSL 2 и Visual Studio 2022.
Базовые сведения о наборе инструментов WSL 2
Кроссплатформенная поддержка C++ в Visual Studio предполагает, что все исходные файлы поступают из файловой системы Windows. При нацеливании на дистрибутив WSL 2, Visual Studio локально выполнит команду rsync для копирования файлов из файловой системы Windows в файловую систему WSL. Для локальной копии rsync не требуется вмешательство пользователя. Это происходит автоматически, когда Visual Studio обнаруживает, что вы используете дистрибутив WSL 2. Дополнительные сведения о различиях между WSL 1 и WSL 2 см. в статье Сравнение WSL 2 и WSL 2.
Набор средств WSL 2 поддерживается интеграцией предварительных установок CMake в Visual Studio. Дополнительные сведения см. в статьях Интеграция предварительных установок CMake в Visual Studio и Visual Studio Code и Настройка и сборка с помощью предустановок CMake в Visual Studio. В этой статье также приводятся более подробные сведения, касающиеся сложных проектов WSL 2 и CMake.
Установка средств сборки
Установите средства, необходимые для сборки и отладки в WSL 2. Вы установите последнюю версию CMake с помощью двоичного развертывания CMake в Visual Studio на следующем шаге.
- Установите дистрибутив WSL и WSL 2, следуя инструкциям в разделе Установка WSL.
- Если предположить, что дистрибутив использует apt (в этом пошаговом руководстве используется Ubuntu),выполните следующие команды для установки необходимых средств сборки в дистрибутив WSL 2:
sudo apt update sudo apt install g++ gdb make ninja-build rsync zip
- Компилятора C++
- gdb
- CMake
- rsync
- zip
- Базового генератора системы сборки
Кроссплатформенная разработка CMake с помощью дистрибутива WSL 2
В этом пошаговом руководстве используется GCC и Ninja в Ubuntu. А также Visual Studio 2022 версии 17.0 (предварительная версия 2) или более поздней.
Visual Studio определяет проект CMake как папку с файлом CMakeLists.txt в корневом каталоге проекта. В этом пошаговом руководстве вы создадите новый проект CMake с помощью шаблона проекта CMake Visual Studio:
- В Visual Studio на экране Начало работы выберите Создание нового проекта.
- В текстовом поле Поиск шаблонов введите «cmake». Выберите тип Проект CMake и нажмите кнопку Далее. Присвойте проекту имя и выберите расположение, а затем нажмите Создать.
- Включите интеграцию предустановок CMake в Visual Studio. Выберите Сервис>Параметры>CMake>Общие. Установите флажок Отдавать предпочтение использованию предустановок CMake для настройки, сборки и тестирования, затем нажмите ОК. Вместо этого можно было добавить файл CMakePresets.json в корневую папку проекта. Дополнительные сведения см. в разделе Включение интеграции предварительных установок CMake.
- Чтобы активировать интеграцию: в главном меню выберите Файл>Закрыть папку. Появится страница Начало работы. В разделе Открыть последние выберите папку, которую вы только что закрыли, чтобы снова открыть ее.
- В главном меню Visual Studio есть три раскрывающихся списка. Чтобы выбрать активную целевую систему, используйте раскрывающийся список слева. Это система, в которой будет вызываться CMake для настройки и сборки проекта. Для запроса установки WSL среда Visual Studio использует wsl -l -v . На следующем рисунке в качестве целевой системы выбрано WSL2: Ubuntu-20.04.
Примечание Если Visual Studio запускает автоматическую настройку проекта, перейдите к шагу 11 для управления двоичным развертыванием CMake, а затем перейдите к шагу ниже. Сведения о настройке этого поведения см. в разделе Изменение автоматической настройки и уведомлений кэша.
Вы создали приложение C++ с помощью WSL 2 и Visual Studio 2022 и выполнили его отладку.
Дополнительные рекомендации по проектам WSL 2 и CMake
Visual Studio обеспечивает собственную поддержку WSL 2 только для проектов CMake, которые используют CMakePresets.json в качестве активного файла конфигурации. Сведения о миграции с CMakeSettings.json на CMakePresets.json см. в разделе Включение интеграции предустановок CMake в Visual Studio.
Если вы настраиваете дистрибутив WSL 2 и не хотите использовать набор инструментов WSL 2, то на карте поставщика удаленных параметров Visual Studio в CMakePresets.json установите для параметра forceWSL1Toolset значение true. Дополнительные сведения см. в статье Карта поставщика удаленных параметров Visual Studio.
Если параметр forceWSL1Tooslet имеет значение true, то Visual Studio не будет хранить копию исходных файлов в файловой системе WSL. Вместо этого она будет получать доступ к исходным файлам на подключенном диске Windows ( /mnt/ . ).
В большинстве случаев лучше использовать набор инструментов WSL 2 с дистрибутивами WSL 2, так как WSL 2 работает медленнее, если файлы проекта хранятся в файловой системе Windows. Дополнительные сведения о производительности файловой системы в WSL 2 см. в разделе Сравнение WSL 1 и WSL 2.
Укажите дополнительные параметры, такие как путь к каталогу в WSL 2, куда будет скопирован проект, параметры копирования источника и аргументы команды rsync, в карте поставщика удаленных параметров Visual Studio в CMakePresets.json . Дополнительные сведения см. в статье Карта поставщика удаленных параметров Visual Studio.
Системные заголовки по-прежнему автоматически копируются в файловую систему Windows для предоставления собственного интерфейса IntelliSense. Вы можете настроить заголовки, которые включены в эту копию или исключены из нее, в карте поставщика удаленных параметров Visual Studio в CMakePresets.json .
Можно изменить режим IntelliSense или указать другие параметры IntelliSense в карте поставщика удаленных параметров Visual Studio в CMakePresets.json . Подробные сведения см. в разделе Карта поставщика удаленных параметров Visual Studio.
Проекты Linux на основе WSL 2 и MSBuild
CMake рекомендуется для любой кроссплатформенной разработки C++ с использованием Visual Studio, поскольку позволяет создавать и отлаживать один и тот же проект как в Windows, так и в WSL и удаленных системах.
Но у вас может быть проект Linux на основе MSBuild.
Если у вас есть проект Linux на основе MSBuild, вы можете выполнить обновление до набора инструментов WSL 2 в Visual Studio. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите Свойства>Общий>набор инструментов платформы:
Если вы используете дистрибутив WSL 2 и не хотите использовать набор инструментов WSL 2, в раскрывающемся списке Набор инструментов платформы выберите GCC для подсистема Windows для Linux или Clang для набора инструментов подсистема Windows для Linux. Если выбран один из этих наборов инструментов, Visual Studio не будет хранить копию исходных файлов в файловой системе WSL и вместо этого будет получать доступ к исходным файлам на подключенном диске Windows ( /mnt/ . ). Системные заголовки по-прежнему автоматически копируются в файловую систему Windows для предоставления собственного интерфейса IntelliSense. Настройте заголовки, которые включены в эту копию или исключены из нее, в разделе Страницы свойств>Общие.
В большинстве случаев лучше использовать набор инструментов WSL 2 с дистрибутивами WSL 2, так как WSL 2 работает медленнее, когда файлы проекта хранятся в файловой системе Windows. Дополнительные сведения см. в разделе Сравнение WSL 1 и WSL 2.