Udostępnij przez


Przewodnik: kompilowanie i debugowanie języka C++ przy użyciu programów WSL 2 i Visual Studio 2022

Program Visual Studio 2022 wprowadza natywny zestaw narzędzi języka C++ na potrzeby programowania Podsystem Windows dla systemu Linux w wersji 2 (WSL 2). Ten zestaw narzędzi jest teraz dostępny w programie Visual Studio 2022 w wersji 17.0 lub nowszej.

WSL 2 to nowa, zalecana wersja Podsystem Windows dla systemu Linux (WSL). Zapewnia lepszą wydajność systemu plików systemu Linux, obsługę graficznego interfejsu użytkownika i pełną zgodność wywołań systemowych. Zestaw narzędzi WSL 2 programu Visual Studio umożliwia kompilowanie i debugowanie kodu C++ w dystrybucjach WSL 2 bez dodawania połączenia SSH. Można już kompilować i debugować kod C++ w dystrybucjach WSL 1 przy użyciu natywnego zestawu narzędzi WSL 1 wprowadzonego w programie Visual Studio 2019 w wersji 16.1.

Zestaw narzędzi WSL 2 programu Visual Studio obsługuje zarówno projekty CMake, jak i MSBuild systemu Linux. Narzędzie CMake jest naszym zaleceniem dla wszystkich programowania międzyplatformowego języka C++ w programie Visual Studio. Zalecamy narzędzie CMake, ponieważ kompiluje i debuguje ten sam projekt w systemach Windows, WSL i zdalnych.

Aby zapoznać się z prezentacją wideo z informacjami w tym temacie, zobacz Wideo: Debugowanie języka C++ przy użyciu dystrybucji WSL 2 i programu Visual Studio 2022.

Tło zestawu narzędzi programu WSL 2

Obsługa wielu platform w języku C++ w programie Visual Studio zakłada, że wszystkie pliki źródłowe pochodzą z systemu plików systemu Windows. W przypadku określania wartości docelowej dystrybucji WSL 2 program Visual Studio wykonuje lokalne rsync polecenie, aby skopiować pliki z systemu plików systemu Windows do systemu plików WSL. Kopia lokalna rsync nie wymaga żadnej interwencji użytkownika. Występuje on automatycznie, gdy program Visual Studio wykryje, że używasz dystrybucji WSL 2. Aby dowiedzieć się więcej o różnicach między WSL 1 i WSL 2, zobacz Porównanie WSL 1 i WSL 2.

Integracja ustawień wstępnych CMake w programie Visual Studio obsługuje zestaw narzędzi WSL 2. Aby dowiedzieć się więcej, zobacz CMake Presets integration in Visual Studio and Visual Studio Code and Configure and build with CMake Presets in Visual Studio (Integracja ustawień wstępnych narzędzi CMake w programie Visual Studio i Visual Studio Code ) oraz Configure and build with CMake Presets in Visual Studio (Konfigurowanie i kompilowanie przy użyciu ustawień Wstępnych narzędzia CMake w programie Visual Studio). W tym artykule znajdują się również bardziej zaawansowane informacje w temacie Advanced WSL 2 and CMake projects considerations (Zagadnienia dotyczące zaawansowanych projektów WSL 2 i CMake).

Instalowanie narzędzi kompilacji

Zainstaluj narzędzia niezbędne do kompilowania i debugowania w programie WSL 2. W późniejszym kroku zainstalujesz najnowszą wersję narzędzia CMake przy użyciu binarnego wdrożenia narzędzia CMake programu Visual Studio.

  1. Zainstaluj dystrybucję WSL i WSL 2, postępując zgodnie z instrukcjami w temacie Instalowanie programu WSL.

  2. Przy założeniu użycia apt dystrybucji (w tym przewodniku jest używany system Ubuntu), użyj następujących poleceń, aby zainstalować wymagane narzędzia kompilacji w dystrybucji WSL 2:

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

    Powyższe apt polecenia instalują:

    • Kompilator języka C++
    • gdb
    • CMake
    • rsync
    • zip
    • Podstawowy generator systemu kompilacji

Programowanie międzyplatformowe narzędzia CMake z dystrybucją WSL 2

W tym przewodniku używane są biblioteki GCC i Ninja w systemie Ubuntu. Program Visual Studio 2022 w wersji 17.0 (wersja zapoznawcza 2 lub nowsza).

