7.2 전역 컴파일러 플래그(Global Compiler Flags)

7.2 전역 컴파일러 플래그(Global Compiler Flags)

Haxe 3.0부터 haxe --help-defines를 실행해 지원되는 컴파일러 플래그 목록을 얻을 수 있어요.

전체 플래그 목록(플래그 / 인자 / 설명 / 플랫폼):

일반(all):

  • absolute-path — trace 출력에 절대 파일 경로를 출력한다.
  • advanced-telemetry(flash) — SWF를 Monocle 도구로 측정할 수 있게 한다.
  • analyzer-optimize — 고급 최적화를 수행한다.
  • analyzer-times(<level: 0 | 1 | 2>)(all) — 분석기에 대한 상세 타이머를 기록한다.
  • annotate-source(cpp) — 생성된 소스 코드에 추가 주석을 붙인다.
  • check-xml-proxy — XML 프록시의 사용된 필드를 검사한다.
  • core-api — 코어 API 문맥에서 정의된다.
  • core-api-serialize(cs) — 일부 생성된 코어 API 클래스를 C#에서 Serializable 속성으로 표시한다.
  • cppia — cpp instruction assembly를 생성한다.
  • cs-ver(<version>, cs) — 대상 C# 버전.
  • nocppiaast — 레거시 cppia 생성을 사용한다.
  • dce(<mode: std | full | no>, all) — dead code elimination 모드를 설정한다(기본 std). cr-dce 참조.
  • dce-debug — DCE 로그를 보여준다. cr-dce 참조.
  • debug-debug로 컴파일할 때 활성화.
  • disable-unicode-strings(cpp) — String 타입의 유니코드 지원을 비활성화.
  • display — 완성 중 활성화. cr-completion 참조.
  • display-stdin--display에 지정된 파일의 내용을 표준 입력에서 읽는다.
  • dll-export(cpp) — GenCPP 실험 링킹.
  • dll-import(cs) — Haxe 생성 .NET DLL import를 처리한다.
  • doc-gen — 문서를 올바르게 생성하기 위해 제거/변경을 수행하지 않는다.
  • dump(<mode: pretty | record | position | legacy>, all) — 지정된 모드 또는 기본(비-prettified) 모드로 dump 하위 디렉터리에 타입 AST를 덤프한다.
  • dump-path(<path>, all) — dump를 생성할 경로(기본 "dump").
  • dump-dependencies — dump 하위 디렉터리에 클래스 의존성을 덤프한다.
  • dump-ignore-var-ids — 비-pretty dump에서 변수 ID를 제거한다(diff에 도움).
  • dynamic-interface-closures(cpp) — 공간을 절약하기 위해 인터페이스 클로저에 느린 경로를 사용한다.
  • erase-generics(cs) — C#에서 제네릭 클래스를 지운다.
  • eval-call-stack-depth(<depth>, eval) — eval의 최대 콜 스택 깊이(기본 1000).
  • eval-debugger(eval) — 매크로/interp 모드에서 디버거를 지원한다. host:port 값을 허용해 소켓을 연다. eval-stack을 수반한다.
  • eval-print-depth(<depth>, eval) — eval의 최대 출력 깊이(기본 5).
  • eval-pretty-print(eval) — eval 출력에 들여쓰기 출력을 활성화한다.
  • eval-stack(eval) — 매크로/interp 모드에서 스택 정보를 기록한다.
  • eval-times(eval) — 매크로/interp 모드에서 메서드별 실행 시간을 기록한다. eval-stack을 수반한다.
  • filter-times--times 시 필터별 실행 시간을 기록한다.
  • fast-cast(cs, java) — C#과 Java에서 실험적 캐스트 정리를 활성화한다.
  • fdb(flash) — FDB 대화형 디버깅을 위한 전체 flash 디버그 정보를 활성화한다.
  • file-extension(cpp) — cpp 소스 코드의 출력 파일 이름 확장자.
  • flash-strict(flash) — flash 대상에 대해 더 엄격한 타이핑.
  • flash-use-stage(flash) — SWF 라이브러리의 초기 스테이지를 유지한다.
  • force-lib-check(cs, java) — 컴파일러가 --net-lib--java-lib으로 추가된 클래스를 검사하도록 강제한다(내부).
  • force-native-property(cpp) — 3.1 호환성을 위해 모든 속성을 :nativeProperty 메타데이터로 태그한다.
  • gencommon-debug(cs, java) — GenCommon 내부.
  • haxe3compat — Haxe 3.x에서 Haxe 4.0으로의 전환에 대한 경고를 준다.
  • haxe-boot(flash) — flash 부트 클래스에 생성된 이름 대신 'haxe' 이름을 준다.
  • haxe-ver — 현재 Haxe 버전 값을 소수로. 예: 3.4.7에 대해 3.407.
  • haxe — 현재 Haxe 버전 값을 SemVer 형식으로.
  • haxe-next — 다음 Haxe 버전에 공개될 실험 기능을 활성화한다.
  • HAXE_OUTPUT_FILE(<name>, cpp) — 라이브러리 접두사와 디버그 접미사 없이 실행 파일/라이브러리의 전체 출력 이름을 강제한다.
  • HAXE_OUTPUT_PART(<name>, cpp) — 실행 파일/라이브러리의 출력 이름(기본: 메인 클래스 이름).
  • hl-ver(<version>, hl) — 대상 HashLink 버전(기본 1.10.0).
  • hxcpp-api-level(cpp) — hxcpp 버전 간 호환성을 허용하기 위해 제공된다.
  • HXCPP-GC-GENERATIONAL(cpp) — 실험적 가비지 컬렉터.
  • HXCPP-DEBUGGER(cpp) — hxcpp-debugger를 위한 추가 정보를 포함한다.
  • hxcpp-smart-strings(cpp) — hxcpp에서 와이드 문자열을 사용한다(-D disable-unicode-strings가 지정되지 않으면 기본적으로 켜짐).
  • include-prefix(cpp) — 생성된 include 파일에 경로를 앞에 붙인다.
  • interp — 코드가 --interp로 실행되도록 컴파일된다.
  • jar-legacy-loader(java) — JVM 대상에서 .jar 파일을 로드하는 레거시 로더를 사용한다.
  • java-ver(<version: 5-7>, java) — 대상 Java 버전을 설정한다.
  • js-classic(js) — JS 출력에서 함수 래퍼와 strict 모드를 사용하지 않는다.
  • js-es(<version: 3 | 5 | 6>, js) — 주어진 ES 표준 버전에 맞는 JS를 생성한다(기본 5). target-javascript-es6 참조.
  • js-enums-as-arrays(js) — enum 표현을 객체 대신 배열로 생성한다.
  • js_global(js) — 전역 객체 이름을 사용자 지정한다.
  • js-unflatten(js) — 패키지와 타입에 중첩 객체를 생성한다.
  • js-source-map(js) — 비-디버그 모드에서도 JavaScript 소스 맵을 생성한다. -D source-map 선호로 더 이상 사용되지 않음.
  • source-map(php, js) — 컴파일된 파일에 대한 소스 맵을 생성한다.
  • jvm(java) — jvm을 직접 생성한다.
  • jvm.compression-level(java) — 생성된 파일의 압축 수준을 0(무압축)~9(최고)로 설정한다. 기본 6.
  • jvm.dynamic-level(java) — 생성되는 동적 지원 코드의 양을 제어한다. 0 = 없음, 1 = 필드 읽기/쓰기 최적화(기본), 2 = 컴파일 타임 메서드 클로저.
  • keep-old-output(cs, java) — 출력 디렉터리에 이전 소스 파일을 유지한다.
  • loop-unroll-max-cost(<cost>, all) — 루프 언롤링이 취소되기 전의 최대 비용(식 수 * 반복)(기본 250).
  • lua-jit(lua) — lua용 jit 컴파일러를 활성화한다(5.2 버전만).
  • lua-vanilla(lua) — 컴파일된 extern lib 지원(예: utf8)이 없는 코드를 생성한다.
  • lua-ver(<version>, lua) — 대상 lua 버전.
  • macro — 매크로 문맥에서 코드가 컴파일될 때 정의된다. macro 참조.
  • macro-times--times와 함께 사용할 때 매크로별 타이밍을 표시한다.
  • net-ver(<version: 20-50>, cs) — 대상 .NET 버전을 설정한다.
  • netcore-ver(<version: x.x.x>, cs) — 대상 .NET core 버전을 설정한다.
  • net-target(<name>, cs) — .NET 대상을 설정한다. netcore, xbox, micro, compact가 유효한 값. 기본 net.
  • neko-source(neko) — 바이트코드 대신 neko 소스를 출력한다.
  • neko-no-haxelib-paths(neko) — 하드코딩된 Haxelib ndll 경로를 비활성화한다.
  • neko-v1(neko) — Neko 1.x 호환성을 유지한다.
  • network-sandbox(flash) — 로컬 파일 접근 대신 로컬 네트워크 샌드박스를 사용한다.
  • no-compilation(cs, java, cpp, hl) — 최종 컴파일을 비활성화한다.
  • no-debug — cpp 출력에서 모든 디버그 매크로를 제거한다.
  • no-deprecation-warnings@:deprecated로 표시된 필드가 사용될 때 경고하지 않는다.
  • no-flash-override(flash) — 일부 기본 클래스의 override를 HX 접미사 메서드로 변경한다.
  • no-opt — 최적화를 비활성화한다.
  • no-inline — 인라이닝을 비활성화한다. class-field-inline 참조.
  • keep-inline-positions — 인라인된 표현식의 위치를 인라인 장소의 위치로 대체하지 않는다.
  • no-root(cs) — 최상위 타입을 haxe.root 네임스페이스에 생성한다.
  • no-macro-cache — 매크로 문맥 캐싱을 비활성화한다.
  • no-swf-compress(flash) — SWF 출력 압축을 비활성화한다.
  • no-traces — 모든 trace 호출을 비활성화한다.
  • objc(cpp) — hxcpp 출력을 Objective-C++ 클래스로 설정한다. interop에 정의되어야 한다.
  • old-error-format — 새 one-based 형식 대신 Haxe 3.x zero-based 컬럼 오류 메시지를 사용한다.
  • php-prefix(<dot-separated namespace>, php) — 생성된 php 클래스의 루트 네임스페이스. 예: -D php-prefix=some.sub로 컴파일하면 모든 클래스가 \some\sub 네임스페이스에 생성된다.
  • php-lib(<folder name>, php) — php lib 폴더의 이름을 선택한다.
  • php-front(<filename>, php) — php 프론트 파일의 이름을 선택한다(기본 index.php).
  • python-version(<version>, python) — 대상 python 버전(기본 3.3).
  • real-position(cs, java, php) — C# 타겟팅 시 Haxe 소스 매핑을 비활성화하고 Java·PHP 출력의 위치 주석을 제거한다.
  • replace-files(cs, java) — GenCommon 내부.
  • retain-untyped-meta — 타이핑 시 임의 표현식 메타데이터가 폐기되는 것을 방지한다.
  • scriptable(cpp) — GenCPP 내부.
  • shallow-expose(js) — window 객체에 쓰지 않고 타입을 Haxe 생성 클로저의 주변 스코프에 노출한다.
  • source-header — 생성된 파일 맨 위에 값을 주석으로 출력하고, 비활성화하려면 '' 값을 사용한다.
  • source-map-content(js) — Haxe 소스를 JS 소스 맵의 일부로 포함한다.
  • static — 현재 대상이 static이면 정의된다.
  • std-encoding-utf8(java, cs, python) — stdin, stdout, stderr에 utf8 인코딩을 강제한다.
  • swc(flash) — SWF 대신 SWC를 출력한다.
  • swf-compress-level(<level: 1-9>, flash) — SWF 출력의 압축량을 설정한다.
  • swf-debug-password(<password>, flash) — 디버깅을 위한 암호를 설정한다.
  • swf-direct-blit(flash) — 그래픽 블릿에 하드웨어 가속을 사용한다.
  • swf-gpu(flash) — 그래픽 그리기에 GPU 합성 기능을 사용한다.
  • swf-header(flash) — SWF 헤더를 정의한다(width:height:fps:color).
  • swf-metadata(<file>, flash) — 주어진 파일의 내용을 SWF의 메타데이터로 포함한다.
  • swf-preloader-frame(flash) — SWF에 빈 첫 프레임을 삽입한다.
  • swf-protected(flash) — SWF에서 Haxe privatepublic 대신 protected로 컴파일한다.
  • swf-script-timeout(<time in seconds>, flash) — 스크립트 중단 대화상자가 표시되기 전의 최대 ActionScript 처리 시간.
  • swf-use-doabc(flash) — DoAbcDefine 대신 DoAbc SWF 태그를 사용한다.
  • sys — 모든 시스템 플랫폼에 대해 정의된다.
  • unsafe(cs) — C# 타겟팅 시 안전하지 않은 코드를 허용한다.
  • use-nekoc(neko) — 내부 대신 nekoc 컴파일러를 사용한다.
  • utf16 — UCS-2 API와 함께 UTF-16 문자열 인코딩을 사용하는 모든 플랫폼에 대해 정의된다.
  • vcproj(cpp) — GenCPP 내부.
  • warn-var-shadowing — 변수 섀도잉 선언에 대해 경고한다.
  • no-tre — 꼬리 재귀 제거(tail recursion elimination)를 비활성화한다.
  • message.reporting(<mode: classic | pretty | indent>) — 컴파일러 출력의 메시지 보고 모드를 선택한다(기본 classic).
  • message.no-color — 메시지 보고에서 ANSI 색상 코드를 비활성화한다.
  • message.log-file — 일반 출력 외에도 메시지 보고를 쓸 텍스트 파일 경로.
  • message.log-format(<format: classic | pretty | indent>) — 메시지 로그 파일의 메시지 보고 모드를 선택한다(기본 indent).

출처: Global Compiler Flags

본문

전역 플래그

haxe --help-defines로 지원되는 모든 컴파일러 플래그를 볼 수 있어요. 이 표는 각 플래그, 인자, 설명, 적용 플랫폼을 보여줍니다.

갈래

DCE, 디버깅, 리소스, 대상별 코드 생성(js/cs/java/cpp/php/python/lua/hl/flash/neko/eval) 설정, 메시지 보고 등 매우 다양한 플래그가 있습니다. 각 항목은 -D <flag>로 설정합니다.

더 알아보기