Windows 개발 환경의 기본 구조
Windows에서 개발 환경을 구축할 때 가장 중요한 것은 SDK 설치, 환경변수(PATH) 설정, 도구 체인 연동입니다. Linux나 macOS와 달리 Windows는 패키지 관리자가 기본 내장되지 않았던 역사가 있어, 환경변수를 수동으로 관리해야 하는 경우가 많습니다.
이 글에서는 Windows에서 개발에 필요한 SDK, 도구, PATH를 체계적으로 설정하는 방법을 정리합니다.
환경변수와 PATH 이해하기
환경변수는 운영체제가 프로그램에 전달하는 키-값 쌍입니다. PATH는 그중 가장 중요한 변수로, 터미널에서 실행 파일을 찾는 디렉토리 목록입니다.
# 현재 PATH 확인
$env:PATH -split ';' | ForEach-Object { $_ }
# 출력 예시:
# C:\Windows\system32
# C:\Windows
# C:\Program Files\Git\cmd
# C:\Program Files\nodejs
# C:\Users\사용자\AppData\Local\Programs\Python\Python312\Scripts
# 특정 명령어의 실행 경로 확인
Get-Command git
# 출력 예시:
# CommandType Name Version Source
# Application git 2.44.0 C:\Program Files\Git\cmd\git.exe
# 환경변수 확인
$env:JAVA_HOME
$env:GOPATH
$env:PYTHON_HOME
환경변수 설정 방법
환경변수는 사용자 수준과 시스템 수준으로 나뉩니다. 개발 도구는 사용자 수준에 설정하는 것이 일반적입니다.
# 사용자 수준 환경변수 설정 (영구)
[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Java\jdk-21", "User")
[Environment]::SetEnvironmentVariable("GOPATH", "D:\Go", "User")
# 사용자 PATH에 경로 추가 (영구)
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
$newPath = "$currentPath;C:\Program Files\Java\jdk-21\bin"
[Environment]::SetEnvironmentVariable("Path", $newPath, "User")
# 현재 세션에만 임시 적용
$env:JAVA_HOME = "C:\Program Files\Java\jdk-21"
$env:PATH += ";C:\Program Files\Java\jdk-21\bin"
# 변경사항 확인 (새 터미널 열어야 영구 설정 반영)
refreshenv # Chocolatey가 설치된 경우 사용 가능
GUI에서도 설정할 수 있습니다: Win+S → “환경 변수” 검색 → “시스템 환경 변수 편집” → “환경 변수” 버튼
Git 설치 및 설정
Git은 거의 모든 개발 워크플로우의 기반입니다. Windows에서는 Git for Windows를 설치합니다.
# winget으로 설치
winget install Git.Git --silent
# 기본 설정
git config --global user.name "이름"
git config --global user.email "email@example.com"
# 줄바꿈 설정 (Windows에서 중요)
git config --global core.autocrlf true
# true: 체크아웃 시 LF→CRLF, 커밋 시 CRLF→LF
# 기본 편집기 설정
git config --global core.editor "code --wait"
# SSH 키 생성
ssh-keygen -t ed25519 -C "email@example.com"
# 생성된 공개키: C:\Users\사용자\.ssh\id_ed25519.pub
# 설정 확인
git config --global --list
# 출력 예시:
# user.name=이름
# user.email=email@example.com
# core.autocrlf=true
# core.editor=code --wait
Node.js 설정 (nvm-windows)
여러 Node.js 버전을 관리하려면 nvm-windows를 사용합니다.
# nvm-windows 설치
winget install CoreyButler.NVMforWindows
# 설치 가능한 Node.js 버전 확인
nvm list available
# 출력 예시:
# | CURRENT | LTS |
# | 23.5.0 | 22.12.0 |
# | 23.4.0 | 20.18.1 |
# Node.js LTS 설치 및 사용
nvm install 22.12.0
nvm use 22.12.0
# 설치된 버전 목록
nvm list
# 출력 예시:
# * 22.12.0 (Currently using 64-bit executable)
# 20.18.1
# 확인
node --version # v22.12.0
npm --version # 10.9.2
# 글로벌 패키지 설치
npm install -g typescript tsx pnpm yarn
Python 설정
Python은 공식 설치 프로그램 또는 winget으로 설치합니다. “Add to PATH” 옵션이 중요합니다.
# winget으로 설치
winget install Python.Python.3.12
# 설치 확인
python --version # Python 3.12.x
pip --version # pip 24.x
# pip 업그레이드
python -m pip install --upgrade pip
# 가상 환경 생성
python -m venv D:\projects\myproject\.venv
# 가상 환경 활성화
D:\projects\myproject\.venv\Scripts\Activate.ps1
# 프롬프트가 (.venv)로 변경됨
# 유용한 글로벌 도구 설치
pip install pipx
pipx install poetry
pipx install black
pipx install ruff
Java 설정
Java는 여러 배포판(Oracle, Adoptium, Amazon Corretto 등)이 있습니다. Adoptium(Eclipse Temurin)을 권장합니다.
# Adoptium JDK 21 설치
winget install EclipseAdoptium.Temurin.21.JDK
# JAVA_HOME 설정
[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Eclipse Adoptium\jdk-21", "User")
# PATH에 추가
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$currentPath;%JAVA_HOME%\bin", "User")
# 확인 (새 터미널에서)
java --version
# 출력 예시:
# openjdk 21.0.5 2024-10-15 LTS
# OpenJDK Runtime Environment Temurin-21.0.5+11 (build 21.0.5+11-LTS)
javac --version
# javac 21.0.5
빌드 도구 설치
C/C++ 컴파일러나 Make 같은 빌드 도구가 필요한 경우가 있습니다.
# Visual Studio Build Tools (C/C++ 컴파일러)
winget install Microsoft.VisualStudio.2022.BuildTools
# 설치 후 "Desktop development with C++" 워크로드 선택 필요
# 또는 명령줄로:
# vs_buildtools.exe --add Microsoft.VisualStudio.Workload.VCTools
# GNU Make (Chocolatey로)
choco install make -y
# CMake
winget install Kitware.CMake
# Rust
winget install Rustlang.Rust.MSVC
# 확인:
rustc --version
cargo --version
개발 환경 자동 설정 스크립트
새 PC에서 개발 환경을 빠르게 구축하기 위한 자동화 스크립트입니다.
# setup-dev-env.ps1
# 관리자 권한으로 실행 필요
Write-Host "=== Windows 개발 환경 자동 설정 ===" -ForegroundColor Cyan
# 1. 기본 도구 설치
$tools = @(
"Git.Git",
"Microsoft.VisualStudioCode",
"Microsoft.WindowsTerminal",
"CoreyButler.NVMforWindows",
"Python.Python.3.12",
"EclipseAdoptium.Temurin.21.JDK",
"Docker.DockerDesktop"
)
foreach ($tool in $tools) {
Write-Host "설치: $tool" -ForegroundColor Yellow
winget install $tool --silent --accept-package-agreements
}
# 2. 환경변수 설정
Write-Host "환경변수 설정 중..." -ForegroundColor Yellow
[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Eclipse Adoptium\jdk-21", "User")
# 3. Git 기본 설정
Write-Host "Git 설정 중..." -ForegroundColor Yellow
git config --global core.autocrlf true
git config --global core.editor "code --wait"
git config --global init.defaultBranch main
# 4. VS Code 확장 설치
$extensions = @(
"ms-python.python",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ms-vscode-remote.remote-wsl"
)
foreach ($ext in $extensions) {
code --install-extension $ext
}
Write-Host "설정 완료! 터미널을 재시작하세요." -ForegroundColor Green
PATH 문제 해결
PATH 관련 문제는 Windows 개발 환경에서 가장 흔한 문제입니다.
# 명령어를 찾을 수 없을 때: PATH에 실행 파일 경로가 있는지 확인
where.exe python
# 출력이 없으면 PATH에 Python 경로가 없는 것
# PATH 중복 제거
$paths = [Environment]::GetEnvironmentVariable("Path", "User") -split ';' | Select-Object -Unique
[Environment]::SetEnvironmentVariable("Path", ($paths -join ';'), "User")
# PATH 길이 확인 (Windows는 최대 2048자 제한이 있을 수 있음)
$env:PATH.Length
# 1024 이상이면 불필요한 경로 정리 필요
정리
Windows 개발 환경 구축의 핵심 포인트를 정리합니다.
- 환경변수:
[Environment]::SetEnvironmentVariable()로 영구 설정,$env:로 임시 설정 - PATH 관리: SDK 설치 후
bin디렉토리를 PATH에 추가, 새 터미널에서 확인 - 버전 관리자: nvm-windows(Node.js), pyenv-win(Python) 등으로 다중 버전 관리
- 자동화: 설치 스크립트를 작성하여 Git으로 관리하면 새 PC 설정이 빠름
- CRLF: Git의
core.autocrlf=true설정으로 줄바꿈 문제 방지 - Build Tools: C/C++ 네이티브 모듈이 필요한 패키지는 Visual Studio Build Tools 설치 필요