연습: WSL 2 및 Visual Studio 2022를 사용하여 C++ 빌드 및 디버그

Visual Studio 2022에서는 WSL 2(Linux용 Windows 하위 시스템 버전 2) 개발을 위한 네이티브 C++ 도구 집합이 도입되었습니다. 이 도구 집합은 이제 Visual Studio 버전 17.0 이상에서 사용할 수 있습니다.

WSL 2는 WSL(Linux용 Windows 하위 시스템)의 권장되는 새로운 버전입니다. 이는 향상된 Linux 파일 시스템 성능, GUI 지원, 전체 시스템 호출 호환성을 제공합니다. Visual Studio WSL 2 도구 집합을 사용하면 Visual Studio 사용하여 SSH 연결을 추가하지 않고 WSL 2 배포판에서 C++ 코드를 빌드하고 디버그할 수 있습니다. Visual Studio 2019 버전 16.1에서 도입된 네이티브 WSL 1 도구 집합 사용하여 WSL 1 배포판에서 C++ 코드를 이미 빌드하고 디버그할 수 있습니다.

Visual Studio WSL 2 도구 집합은 CMake 및 MSBuild 기반 Linux 프로젝트를 모두 지원합니다. CMake는 Visual Studio 사용하여 모든 C++ 플랫폼 간 개발을 위한 권장 사항입니다. CMake는 Windows, WSL 및 원격 시스템에서 동일한 프로젝트를 빌드하고 디버그하기 때문에 CMake를 사용하는 것이 좋습니다.

이 항목의 정보에 대한 비디오 프레젠테이션은 비디오: WSL 2 배포판 및 Visual Studio 2022로 C++ 디버그하기를 참조하세요.

WSL 2 도구 집합 배경

Visual Studio C++ 플랫폼 간 지원은 모든 원본 파일이 Windows 파일 시스템에서 시작된다고 가정합니다. WSL 2 배포를 대상으로 지정할 때 Visual Studio 로컬 rsync 명령을 실행하여 Windows 파일 시스템에서 WSL 파일 시스템으로 파일을 복사합니다. 로컬 rsync 복사에는 사용자 개입이 필요하지 않습니다. Visual Studio WSL 2 배포판 사용 중이라는 것을 감지하면 자동으로 발생합니다. WSL 1과 WSL 2의 차이점에 관한 자세한 내용은 WSL 1 및 WSL 2 비교를 참조하세요.

Visual Studio CMake 사전 설정 통합은 WSL 2 도구 집합을 지원합니다. 자세한 내용은 Visual Studio CMake 사전 설정 통합 및 Visual Studio CodeVisual Studio 참조하세요. 이 문서의 고급 WSL 2 및 CMake 프로젝트 고려 사항에서 더 많은 고급 정보를 확인할 수 있습니다.

빌드 도구 설치

WSL 2에서 빌드 및 디버그하는 데 필요한 도구를 설치합니다. 이후 단계에서 Visual Studio CMake 이진 배포를 사용하여 최신 버전의 CMake를 설치합니다.

  1. WSL 설치의 지침에 따라 WSL 및 WSL 2 배포판을 설치합니다.

  2. Visual Studio 설치 관리자에서 linux용 C++ CMake 도구 설치되어 있는지 확인합니다. 이렇게 하려면 Visual Studio 버전에 Modify 선택합니다. 개별 구성 요소 탭에서 Linux 및 Mac용 C++ CMake 도구를 검색하고 선택 및 설치되어 있는지 확인합니다. 이 구성 요소는 Visual Studio WSL 설치를 검색하는 데 필요합니다.

  3. 배포판이 apt를 사용한다고 가정하고(이 연습에서는 Ubuntu 사용) 다음 명령을 사용하여 WSL 2 배포판에 필요한 빌드 도구를 설치합니다.

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

    어떤 것이 설치되는가:

    • C++ 컴파일러
    • gdb
    • CMake
    • rsync
    • zip
    • 기본 빌드 시스템 생성기

