wavec CLI 레퍼런스
이 문서는 현재 Wave 컴파일러(wavec) 구현 기준의 CLI 동작을 정밀하게 설명합니다.
핵심 원칙:
wavec는 컴파일러입니다.- 패키지 설치/해결(lockfile, registry, 다운로드)은
wavec의 책임이 아닙니다. - 외부 의존성은
wavec실행 시 명시적 CLI 인자로 전달합니다.
1. 기본 형식
wavec [global-options] <command> [command-options]
예:
wavec -O2 run main.wave
wavec build app.wave --link ssl -L ./native/lib
wavec run app.wave --dep-root .vex/dep
2. 명령 파싱 규칙 (중요)
wavec는 먼저 전체 인자에서 global option을 스캔한 뒤, 남은 인자로 <command>를 해석합니다.
즉 global option은 위치가 유연합니다.
wavec -O3 run main.wave
wavec run main.wave -O3
wavec run -O3 main.wave
위 3개는 모두 유효합니다.
--를 사용하면 그 뒤는 global option 스캔을 멈추고 command 영역으로 넘깁니다.
wavec -- run main.wave
3. Commands
3.1 run <file>
Wave 파일을 컴파일하고 실행합니다.
wavec run hello.wave
동작:
- 소스 파싱 + import 확장
- LLVM IR 생성
- 네이티브 바이너리 링크 (
target/<file_stem>) - 실행
특징:
- 실행된 프로그램의 종료 코드를
wavec가 전달합니다. run명령에서는 legacy 옵션으로--img만 허용됩니다.
wavec run --img boot.wave
3.2 img <file>
부트 이미지 빌드 + QEMU 실행 경로입니다.
wavec img boot.wave
3.3 build <file>
실행 파일(exe)을 생성합니다.
wavec build app.wave
출력 바이너리:
target/<file_stem>