윈도우 네이티브 개발 환경을 고쳤다

1 month ago 11

  • 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 의존성에서 벗어나도록 함

Read Entire Article