WSL 2 배포판을 사용한 플랫폼 간 CMake 개발

이 연습에서는 Ubuntu에서 GCC 및 Ninja를 사용합니다. 그리고 Visual Studio 2022 버전 17.0 프리뷰 2 이상.

Visual Studio CMake 프로젝트를 프로젝트 루트에 CMakeLists.txt 파일이 있는 폴더로 정의합니다. 이 연습에서는 Visual Studio CMake Project 템플릿을 사용하여 새 CMake project 만듭니다.

  1. Visual Studio Get started 화면에서 새 프로젝트 만들기를 선택합니다.

    Visual Studio 2022 시작 대화 상자의 스크린샷. 사용 가능한 옵션은 다음과 같습니다. 리포지토리 복제, 프로젝트 또는 솔루션 열기, 로컬 폴더 열기, 새 프로젝트 만들기 또는 코드 없이 계속

  2. 템플릿 검색 텍스트 상자에 “cmake”를 입력합니다. CMake Project 형식을 선택하고 Next 선택합니다. 프로젝트에 이름과 위치를 지정한 다음, 만들기를 선택합니다.

  3. Visual Studio CMake 사전 설정 통합을 사용하도록 설정합니다. 도구>옵션>CMake>일반을 선택합니다. 구성, 빌드 및 테스트에 CMake 사전 설정을 사용하는 것이 좋습니다.를 선택한 다음, 확인을 선택합니다. 또는 프로젝트의 루트에 CMakePresets.json 파일을 추가할 수 있습니다. 자세한 내용은 CMake 사전 설정 통합 사용을 참조하세요.

     Visual Studio 프로젝트 옵션 스크린샷 Cmake > General이 선택되었습니다.

    CMake 구성 파일 그룹에서 '사용 가능한 경우 CMake 사전 설정을 사용하고, 그렇지 않으면 CMakeSettings.json 사용'이 호출되고 선택됩니다.

  4. 통합을 활성화하려면: 주 메뉴에서 파일>폴더 닫기를 선택합니다. 시작 페이지가 나타납니다. 최근 파일 열기에서 방금 닫은 폴더를 선택하여 폴더를 다시 엽니다.

  5. Visual Studio 주 메뉴 모음에는 세 개의 드롭다운이 있습니다. 왼쪽의 드롭다운을 사용하여 활성 대상 시스템을 선택합니다. 이 시스템은 프로젝트를 구성하고 빌드하기 위해 CMake가 호출되는 시스템입니다. Visual Studio는 wsl -l -v을 사용하여 WSL 설치를 쿼리합니다. 다음 이미지에는 WSL2: Ubuntu-20.04대상 시스템으로 선택된 것으로 표시됩니다.

    Visual Studio의 대상 시스템 드롭다운 스크린샷. WSL2: Ubuntu-20.04가 선택됨.

    참고

    Visual Studio 자동으로 프로젝트를 구성하기 시작하면 11단계를 읽고 CMake 이진 배포를 관리한 다음 다음 단계를 계속 진행합니다. 이 동작을 사용자 지정하려면 자동 구성 및 캐시 알림 수정을 참조하세요.

  6. 가운데에 있는 드롭다운을 사용하여 활성 구성 사전 설정을 선택합니다. 구성 사전 설정은 CMake를 호출하고 기본 빌드 시스템을 생성하는 방법을 Visual Studio 알려줍니다. 7단계에서 활성 구성 사전 설정은 Visual Studio 만든 linux-default 사전 설정입니다. 사용자 지정 구성 사전 설정을 만들려면 구성 관리...를 선택합니다. 사전 설정 구성에 대한 자세한 내용은 사전 설정 구성 선택사전 설정 편집을 참조하세요.

    Visual Studio 활성 구성 프리셋 드롭다운의 스크린샷입니다. '구성 관리...'가 선택되었습니다.

  7. 오른쪽의 드롭다운을 사용하여 활성 빌드 사전 설정을 선택합니다. 빌드 사전 설정은 빌드를 호출하는 방법을 Visual Studio 알려줍니다. 7단계의 그림에서 활성 빌드 사전 설정은 Visual Studio 만든 Default 빌드 사전 설정입니다. 빌드 사전 설정에 관한 자세한 내용은 빌드 사전 설정 선택을 참조하세요.

  8. WSL 2에서 프로젝트를 구성합니다. 프로젝트 생성이 자동으로 시작되지 않으면, 수동으로 ProjectConfigureproject-name를 호출하여 구성하십시오.

    Visual Studio 프로젝트 구성 드롭다운의 스크린샷입니다. CMakeProject가 선택된 상태입니다.

  9. WSL 2 배포판에 지원되는 CMake 버전이 설치되어 있지 않은 경우, Visual Studio에서는 주 메뉴 리본 아래에 CMake의 최신 버전을 배포하라는 메시지를 표시합니다. 를 선택하여 WSL 2 배포판에 CMake 이진 파일을 배포합니다.

     Visual Studio 도구 모음 아래에 있는 프롬프트 스크린샷

    사용자에게 C make에서 최신 C Make 이진 파일을 설치할지 여부를 묻는 메시지가 표시됩니다. 지원되는 C Make 버전이 설치되지 않았기 때문에 해당 기능을 사용할 수 없습니다.

  10. 구성 단계가 완료되었고 CMake 창 아래 출력 창에서 CMake 생성 완료 메시지를 볼 수 있는지 확인합니다. 빌드 파일은 WSL 2 배포판의 파일 시스템에 있는 디렉터리에 기록됩니다.

    Visual Studio 출력 창의 스크린샷입니다. 구성 단계 중에 생성된 메시지, 특히 CMake 생성이 완료되었음을 포함하고 있습니다.

  11. 활성 디버그 대상을 선택합니다. 디버그 드롭다운 메뉴에는 프로젝트에 사용할 수 있는 모든 CMake 대상이 나열됩니다.

    Visual Studio 디버그 드롭다운 메뉴의 스크린샷. CMakeProject가 선택되었습니다.

  12. 솔루션 탐색기 프로젝트 하위 폴더를 확장합니다. CMakeProject.cpp 파일의 main()에서 중단점을 설정합니다. 다음 스크린샷에서 강조 표시된 솔루션 탐색기 보기 선택기 단추를 선택하여 CMake 대상 보기로 이동할 수도 있습니다.

    Visual Studio 솔루션 탐색기의 스크린샷으로, 보기를 전환하는 버튼을 보여주고 있습니다. 이 버튼은 홈 버튼의 오른쪽에 위치합니다.

  13. 디버그>시작을 선택하거나 F5 키를 누릅니다. 프로젝트가 빌드되고, 실행 파일이 WSL 2 배포판에서 시작되고, Visual Studio 중단점에서 실행을 중지합니다. Linux 콘솔 창에서 프로그램의 출력(이 경우 "Hello CMake.")을 볼 수 있습니다.

    실행 중인 hello world 프로그램의 스크린샷.

    Visual Studio Linux 콘솔 창에는 'Hello C Make' 프로그램의 출력이 표시됩니다. 편집기 창에 hello world 프로그램이 표시됩니다. 0을 반환하는 줄의 중단점에서 실행이 중지되었습니다;."