Program Visual Studio definiuje projekt CMake jako folder z plikiem CMakeLists.txt w katalogu głównym projektu. W tym przewodniku utworzysz nowy projekt narzędzia CMake przy użyciu szablonu projektu CMake programu Visual Studio:

  1. Na ekranie Wprowadzenie programu Visual Studio wybierz pozycję Utwórz nowy projekt.

    Zrzut ekranu przedstawiający okno dialogowe Wprowadzenie do programu Visual Studio 2022. Dostępne opcje to: Klonowanie repozytorium, Otwieranie projektu lub rozwiązania, Otwieranie folderu lokalnego, Tworzenie nowego projektu lub Kontynuuj bez kodu.":::

  2. W polu tekstowym Wyszukaj szablony wpisz "cmake". Wybierz typ projektu CMake i wybierz przycisk Dalej. Nadaj projektowi nazwę i lokalizację, a następnie wybierz pozycję Utwórz.

  3. Włącz integrację CMake Presets programu Visual Studio. Wybierz pozycję Narzędzia>Opcje>Ogólne. Wybierz pozycję Preferuj używanie ustawień wstępnych narzędzia CMake do konfigurowania, kompilowania i testowania, a następnie wybierz przycisk OK. Zamiast tego można było dodać CMakePresets.json plik do katalogu głównego projektu. Aby uzyskać więcej informacji, zobacz Enable CMake Presets integration (Włączanie integracji ustawień wstępnych narzędzia CMake).

    Zrzut ekranu przedstawiający opcje projektu programu Visual Studio. Wybrano pozycję Ogólne narzędzia Cmake > .

    W grupie plików konfiguracji narzędzia CMake opcja Użyj ustawień wstępnych narzędzia CMake, jeśli jest dostępna, w przeciwnym razie jest wywoływana CMakeSettings.json" i jest zaznaczona.

  4. Aby aktywować integrację: z menu głównego wybierz pozycję Plik>Zamknij folder. Zostanie wyświetlona strona Wprowadzenie . W obszarze Otwórz ostatnie wybierz właśnie zamknięty folder, aby ponownie otworzyć folder.

  5. Na pasku menu głównego programu Visual Studio znajdują się trzy listy rozwijane. Użyj listy rozwijanej po lewej stronie, aby wybrać aktywny system docelowy. Jest to system, w którym wywoływano narzędzie CMake w celu skonfigurowania i skompilowania projektu. Program Visual Studio wykonuje zapytania dotyczące instalacji WSL za pomocą polecenia wsl -l -v. Na poniższej ilustracji WSL2: Ubuntu-20.04 jest wyświetlany jako system docelowy.

    Zrzut ekranu przedstawiający listę rozwijaną systemu docelowego programu Visual Studio. WSL2: Wybrano ubuntu-20.04.

    Uwaga

    Jeśli program Visual Studio automatycznie skonfiguruje projekt, przeczytaj krok 11, aby zarządzać wdrożeniem binarnym narzędzia CMake, a następnie przejdź do poniższego kroku. Aby dostosować to zachowanie, zobacz Modyfikowanie automatycznej konfiguracji i powiadomień pamięci podręcznej.

  6. Użyj listy rozwijanej w środku, aby wybrać aktywne ustawienie Skonfiguruj ustawienie wstępne. Konfigurowanie ustawień wstępnych informuje program Visual Studio, jak wywołać narzędzie CMake i wygenerować bazowy system kompilacji. W kroku 7 aktywna konfiguracja ustawienia wstępne jest domyślnym ustawieniem wstępnym systemu Linux utworzonym przez program Visual Studio. Aby utworzyć niestandardową konfigurację ustawień wstępnych, wybierz pozycję Zarządzaj konfiguracjami... Aby uzyskać więcej informacji na temat konfigurowania ustawień wstępnych, zobacz Select a Configure Presets and Edit Presets (Wybieranie ustawień wstępnych konfiguracji i edytowanie ustawień wstępnych).

    Zrzut ekranu przedstawiający listę rozwijaną Konfiguracji aktywnej konfiguracji programu Visual Studio. Zarządzaj konfiguracjami... jest zaznaczona.

  7. Użyj listy rozwijanej po prawej stronie, aby wybrać aktywne ustawienie wstępne kompilacji. Ustawienia wstępne kompilacji informują program Visual Studio, jak wywołać kompilację. Na ilustracji dla kroku 7 aktywny ustawienia wstępne kompilacji jest domyślnym ustawieniem wstępnym kompilacji utworzonym przez program Visual Studio. Aby uzyskać więcej informacji na temat ustawień wstępnych kompilacji, zobacz Wybieranie ustawienia wstępnego kompilacji.

  8. Skonfiguruj projekt w programie WSL 2. Jeśli generowanie projektu nie zostanie uruchomione automatycznie, należy ręcznie wywołać konfigurację przy użyciu polecenia Project Configure project-name>

    Zrzut ekranu przedstawiający listę rozwijaną konfigurowania projektu programu Visual Studio. Wybrano pozycję Konfiguruj CMakeProject.

  9. Jeśli nie masz obsługiwanej wersji narzędzia CMake zainstalowanej w dystrybucji WSL 2, program Visual Studio wyświetli monit pod wstążką menu głównego, aby wdrożyć najnowszą wersję narzędzia CMake. Wybierz pozycję Tak , aby wdrożyć pliki binarne narzędzia CMake w dystrybucji WSL 2.

    Zrzut ekranu przedstawiający monit pod paskiem narzędzi programu Visual Studio

    Użytkownik jest monitowany o zainstalowanie najnowszych plików binarnych C Make z C make . organizacja, ponieważ obsługiwana wersja C Make nie jest zainstalowana.

  10. Upewnij się, że krok konfigurowania został ukończony i że w oknie Dane wyjściowe w okienku CMake zostanie wyświetlony komunikat ukończonej generacji narzędzia CMake. Pliki kompilacji są zapisywane w katalogu w systemie plików dystrybucji WSL 2.

    Zrzut ekranu przedstawiający okno Dane wyjściowe programu Visual Studio. Zawiera on komunikaty wygenerowane podczas kroku konfigurowania, w tym ukończenie generowania C Make.

  11. Wybierz aktywny element docelowy debugowania. Menu rozwijane debugowania zawiera listę wszystkich obiektów docelowych narzędzia CMake dostępnych dla projektu.

    Zrzut ekranu przedstawiający menu rozwijane debugowania programu Visual Studio. Wybrano pozycję CMakeProject.

  12. Rozwiń podfolder projektu w Eksplorator rozwiązań. CMakeProject.cpp W pliku ustaw punkt przerwania w pliku main(). Możesz również przejść do widoku obiektów docelowych narzędzia CMake, wybierając przycisk Selektor widoków w Eksplorator rozwiązań wyróżniony na poniższym zrzucie ekranu:

    Zrzut ekranu przedstawiający eksploratora rozwiązań programu Visual Studio z przyciskiem przełączania widoków. Znajduje się po prawej stronie przycisku strona główna.

  13. Wybierz pozycję Rozpocznij debugowanie>lub naciśnij F5. Kompilacje projektu, plik wykonywalny jest uruchamiany w dystrybucji WSL 2, a program Visual Studio zatrzymuje wykonywanie w punkcie przerwania. Dane wyjściowe programu (w tym przypadku "Hello CMake.") są widoczne w oknie konsoli systemu Linux:

    Zrzut ekranu przedstawiający uruchomiony program hello world.

    W oknie konsoli programu Visual Studio dla systemu Linux zostaną wyświetlone dane wyjściowe programu: "Hello C Make". W oknie edytora jest wyświetlany program hello world. Wykonanie zatrzymało się w punkcie przerwania w wierszu, który mówi, że zwraca wartość 0;"

