7 컴파일러 사용법(Compiler Usage)
7 컴파일러 사용법(Compiler Usage)
기본 사용법(Basic Usage)
Haxe 컴파일러는 보통 두 질문에 답해야 하는 여러 인자와 함께 명령줄에서 호출됩니다:
- 무엇을 컴파일해야 하는가?
- 출력은 무엇이어야 하는가?
첫 번째 질문에 답하려면 보통 -p <path> 인자로 클래스 경로를, -m <dot_path> 인자로 컴파일할 메인 클래스를 제공하는 것이 충분해요. 그러면 Haxe 컴파일러는 메인 클래스 파일을 해석해 컴파일을 시작합니다.
두 번째 질문은 보통 원하는 대상을 지정하는 인자를 제공하는 것으로 귀결됩니다. 각 Haxe 대상은 전용 명령줄 스위치가 있는데, JavaScript용 --js <file_name>, PHP용 --php <directory> 등이 있어요. 대상의 성격에 따라 인자 값은 디렉터리 경로(--php, --cpp, --cs, --java의 경우)이거나 파일 이름입니다.
일반 인자(Common arguments)
입력(Input):
-p <path>(또는--class-path <path>) —.hx소스 파일이나 패키지(하위 디렉터리)가 들어있는 클래스 경로를 추가한다.-L <library_name>(또는--library <library_name>) — Haxelib 라이브러리를 추가한다. 기본적으로 로컬 Haxelib 저장소의 가장 최신 버전이 사용됩니다. 특정 버전을 요구하려면-L library_name:version을 쓰고, git에서 버전을 요구하려면-L library_name:git:https://github.com/user/project.git#commit을 쓰는데, 선택적#commit은 브랜치, 태그 또는 커밋 해시일 수 있어요.-m <dot_path>(또는--main <dot_path>) — 메인 클래스를 설정한다.-D <var[=value]>(또는--define <var[=value]>) — 조건부 컴파일 플래그를 정의한다.
출력(Output):
--js <file_name.js>— 지정된 파일에 JavaScript 소스 코드를 생성한다.--swf <file_name.swf>— Flash.swf로 지정된 파일을 생성한다.--neko <file_name.n>— Neko 바이너리를 지정된 파일로 생성한다.--php <directory>— PHP 소스 코드를 지정된 디렉터리에 생성한다. PHP7 소스 코드에는-D php7을 사용한다.--cpp <directory>— C++ 소스 코드를 지정된 디렉터리에 생성하고 네이티브 C++ 컴파일러로 컴파일한다.--cs <directory>— C# 소스 코드를 지정된 디렉터리에 생성하고 네이티브 C# 컴파일러로 컴파일한다.--java <directory>— Java 소스 코드를 지정된 디렉터리에 생성하고 Java 컴파일러로 컴파일한다.-D jvm을 추가하면 Java 컴파일 단계를 건너뛰고 JVM 바이트 코드를 직접 생성한다.--jvm <file_name.jar>— JVM 바이트코드를 jar 파일로 생성한다.--python <file_name.py>— Python 소스 코드를 지정된 파일에 생성한다.--lua <file_name.lua>— Lua 소스 코드를 지정된 파일에 생성한다.--hl <file_name.hl>— HashLink 바이트 코드를 지정된 파일에 생성한다.--cppia <file_name.cppia>— 지정된 스크립트를 cppia 파일로 생성한다.-x <file>— Neko 파일을 컴파일·실행하는 단축키.--no-output— 파일을 생성하지 않고 컴파일한다.--interp— 내부 매크로 시스템을 사용해 프로그램을 해석한다.
기타 전역 인자(Other global arguments)
--run <module> [args...]— 명령줄 인자로 Haxe 모듈을 컴파일·실행한다.--xml <file>— XML 타입 설명을 생성한다. Dox 같은 API 문서 생성 도구에 유용하다.--json <file>— JSON 타입 설명을 생성한다.-v(또는--verbose) — 상세 모드를 켭니다.--dce <std|full|no>— Dead Code Elimination 모드를 설정한다(기본std).--debug— 컴파일된 코드에 디버그 정보를 추가한다.-r <file>[@name](또는--resource <file>[@name]) — 명명된 리소스 파일을 추가한다.--prompt— 오류 시 프롬프트.--cmd <command>— 성공적인 컴파일 후 지정된 셸 명령을 실행한다.--no-traces— 프로그램의 trace 호출을 컴파일하지 않는다.--display— IDE와 편집기를 위한 완성 정보를 제공하는 코드 팁을 표시한다.--times— 컴파일 시간을 측정한다.--no-inline— 인라이닝을 비활성화한다.--no-opt— 코드 최적화를 비활성화한다.--remap <package:target>— 패키지를 다른 것으로 다시 매핑한다.--macro— 다른 것보다 먼저 주어진 초기화 매크로(initialization macro)를 타이핑 전에 호출한다.--wait <host:port>— 명령을 실행하기 위해 주어진 포트에서 기다린다(Completion server 참조).--connect <host:port>— 주어진 포트에 연결해 명령을 실행한다(Completion server 참조).-C <dir>(또는--cwd <dir>) — 현재 작업 디렉터리를 설정한다.
대상별 인자(Target specific arguments)
-D php-front=<filename>— php 프론트 파일의 이름을 선택한다.-D php-lib=<filename>— php lib 폴더의 이름을 선택한다.-D php-prefix=<name>— 모든 클래스에 주어진 이름을 접두한다.--swf-version <version>— SWF 버전을 변경한다.--swf-header <header>— SWF 헤더를 정의한다(width:height:fps:color).--swf-lib <file>— 컴파일된 SWF에 SWF 라이브러리를 추가한다.--swf-lib-extern <file>— 타입 검사를 위해 SWF 라이브러리를 사용한다.--flash-strict— 더 타입 엄격한 flash API.--java-lib <file>— 외부 JAR 또는 클래스 디렉터리 라이브러리를 추가한다.--net-lib <file>[@std]— 외부 .NET DLL 파일을 추가한다.--net-std <file>— 루트 std .NET DLL 탐색 경로를 추가한다.--c-arg <arg>— 네이티브 Java/C# 컴파일러에 옵션arg를 전달한다.
추가 정보: 컴파일 후 명령 실행 —
--cmd를 사용해 성공적인 컴파일 후 지정된 명령을 실행할 수 있어요. (테스트) 도구를 실행하거나 빌드를 직접 실행하는 데 사용할 수 있습니다. 예:--cmd java -jar bin/Main.jar(Java용),--cmd node main.js(Node.js용),--cmd neko Main.n(Neko용) 등.
전역 컴파일러 구성 매크로(Global compiler configuration macros)
단일 모듈을 포함하려면 그 경로를 명령줄이나 hxml에 직접 나열할 수 있어요: haxe ... ModuleName pack.ModuleName. 더 구체적인 포함/제외에는 다음 초기화 매크로를 사용합니다:
--macro include(pack:String, recursive=true, ?ignore:Array<String>, ?classPaths:Array<String>, strict=false)— 패키지 pack의 모든 모듈을 컴파일에 포함한다.recursive가 true면 컴파일러가 모든 하위 패키지를 재귀적으로 추가한다.--macro exclude(pack:String, recursive=true)— 특정 클래스, enum, 또는 패키지의 모든 클래스/enum이 생성되지 않도록 제외한다. 제외된 타입은extern이 된다.recursive가 true면 컴파일러가 모든 하위 패키지를 재귀적으로 제외한다.--macro excludeFile(fileName:String)— 주어진 외부 파일(한 줄당 하나)에 나열된 클래스와 enum이 생성되지 않도록 제외한다.--macro keep(?path:String, ?paths:Array<String>, recursive=true)— 패키지, 모듈 또는 하위 타입 점 경로가 DCE에 의해 유지되도록 표시한다. 해석된 모듈의 하위 타입에도 확장된다.recursive가 true면 패키지 경로의 모든 하위 패키지를 재귀적으로 유지한다.--macro includeFile(file:String, position)— 컴파일 타임에 JavaScript 파일을 포함한다.position은 "top", "inline" 또는 "closure"일 수 있다.
이 메서드들의 전체 문서는 haxe.macro.Compiler API 문서에서 찾을 수 있어요.
도움말(Help)
haxe --version— 현재 Haxe 컴파일러 버전을 출력한다.haxe --help— 이 옵션 목록을 표시한다.haxe --help-defines— 모든 컴파일러 특정 defines에 대한 도움말을 출력한다.haxe --help-metas— 모든 컴파일러 메타데이터에 대한 도움말을 출력한다.
관련 콘텐츠(Related content) — Haxe Code Cookbook의 Compilation tutorials.
출처: Compiler Usage
본문
기본 사용
컴파일러는 -p <path>로 클래스 경로, -m <dot_path>로 메인 클래스를 받아 컴파일합니다. 출력은 대상별 스위치(--js, --php, --cpp 등)로 지정합니다. 디렉터리 대상(--php/--cpp/--cs/--java)과 파일 대상이 있습니다.
인자 종류
입력(-p, -L, -m, -D), 출력(--js, --swf, --neko, --php, --cpp, --cs, --java, --jvm, --python, --lua, --hl, --cppia, -x, --no-output, --interp), 기타 전역 인자, 대상별 인자로 나뉩니다.
전역 구성 매크로
include/exclude/keep/includeFile 매크로로 모듈 포함·제외·유지를 제어합니다. haxe.macro.Compiler API에 전체 문서가 있어요.
도움말
--version, --help, --help-defines, --help-metas로 정보를 확인합니다.