이제 WSL 2 및 Visual Studio 2022를 사용하여 C++ 앱을 빌드하고 디버그했습니다.

고급 WSL 2 및 CMake 프로젝트 고려 사항

Visual Studio 활성 구성 파일로 CMakePresets.json 사용하는 CMake 프로젝트에 대한 WSL 2에 대한 기본 지원만 제공합니다. 에서 로 마이그레이션하려면 Visual Studio에서 CMake 사전 설정 통합 사용 가능을 참조하세요.

WSL 2 배포를 대상으로 하고 WSL 2 도구 집합을 사용하지 않으려면 CMakePresets.json Visual Studio 원격 설정 공급업체 맵에서 forceWSL1Toolsettrue로 설정합니다. 자세한 내용은 Visual Studio 원격 설정 공급업체 맵 참조하세요.

forceWSL1Tooslettrue로 설정된 경우 Visual Studio WSL 파일 시스템에서 원본 파일의 복사본을 유지 관리하지 않습니다. 대신 탑재된 Windows 드라이브(/mnt/...)의 원본 파일에 액세스합니다.

대부분의 경우 WSL 2 배포판에서 WSL 2 도구 집합을 사용하는 것이 가장 좋습니다. 프로젝트 파일이 Windows 파일 시스템에 저장되는 경우 WSL 2가 느리기 때문입니다. WSL 2의 파일 시스템 성능에 관한 자세한 내용은 WSL 1 및 WSL 2 비교를 참조하세요.

