연습: WSL 2 및 Visual Studio 2022를 사용하여 C++ 빌드 및 디버그
Visual Studio 2022에서는 WSL 2(Linux용 Windows 하위 시스템 버전 2) 개발을 위한 네이티브 C++ 도구를 도입합니다. 이 도구 집합은 Visual Studio 2022 버전 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 및 Visual Studio Code의 CMake 사전 설정 통합 및 Visual Studio에서 CMake 사전 설정으로 구성 및 빌드를 참조하세요. 이 문서의 고급 WSL 2 및 CMake 프로젝트 고려 사항에서 더 많은 고급 정보를 확인할 수 있습니다.
빌드 도구 설치
WSL 2에서 빌드 및 디버그하는 데 필요한 도구를 설치합니다. 이후 단계에서 Visual Studio의 CMake 이진 배포를 사용하여 최신 버전의 CMake를 설치합니다.
WSL 설치의 지침에 따라 WSL 및 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
- 기본 빌드 시스템 생성기
WSL 2 배포판을 사용한 플랫폼 간 CMake 개발
이 연습에서는 Ubuntu에서 GCC 및 Ninja를 사용합니다. Visual Studio 2022 버전 17.0 미리 보기 2 이상도 사용합니다.
Visual Studio는 프로젝트 루트에 있는 CMakeLists.txt
파일을 사용하여 CMake 프로젝트를 폴더로 정의합니다. 이 연습에서는 Visual Studio CMake Project 템플릿을 사용하여 새 CMake 프로젝트를 만듭니다.
Visual Studio 시작 화면에서 새 프로젝트 만들기를 선택합니다.
사용 가능한 옵션은 리포지토리 복제, 프로젝트 또는 솔루션 열기, 로컬 폴더 열기, 새 프로젝트 만들기 또는 코드 없이 계속하기입니다.":::
템플릿 검색 텍스트 상자에 “cmake”를 입력합니다. CMake Project 형식을 선택하고 다음을 선택합니다. 프로젝트에 이름과 위치를 지정한 다음, 만들기를 선택합니다.
Visual Studio의 CMake 사전 설정 통합을 사용하도록 설정합니다. 도구>옵션>CMake>일반을 선택합니다. 구성, 빌드 및 테스트에 CMake 사전 설정을 사용하는 것이 좋습니다.를 선택한 다음, 확인을 선택합니다. 대신 프로젝트의 루트에
CMakePresets.json
파일을 추가했을 수 있습니다. 자세한 내용은 CMake 사전 설정 통합 사용을 참조하세요.CMake 구성 파일 그룹에서 '사용 가능한 경우 CMake 사전 설정을 사용하고, 그렇지 않으면 CMakeSettings.json 사용'이 호출되고 선택됩니다.
통합을 활성화하려면: 주 메뉴에서 파일>폴더 닫기를 선택합니다. 시작 페이지가 나타납니다. 최근 파일 열기에서 방금 닫은 폴더를 선택하여 폴더를 다시 엽니다.
Visual Studio 주 메뉴 모음에 걸쳐 세 개의 드롭다운이 있습니다. 왼쪽의 드롭다운을 사용하여 활성 대상 시스템을 선택합니다. 이 시스템은 프로젝트를 구성하고 빌드하기 위해 CMake가 호출되는 시스템입니다. Visual Studio는
wsl -l -v
를 사용하여 WSL 설치를 쿼리합니다. 다음 이미지에는 WSL2: Ubuntu-20.04가 대상 시스템으로 선택된 것으로 표시됩니다.참고 항목
Visual Studio가 자동으로 프로젝트를 구성하기 시작하는 경우 11단계를 읽어서 CMake 이진 배포를 관리하고 아래 단계를 계속 진행합니다. 이 동작을 사용자 지정하려면 자동 구성 및 캐시 알림 수정을 참조하세요.
가운데에 있는 드롭다운을 사용하여 활성 구성 사전 설정을 선택합니다. 구성 사전 설정은 CMake를 호출하고 기본 빌드 시스템을 생성하는 방법을 Visual Studio에 알려 줍니다. 7단계에서 활성 구성 사전 설정은 Visual Studio에서 만든 linux-default 사전 설정입니다. 사용자 지정 구성 사전 설정을 만들려면 구성 관리...를 선택합니다. 사전 설정 구성에 대한 자세한 내용은 사전 설정 구성 선택 및 사전 설정 편집을 참조하세요.
오른쪽의 드롭다운을 사용하여 활성 빌드 사전 설정을 선택합니다. 빌드 사전 설정은 빌드를 호출하는 방법을 Visual Studio에 알려 줍니다. 7단계의 일러스트레이션에서 활성 빌드 사전 설정은 Visual Studio에서 만든 기본 빌드 사전 설정입니다. 빌드 사전 설정에 관한 자세한 내용은 빌드 사전 설정 선택을 참조하세요.
WSL 2에서 프로젝트를 구성합니다. 프로젝트 생성이 자동으로 시작되지 않으면 프로젝트>project-name 구성을 사용하여 구성을 수동으로 호출합니다.
WSL 2 배포판에 지원되는 버전의 CMake가 설치되어 있지 않으면 Visual Studio는 주 메뉴 리본 바로 아래에 최신 버전의 CMake를 배포할지 묻는 메시지를 표시합니다. 예를 선택하여 WSL 2 배포판에 CMake 이진 파일을 배포합니다.
사용자에게 C make에서 최신 C Make 이진 파일을 설치할지 여부를 묻는 메시지가 표시됩니다. 지원되는 C Make 버전이 설치되지 않았기 때문에 org."
구성 단계가 완료되었고 CMake 창 아래 출력 창에서 CMake 생성 완료 메시지를 볼 수 있는지 확인합니다. 빌드 파일은 WSL 2 배포판의 파일 시스템에 있는 디렉터리에 기록됩니다.
활성 디버그 대상을 선택합니다. 디버그 드롭다운 메뉴에는 프로젝트에 사용할 수 있는 모든 CMake 대상이 나열됩니다.
솔루션 탐색기에서 프로젝트 하위 폴더를 확장합니다.
CMakeProject.cpp
파일의main()
에서 중단점을 설정합니다. 다음 스크린샷에서 강조 표시된 솔루션 탐색기의 보기 선택기 단추를 선택하여 CMake 대상 보기로 이동할 수도 있습니다.디버그>시작을 선택하거나 F5 키를 누릅니다. 프로젝트가 빌드되고, 실행 파일이 WSL 2 배포판에서 시작되고, Visual Studio가 중단점에서 실행을 중지합니다. Linux 콘솔 창에서 프로그램의 출력(이 경우
"Hello CMake."
)을 볼 수 있습니다.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 지원만 제공합니다. CMakeSettings.json
에서 CMakePresets.json
으로 마이그레이션하려면 Visual Studio에서 CMake 사전 설정 통합 사용을 참조하세요.
WSL 2 배포를 대상으로 하고 WSL 2 도구 집합을 사용하지 않으려면 CMakePresets.json
의 Visual Studio 원격 설정 공급업체 맵에서 forceWSL1Toolset을 true로 설정합니다. 자세한 내용은 Visual Studio 원격 설정 공급업체 맵을 참조하세요.
forceWSL1Tooslet이 true로 설정된 경우 Visual Studio는 WSL 파일 시스템에서 소스 파일 복사본을 유지 관리하지 않습니다. 대신 탑재된 Windows 드라이브(/mnt/
...)에서 소스 파일에 액세스합니다.
대부분의 경우 프로젝트 파일이 Windows 파일 시스템에 저장되는 경우 WSL 2가 더 느리기 때문에 WSL 2 배포에서 WSL 2 도구 집합을 사용하는 것이 가장 좋습니다. WSL 2의 파일 시스템 성능에 관한 자세한 내용은 WSL 1 및 WSL 2 비교를 참조하세요.
CMakePresets.json
의 Visual Studio 원격 설정 공급업체 맵에서 프로젝트를 복사할 WSL 2의 디렉터리 경로, 복사 소스 옵션, rsync 명령 인수와 같은 고급 설정을 지정합니다. 자세한 내용은 Visual Studio 원격 설정 공급업체 맵을 참조하세요.
네이티브 IntelliSense 환경을 제공하기 위해 시스템 헤더이 Windows 파일 시스템에 자동으로 복사됩니다. CMakePresets.json
의 Visual Studio 원격 설정 공급업체 맵에서 이 복사본에 포함되거나 제외되는 헤더를 사용자 지정할 수 있습니다.
CMakePresets.json
의 Visual Studio 설정 공급업체 맵에서 IntelliSense 모드를 변경하거나 다른 IntelliSense 옵션을 지정할 수 있습니다. 공급업체 맵에 관한 자세한 내용은 Visual Studio 원격 설정 공급업체 맵을 참조하세요.
WSL 2 및 MSBuild 기반 Linux 프로젝트
CMake를 사용하면 Windows, WSL, 원격 시스템에서 동일한 프로젝트를 빌드하고 디버그할 수 있으므로 CMake는 Visual Studio를 사용하여 모든 C++ 플랫폼 간 개발에 권장됩니다.
하지만 MSBuild 기반 Linux 프로젝트가 있을 수 있습니다.
MSBuild 기반 Linux 프로젝트가 있는 경우 Visual Studio에서 WSL 2 도구 집합으로 업그레이드할 수 있습니다. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 속성>일반>플랫폼 도구 집합을 선택합니다.
WSL 2 배포를 대상으로 하고 WSL 2 도구 집합을 사용하지 않으려는 경우 플랫폼 도구 집합 드롭다운에서 Linux용 Windows 하위 시스템용 GCC 또는 Linux용 Windows 하위 시스템용 Clang 도구 집합을 선택합니다. 이러한 도구 집합 중 하나가 선택되면 Visual Studio는 WSL 파일 시스템에서 소스 파일의 복사본을 유지 관리하지 않으며 대신 탑재된 Windows 드라이브(/mnt/
...)를 통해 소스 파일에 액세스합니다. 네이티브 IntelliSense 환경을 제공하기 위해 시스템 헤더이 Windows 파일 시스템에 자동으로 복사됩니다. 속성 페이지>일반에서 이 복사본에 포함되거나 제외되는 헤더를 사용자 지정합니다.
대부분의 경우 프로젝트 파일이 Windows 파일 시스템에 저장되는 경우 WSL 2가 더 느리기 때문에 WSL 2 배포에서 WSL 2 도구 집합을 사용하는 것이 가장 좋습니다. 자세한 내용은 WSL 1 및 WSL 2 비교를 참조하세요.
참고 항목
비디오: WSL 2 배포 및 Visual Studio 2022를 사용하여 C++ 디버그
Visual Studio 2022 다운로드
Visual Studio에서 CMake Linux 프로젝트 만들기
자습서: 원격 Windows 컴퓨터에서 CMake 프로젝트 디버그