12.6.3.3 Tags
12.6.3.3 Tags
Tags는 컴파일러 플래그를 특정 파일에 연결하는 식별자입니다. 보통 files 그룹에서 tags 속성(쉼표로 구분된 목록)으로 정의되고, 컴파일러 flag 노드의 tag 속성으로 사용됩니다. 그런 다음 일치하는 tags를 가진 모든 플래그로 파일이 컴파일됩니다.
tags를 특정 파일로 제한하면 조건이 바뀔 때 파일의 부분 집합만 다시 컴파일하면 되고, 관련 tags가 없는 파일은 객체 파일을 재사용할 수 있습니다. 이는 일부 플래그가 몇 개의 파일에만 적용되므로 컴파일 시간을 많이 절약할 수 있습니다.
파일은 자신의 tags 속성을 지정해 그룹 tags를 재정의할 수 있습니다. 그룹은 tag 노드로 tags를 추가할 수 있습니다.
Haxe 코드를 컴파일할 때 표준 의미를 가진 tags가 있습니다:
haxe- Haxe로 생성된 코드가 올바르게 컴파일되도록 모든 필수 컴파일러 플래그를 추가하며,hxcpp.h에 직접/간접적으로 의존하는 모든 파일에 추가해야 합니다.static- 적절할 때STATIC_LINKdefine을 추가하며, 이는 CFFI glue 코드를 생성하는 데 사용됩니다. 정적 라이브러리를 생성할 수 있는 CFFI 코드에 추가해야 합니다.gc- 이 플래그는 가비지 컬렉션 파일에만 영향을 줍니다.hxstring- 이 플래그는String.cpp에만 영향을 줍니다.- 최적화 tags - 각 파일이 정확히 1개의 최적화 tag를 가진다고 가정합니다. 명시적으로 지정되지 않으면 디버그/릴리스 빌드 여부에 따라 기본값이 사용됩니다. 이것들은:
optim-std- 빌드에 따라debug또는release의 별칭.debugreleaseoptim-noneoptim-size- 크기에 맞게 최적화.
이 중 하나를 설정하는 것은 haxe가 -debug여도 라이브러리를 릴리스 모드로 컴파일하는 데 유용합니다. 일부 매우 큰 파일은 릴리스 모드에서 컴파일이 느리므로, 덜 최적화된 모드를 사용하는 것이 더 빠를 수 있습니다.
tags 속성은 @:fileXml 메타를 사용해 Haxe로 생성된 파일에 추가할 수 있습니다. 예:
@:fileXml("tags='haxe,optim-none'")
class MyClass { ... }
여기서 클래스는 일반 Haxe 플래그로 컴파일되지만 최적화가 비활성화되어, 어떤 상황에서는 훨씬 빠른 컴파일 시간을 얻을 수 있습니다.
출처: Tags