Пошаговое руководство. Сборка и отладка 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.

Интеграция предустановок CMake в Visual Studio поддерживает набор инструментов WSL 2. Дополнительные сведения см. в статьях Интеграция предварительных установок CMake в Visual Studio и Visual Studio Code и Настройка и сборка с помощью предустановок CMake в Visual Studio. В этой статье также приводятся более подробные сведения, касающиеся сложных проектов WSL 2 и CMake.

Установка средств сборки

Установите средства, необходимые для сборки и отладки в WSL 2. Вы установите последнюю версию CMake с помощью двоичного развертывания CMake Visual Studio на следующем шаге.

  1. Установите дистрибутив WSL и WSL 2, следуя инструкциям в разделе Установка WSL.

  2. Если предположить, что дистрибутив использует apt (в этом пошаговом руководстве используется Ubuntu),выполните следующие команды для установки необходимых средств сборки в дистрибутив WSL 2:

    sudo apt update
    sudo apt install g++ gdb make ninja-build rsync zip
    

    Команды apt для установки:

    • Компилятора 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:

  1. В Visual Studio на экране Начало работы выберите Создание нового проекта.

    Снимок экрана: диалоговое окно начала работы с Visual Studio 2022. Доступны следующие варианты: клонирование репозитория, открытие проекта или решения, открытие локальной папки, создание нового проекта или продолжение без кода.":::

  2. В текстовом поле Поиск шаблонов введите "cmake". Выберите тип Проект CMake и нажмите кнопку Далее. Присвойте проекту имя и выберите расположение, а затем нажмите Создать.

  3. Включите интеграцию предустановок CMake Visual Studio. Выберите Сервис>Параметры>CMake>Общие. Установите флажок Отдавать предпочтение использованию предустановок CMake для настройки, сборки и тестирования, затем нажмите ОК. Вместо этого можно было добавить файл CMakePresets.json в корневую папку проекта. Дополнительные сведения см. в разделе Включение интеграции предварительных установок CMake.

    Снимок экрана: параметры проекта Visual Studio. Выбран параметр Cmake > General.

    В группе файлов конфигурации CMake установите флажок "Использовать предустановки CMake, если они доступны, в противном случае используется CMake Параметры.json" вызывается и выбирается.

  4. Чтобы активировать интеграцию: в главном меню выберите Файл>Закрыть папку. Появится страница Начало работы. В разделе Открыть последние выберите папку, которую вы только что закрыли, чтобы снова открыть ее.

  5. В главном меню Visual Studio есть три раскрывающихся списка. Чтобы выбрать активную целевую систему, используйте раскрывающийся список слева. Это система, в которой вызывается CMake для настройки и сборки проекта. Для запроса установки WSL среда Visual Studio использует wsl -l -v. На следующем рисунке в качестве целевой системы выбрано WSL2: Ubuntu-20.04.

    Снимок экрана: раскрывающийся список целевой системы Visual Studio. WSL2: Ubuntu-20.04 выбран.

    Примечание.

    Если Visual Studio запускает автоматическую настройку проекта, перейдите к шагу 11 для управления двоичным развертыванием CMake, а затем перейдите к шагу ниже. Сведения о настройке этого поведения см. в разделе Изменение автоматической настройки и уведомлений кэша.

  6. В раскрывающемся списке посередине выберите активную предустановку конфигурации. Предустановка конфигурации указывает для Visual Studio способ вызова CMake и создания базовой системы сборки. На шаге 7 в качестве активной предустановки конфигурации используется предустановка linux-default, созданная Visual Studio. Чтобы создать настраиваемую предустановку настройки, выберите " Управление конфигурациями" ... Дополнительные сведения о настройке предустановок см. в разделе "Выбор предустановки настройки" и "Изменение предустановок".

    Снимок экрана: раскрывающийся список предварительной настройки Visual Studio. Управление конфигурациями... выбран.

  7. В раскрывающемся списке справа выберите активную предустановку сборки. Предустановки сборки сообщают Visual Studio способ вызова сборки. На рисунке шага 7 активной предустановкой сборки является предустановка По умолчанию, созданная Visual Studio. Дополнительные сведения о предустановках сборки см. в разделе Выбор предустановки сборки.

  8. Настройте проект в WSL 2. Если создание проекта не запускается автоматически, то вручную вызовите настройку с >именем проекта "Настройкапроекта"

    Снимок экрана: раскрывающийся список настройки проекта Visual Studio. Выбрана настройка CMakeProject.

  9. Если у вас нет поддерживаемой версии CMake, установленной в дистрибутиве WSL 2, Visual Studio предложит вам выполнить развертывание последней версии CMake под лентой главного меню. Выберите Да, чтобы развернуть двоичные файлы CMake в дистрибутиве WSL 2.

    Снимок экрана: запрос под панелью инструментов Visual Studio

    Пользователю будет предложено установить последние двоичные файлы C Make из C make. org, так как поддерживаемая версия C Make не установлена".

  10. Убедитесь, что действие настройки завершено и вы увидите готовое сообщение создания CMake в окне вывода в области CMake. Файлы сборки записываются в каталог в файловой системе WSL 2 дистрибутива.

    Снимок экрана: окно вывода Visual Studio. Он содержит сообщения, созданные на этапе настройки, в том числе создание C Make завершено.

  11. Выберите активный целевой объект отладки. В раскрывающемся меню отладки перечислены все целевые объекты CMake, доступные для проекта.

    Снимок экрана: раскрывающееся меню отладки Visual Studio. Выбран CMakeProject.

  12. Разверните вложенную папку проекта в обозревателе решений. В файле CMakeProject.cpp задайте точку останова в разделе main(). Перейти к представлению целевых объектов CMake можно также с помощью кнопки выбора представлений в обозревателе решений, выделенной на следующем снимке экрана:

    Снимок экрана: обозреватель решений Visual Studio с кнопкой переключения представлений. Он расположен справа от домашней кнопки.

  13. Выберите Отладка>Начать или нажмите клавишу F5. Проект выполняет сборку, исполняемый файл запускается в дистрибутиве WSL 2, а Visual Studio останавливает выполнение в точке останова. Выходные данные программы (в данном случае "Hello CMake.") отображаются в окне консоли Linux:

    Снимок экрана: запущенная программа hello world.

    В окне консоли Linux Visual Studio отображаются выходные данные программы: Hello C Make. В окне редактора отображается программа hello world. Выполнение остановилось в точке останова в строке, которая говорит возвращать 0;".

Вы создали приложение 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, в схеме CMakePresets.jsonпоставщика удаленной Параметры Visual Studio. Дополнительные сведения см. в статье о карте поставщика удаленных Параметры 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. Щелкните проект правой кнопкой мыши в обозревателе решений, а затем выберите "Свойства>общего>набора инструментов платформы":

Снимок экрана: раскрывающийся список Visual Studio с выбранным набором инструментов платформы и справа, другой раскрывающийся список с выбранным набором инструментов WSL2.

Если вы используете дистрибутив 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".

См. также

Видео: отладка C++ с помощью дистрибутивов WSL 2 и Visual Studio 2022
Скачать Visual Studio 2022
Создание проекта CMake для Linux в Visual Studio
Руководство. Отладка проекта CMake на удаленном компьютере Windows