-
Visual Studio 설치 의존성으로 인해 윈도우 네이티브 개발이 복잡하고 비효율적인 구조에 놓여 있음
- 기존 방식은 수십 GB의 설치 용량, 불투명한 구성 요소 관리, 버전 불일치 문제 등으로 개발자 생산성을 저하시킴
- 이를 해결하기 위해 경량 CLI 도구 ‘msvcup’ 이 제안되어, MSVC 툴체인과 Windows SDK를 버전별·격리된 형태로 자동 설치 가능
-
msvcup은 JSON 매니페스트 파싱, 자동 환경 설정(autoenv) , 락 파일 지원 등을 통해 재현 가능한 빌드 환경을 제공
- 이 접근은 Visual Studio Installer에 의존하지 않고 스크립트 기반의 완전한 자동화 빌드 체계를 가능하게 함
윈도우 네이티브 개발의 문제점
- Visual Studio를 설치해야 하는 기존 방식은 복잡한 설치 과정과 불안정한 의존성 관리로 인해 개발자에게 부담을 줌
- “Desktop development with C++” 워크로드, 특정 SDK 버전 등 세부 선택이 필요하며, 잘못 선택 시 빌드 실패 발생
- 설치 용량이 50GB에 달하고, 제거 후에도 레지스트리 잔여 항목과 백그라운드 서비스가 남음
-
Linux에서는 패키지 매니저 명령 한 줄로 툴체인을 설치할 수 있지만, Windows에서는 수천 개의 구성 요소를 수동으로 선택해야 함
- Visual Studio는 에디터, 컴파일러, SDK가 얽힌 단일 구조로, 버전 관리와 환경 재현이 어려움
- 결과적으로 “내 PC에서는 된다”는 식의 불일치가 빈번하며, 이는 네이티브 개발의 진입 장벽으로 작용
msvcup: 새로운 접근
-
msvcup은 Visual Studio 설치 없이 MSVC 툴체인과 Windows SDK를 직접 다운로드·설치하는 오픈소스 CLI 도구
- 각 버전은 C:\msvcup\ 하위의 격리된 디렉터리에 설치되어, 버전 간 충돌 없이 병행 사용 가능
- 설치는 수 분 내 완료되며, ARM 크로스 컴파일 도구도 자동 포함
-
msvcup install 명령은 필요한 패키지를 설치하고, autoenv 명령은 자동 환경 디렉터리를 생성
- 이 디렉터리에는 환경 변수를 자동 설정하는 래퍼 실행 파일과 toolchain.cmake 파일이 포함되어, CMake 프로젝트도 별도 설정 없이 빌드 가능
-
build.bat 스크립트 예시에서는 msvcup을 통해 “Hello, World” 프로그램을 Visual Studio 없이 빌드 가능
- Windows 10 이상 환경에서 curl과 tar만 있으면 동작
내부 동작 원리
- Microsoft가 배포하는 Visual Studio 구성 요소 JSON 매니페스트를 파싱하여 필요한 패키지만 식별
- 컴파일러, 링커, 헤더, 라이브러리 등 핵심 요소만 Microsoft CDN에서 직접 다운로드
- 설치된 구성 요소는 락 파일(lock file) 로 관리되어, 동일한 버전의 패키지를 팀 전체가 공유 가능
-
install 및 autoenv 명령은 멱등성(idempotent) 을 가지며, 이미 설치된 경우 수 밀리초 내에 완료
실제 적용 사례
-
Tuple(페어 프로그래밍 앱)은 msvcup을 CI 빌드 시스템에 통합하여 Visual Studio 사전 설치 요구를 제거
- WebRTC를 포함한 수백 개의 C/C++ 프로젝트를 동일한 툴체인/SDK로 빌드 가능
- x86_64와 ARM 빌드를 모두 지원
-
장점
- 버전별 디렉터리 설치로 병행 버전 관리 및 손쉬운 재설치 가능
-
크로스 컴파일 자동 지원, 별도 구성 불필요
-
락 파일 기반 재현성 보장, Microsoft 측 변경 시 즉시 인지 가능
-
빠른 실행 속도, 불필요한 재설치 없음
한계와 확장
-
msvcup은 컴파일 툴체인 중심으로 설계되어, Visual Studio IDE 자체가 필요한 경우에는 공식 설치가 여전히 필요
- 그러나 대부분의 네이티브 개발 워크플로에서는 IDE 없이도 완전한 빌드 환경을 제공
- 예시로 제시된 raylib 빌드 스크립트는 Visual Studio 없이도 SDK와 툴체인을 자동 설치하고 프로젝트를 빌드함
- GUI 없이 명령줄만으로 완전 자동화된 빌드 과정 수행
결론
-
msvcup은 Visual Studio Installer의 복잡성을 제거하고, 버전 관리 가능한 경량 네이티브 빌드 환경을 제공
- 이 방식은 Windows 네이티브 개발을 재현 가능하고 자동화된 형태로 전환시키며, 개발자들이 IDE 의존성에서 벗어나도록 함