12.6.3 Build.xml
12.6.3 Build.xml
hxcpp build.xml 빌드 시스템은 다양한 운영 체제와 장치에서 컴파일, 크로스 컴파일, 링크를 쉽게 하도록 설계되었습니다. 원래는 Haxe로 생성된 C++ 코드를 빌드하기 위해 설계되었지만, 많은 오픈 소스 라이브러리에서 구성 도구의 필요성을 대체하도록 발전했습니다.
실행(Running)
이 도구의 소스 코드는 hxcpp 저장소의 tools/hxcpp에 있습니다. 컴파일되면 Haxelib 도구로 실행할 수 있습니다. 이는 보통 C++ 코드가 생성된 후 Haxe 컴파일러가 자동으로 수행합니다. 수동으로는 다음과 같이 할 수 있습니다:
haxelib run hxcpp build.xml key=value ... [target]
구성(Configuration)
hxcpp 빌드 환경을 참조하세요.
형식(Format)
컴파일러 사양과 타깃 목록 모두 같은 형식을 사용합니다.
- XML을 사용합니다.
- 주로 선언적인 파일과 플래그 목록입니다.
- 순서가 중요합니다:
- 값 재정의는 유효한 기법입니다.
- "커맨드"는 파싱될 때 실행됩니다(예:
echo). if와unless노드 속성으로 조건이 가능합니다.${VAR}구문으로 대체가 가능합니다.default타깃이 정의되어야 합니다.
조건/대체(Conditions/Substitution)
대부분의 XML 노드는 if와 unless 속성을 지원합니다. 이들은 define의 존재/부존재에 따라 전체 노드를 활성화하거나 비활성화합니다. "and"를 위해 공백, "or"를 위해 두 개의 파이프와 결합할 수 있습니다.
대체는 달러-중괄호 구문으로 지원되며 기본 텍스트 대체를 수행합니다. 추가로 특수 구문이 있습니다:
${VAR}- 일반 대체.${removeQuotes:VAR}- 있으면VAR에서 둘러싼 따옴표를 제거.${dospath:VAR}-VAR을 (Windows에서 사용되는) 역슬래시 경로로 변환.${dir:PathWithFilename}- 파일 이름의 디렉토리 부분만.${this_dir}-build.xml파일이 포함된 디렉토리의 위치.
예제(Example)
다음 코드는 example.xml로 저장됩니다:
<xml>
<echo value="Hello ${WHO}" if="WHO" unless="SILENT" />
<echo value="You are in ${haxelib:hxcpp}" unless="WHO||SILENT"/>
<echo value="Silent and who both specified" if="WHO SILENT"/>
<target id="default" />
</xml>
몇 가지 예시 사용:
unset SILENT
haxelib run hxcpp example.xml
haxelib run hxcpp example.xml WHO=world default
export SILENT=1
haxelib run hxcpp example.xml
haxelib run hxcpp example.xml WHO=world
또는 Windows에서:
unsetenv SILENT
haxelib run hxcpp example.xml
haxelib run hxcpp example.xml WHO=world default
setenv SILENT 1
haxelib run hxcpp example.xml
haxelib run hxcpp example.xml WHO=world
세부 사항(Details)
build.xml 파일은 구성, 타깃, 컴파일러, 링커, 파일을 포함합니다. 세부 사항은 하위 섹션에서 찾을 수 있습니다:
- 12.6.3.1: 최상위 구조(Structure of the top-level)
- 12.6.3.2: Files
- 12.6.3.3: Tags
- 12.6.3.4: Targets
- 12.6.3.5: Compiler
- 12.6.3.6: Linker
- 12.6.3.7: Stripper
- 12.6.3.8: The Haxe Target
- 12.6.3.9: Xml Injection
출처: Build.xml