CMakePresets.json Visual Studio 원격 설정 공급업체 맵에서 프로젝트가 복사되는 WSL 2의 디렉터리 경로, 원본 옵션 복사 및 rsync 명령 인수와 같은 고급 설정을 지정합니다. 자세한 내용은 Visual Studio 원격 설정 공급업체 맵 참조하세요.

시스템 헤더는 여전히 Windows 파일 시스템에 자동으로 복사되어 네이티브 IntelliSense 환경을 제공합니다. CMakePresets.json Visual Studio 원격 설정 공급업체 맵에서 이 복사본에 포함되거나 제외된 헤더를 사용자 지정할 수 있습니다.

Visual Studio 설정 공급업체 맵의 CMakePresets.json IntelliSense 모드를 변경하거나 다른 IntelliSense 옵션을 지정할 수 있습니다. 공급업체 맵에 대한 자세한 내용은 Visual Studio 원격 설정 공급업체 맵 참조하세요.

WSL 2 및 MSBuild 기반 Linux 프로젝트

CMake는 Windows, WSL 및 원격 시스템에서 동일한 프로젝트를 빌드하고 디버그할 수 있으므로 Visual Studio 사용하여 모든 C++ 플랫폼 간 개발에 권장됩니다.

하지만 MSBuild 기반 Linux 프로젝트가 있을 수 있습니다.

MSBuild 기반 Linux 프로젝트가 있는 경우 Visual Studio WSL 2 도구 집합으로 업그레이드할 수 있습니다. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 속성>일반>플랫폼 도구 집합을 선택합니다.

플랫폼 도구 집합이 선택된 Visual Studio 드롭다운의 스크린샷이며, 오른쪽에는 WSL2 도구 집합이 선택된 또 다른 드롭다운이 있습니다.

WSL 2 배포를 대상으로 하고 WSL 2 도구 집합을 사용하지 않으려면, Platform 도구 집합 드롭다운에서 Linux용 Windows 하위 시스템에 대한 GCC 또는 Linux용 Windows 하위 시스템에 대한 Clang 도구 집합을 선택하십시오. 이러한 도구 집합 중 하나를 선택하면 Visual Studio WSL 파일 시스템에서 원본 파일의 복사본을 유지 관리하지 않고 탑재된 Windows 드라이브(/mnt/...)를 통해 원본 파일에 액세스합니다. 시스템 헤더는 여전히 Windows 파일 시스템에 자동으로 복사되어 네이티브 IntelliSense 환경을 제공합니다. 속성 페이지>일반에서 이 복사본에 포함되거나 제외되는 헤더를 사용자 지정합니다.

대부분의 경우 프로젝트 파일이 Windows 파일 시스템에 저장될 때 WSL 2가 느리기 때문에 WSL 2 배포에서 WSL 2 도구 집합을 사용하는 것이 가장 좋습니다. 자세한 내용은 WSL 1 및 WSL 2 비교를 참조하세요.

참고 항목

비디오: WSL 2 배포판 및 Visual Studio 2022를 사용하여 C++ 디버그
Visual Studio 2022 다운로드
Visual Studio
Tutorial: 원격 Windows 컴퓨터에서 CMake 프로젝트 디버그