Utworzono i debugowaliśmy aplikację języka C++ przy użyciu programów WSL 2 i Visual Studio 2022.

Zagadnienia dotyczące zaawansowanych projektów WSL 2 i CMake

Program Visual Studio zapewnia natywną obsługę WSL 2 dla projektów CMake, które są używane CMakePresets.json jako aktywny plik konfiguracji. Aby przeprowadzić migrację z CMakeSettings.json do CMakePresets.jsonprogramu , zobacz Włączanie integracji ustawień wstępnych CMake w programie Visual Studio.

Jeśli używasz dystrybucji WSL 2 i nie chcesz używać zestawu narzędzi WSL 2, na mapie dostawcy ustawień zdalnych programu Visual Studio w programie CMakePresets.jsonustaw wartość forceWSL1Toolset na wartość true . Aby uzyskać więcej informacji, zobacz Mapa dostawcy ustawień zdalnych programu Visual Studio.

Jeśli właściwość forceWSL1Tooslet ma wartość true, program Visual Studio nie przechowuje kopii plików źródłowych w systemie plików WSL. Zamiast tego uzyskuje dostęp do plików źródłowych na zainstalowanym dysku systemu Windows (/mnt/...).

W większości przypadków najlepszym rozwiązaniem jest użycie zestawu narzędzi WSL 2 z dystrybucjami WSL 2, ponieważ program WSL 2 działa wolniej, gdy pliki projektu są przechowywane w systemie plików systemu Windows. Aby dowiedzieć się więcej o wydajności systemu plików w programie WSL 2, zobacz Porównanie systemów WSL 1 i WSL 2.

