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).
    • ifunless 노드 속성으로 조건이 가능합니다.
    • ${VAR} 구문으로 대체가 가능합니다.
    • default 타깃이 정의되어야 합니다.
조건/대체(Conditions/Substitution)

대부분의 XML 노드는 ifunless 속성을 지원합니다. 이들은 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 파일은 구성, 타깃, 컴파일러, 링커, 파일을 포함합니다. 세부 사항은 하위 섹션에서 찾을 수 있습니다:

출처: Build.xml

더 알아보기