Określ ustawienia zaawansowane, takie jak ścieżka do katalogu w programie WSL 2, w którym projekt jest kopiowany, opcje źródła kopiowania i argumenty poleceń rsync, na mapie dostawcy ustawień zdalnych programu Visual Studio w programie CMakePresets.json. Aby uzyskać więcej informacji, zobacz Mapa dostawcy ustawień zdalnych programu Visual Studio.

Nagłówki systemowe są nadal automatycznie kopiowane do systemu plików Systemu Windows w celu dostarczenia natywnego środowiska funkcji IntelliSense. Możesz dostosować nagłówki dołączone lub wykluczone z tej kopii na mapie dostawcy ustawień zdalnych programu Visual Studio w programie CMakePresets.json.

Możesz zmienić tryb IntelliSense lub określić inne opcje funkcji IntelliSense na mapie dostawcy ustawień programu Visual Studio w programie CMakePresets.json. Aby uzyskać szczegółowe informacje na temat mapy dostawcy, zobacz mapę dostawcy ustawień zdalnych programu Visual Studio.

Projekty WSL 2 i MSBuild systemu Linux

Narzędzie CMake jest zalecane w przypadku wszystkich programowania międzyplatformowego języka C++ w programie Visual Studio, ponieważ umożliwia kompilowanie i debugowanie tego samego projektu w systemach Windows, WSL i zdalnych.

Być może jednak masz projekt systemu Linux oparty na programie MSBuild.

Jeśli masz projekt systemu Linux oparty na programie MSBuild, możesz przeprowadzić uaktualnienie do zestawu narzędzi WSL 2 w programie Visual Studio. Kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań, a następnie wybierz pozycję Właściwości>> narzędzi platformy:

Zrzut ekranu przedstawiający listę rozwijaną programu Visual Studio z wybranym zestawem narzędzi platformy i po prawej stronie z wybraną inną listą rozwijaną z wybranym zestawem narzędzi WSL2.

Jeśli używasz dystrybucji WSL 2 i nie chcesz używać zestawu narzędzi WSL 2, na liście rozwijanej Zestaw narzędzi platformy wybierz GCC dla Podsystem Windows dla systemu Linux lub Clang dla zestawu narzędzi Podsystem Windows dla systemu Linux. Jeśli wybrano jeden z tych zestawów narzędzi, program Visual Studio nie przechowuje kopii plików źródłowych w systemie plików WSL i zamiast tego uzyskuje dostęp do plików źródłowych na zainstalowanym dysku systemu Windows (/mnt/...). Nagłówki systemu są nadal automatycznie kopiowane do systemu plików Systemu Windows w celu zapewnienia natywnego środowiska funkcji IntelliSense. Dostosuj nagłówki dołączone lub wykluczone z tej kopii w obszarze Ogólne strony>właściwości.

W większości przypadków najlepszym rozwiązaniem jest użycie zestawu narzędzi WSL 2 z dystrybucjami WSL 2, ponieważ program WSL 2 działa wolniej, gdy pliki projektu są przechowywane w systemie plików systemu Windows. Aby dowiedzieć się więcej, zobacz Porównanie usług WSL 1 i WSL 2.

Zobacz też

Wideo: Debugowanie języka C++ przy użyciu dystrybucji WSL 2 i programu Visual Studio 2022
Pobierz program Visual Studio 2022
Tworzenie projektu CMake Linux w programie Visual Studio
Samouczek: debugowanie projektu CMake na zdalnym komputerze z systemem Windows