BuildGraph 스크립트는 XML 로 작성합니다. 여기서는 BuildGraph 스크립트에서 찾을 수 있는 데이터 유형과 아울러 전체적인 구조체에 대해 알아봅니다.
엘리먼트
Element(엘리먼트)는 그 안에 포함된 데이터의 설명으로, BuildGraph 스크립트의 기본 구성 요소 중 하나입니다. 다음 표는 메타데이터로 제공되는 항목으로, 빌드 시스템에서 실행할 때 익스포트되는 것입니다. 로컬에서 태스크를 실행할 때 BuildGraph 에 직접 사용되지는 않지만, [META]
태그가 붙습니다.
그래프 구조체
BuildGraph 스크립트는 보통 다음 엘리먼트로 정의됩니다:
<Node>
노드<Aggregate>
어그리게이트<Agent>
에이전트<Trigger>
트리거
노드
<Node>
노드는 BuildGraph 의 가장 작은 실행 단위로, 입력과 출력 세트를 갖습니다. 각 <Node>
는 순서대로 실행되는 태스크 시퀀스로 이루어집니다.
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
Name |
Name |
필수 |
노드 이름입니다. |
Requires |
Target List |
옵션 |
다른 노드에서 만들어진 노드, 어그리게이트, 태그 붙은 파일 세트의 세미콜론 구분 목록으로, 이 노드의 실행에 필요합니다. |
Produces |
Tag List |
옵션 |
이 노드가 다른 노드에 사용할 수 있도록 만든 태그 붙은 파일 세트를 세미콜론으로 구분한 것입니다. |
After |
Target List |
옵션 |
이 노드가 다음에 실행시켜야 하는 노드 목록으로, 현재 대상의 일부인 경우에만 실행합니다 (아니면 무시합니다). 세미콜론으로 구분합니다. |
NotifyOnWarnings |
Boolean |
옵션 |
false 면 이 노드는 경고시 알림 신호를 냅니다. 빌드 시스템에만 사용됩니다. 기본값은 |
If |
Condition |
옵션 |
평가할 조건입니다. 조건 평가가 |
어그리게이트
<Aggregate>
는 다른 노드의 세트 (또는 생성된 태그 세트)에 대한 동의어로 사용될 수 있는 네임드 어그리게이트를 선언합니다.
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
Name |
Name |
필수 |
어그리게이트 이름입니다. |
Requires |
Target List |
필수 |
이 어그리게이트의 종속성 목록입니다. 노드, 태그 붙은 파일 세트, 에이전트 그룹이 될 수 있습니다. |
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
에이전트
<Agent>
는 (중간 디렉터리를 지우지 않고) 시퀀스로 실행될 노드의 에이전트 요건을 정의합니다. <Agent>
요건은 로컬에서 빌드할 때는 무시되지만, 반드시 지정해야 합니다.
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
Name |
Name |
필수 |
그룹 이름입니다. |
Type |
Identifier List |
옵션 |
에이전트를 실행시킬 유형입니다. 이 스트링의 뜻은 호스트 빌드 시스템이 추론하며, 고유 의미를 갖지는 않습니다. |
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
트리거
<Trigger>
는 사용자 직접 개입으로만 실행시켜야 하는 그래프 부분에 대한 컨테이너 역할을 합니다. 트리거 이후 노드를 실행하려면, 명령줄에 -Trigger=<Name>
을 전달합니다.
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
Name |
Name |
필수 |
트리거 이름입니다. |
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
프로퍼티 조작
BuildGraph 프로퍼티는 다음 엘리먼트로 변경할 수 있습니다:
<Property>
프로퍼티<Option>
옵션<EnvVar>
환경변수
프로퍼티
<Property>
는 프로퍼티의 값을 설정합니다. 외부 영역의 프로퍼티가 이미 같은 이름으로 선언된 경우, <Property>
로 덮어씁니다. 그렇지 않은 경우, 현재 영역에 새로운 프로퍼티를 선언합니다.
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
Name |
Name |
필수 |
설정할 프로퍼티 이름입니다. |
Value |
String |
필수 |
프로퍼티에 대한 새 값입니다. |
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
옵션
<Option>
은 명령줄에서 설정할 수 있는 사용자 옵션을 정의합니다. <Option>
은 전체 영역에서만 나타날 수 있습니다.
어트리뷰트 |
유형 |
필수? |
설명 |
|
---|---|---|---|---|
Name |
Name |
필수 |
옵션의 값으로 초기화시킬 옵션(과 프로퍼티) 이름입니다. |
|
Description |
String |
필수 |
BuildGraph 에 -ListOnly 인수를 붙여 실행하면 표시되는 옵션에 대한 설명입니다. |
|
Restrict |
Regex |
옵션 |
이 옵션의 유효 값에 일치하는 정규표현식입니다 (예: |
false`). |
DefaultValue |
String |
필수 |
사용자가 명시적으로 설정하지 않은 경우의 옵션 기본값입니다. |
|
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
환경변수
<EnvVar>
는 환경 변수의 내용( 또는 설정되지 않은 경우 빈 스트링)을 담는 프로퍼티를 선언합니다. <EnvVar>
는 전체 영역에서만 나타납니다.
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
Name |
Name |
필수 |
프로퍼티로 도입할 환경 변수 이름입니다. |
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
흐름 제어
BuildGraph 스크립트의 흐름을 제어할 수 있는 엘리먼트는 다음과 같습니다:
<Include>
<Do>
<Switch>
<ForEach>
Include
<Include>
는 다른 BuildGraph 스크립트의 내용을 이 파일 안에 나타난 것처럼 처리합니다. <Include>
는 전체 영역에서만 나타날 수 있습니다.
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
Script |
String |
필수 |
포함시키고자 하는 스크립트로의 (현재 스크립트 기준 상대) 경로입니다. |
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
Do
<Do>
는 엘리먼트 시퀀스를 그룹으로 묶어 조건이 true 로 평가되는 경우에만 처리합니다.
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
Switch
<Switch>
는 C 의 switch 문과 비슷한데, 브랜치의 시퀀스에 있는 조건을 평가하고, true 로 평가되는 조건이 있는 첫 번째 문을 처리합니다.
예제 <Switch>
문:
<Switch>
<Case If=X>
<Elements go here>
</Case>
<Case If=Y>
<Elements go here>
</Case>
<Default>
<Elements go here>
</Default>
</Switch>
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
ForEach
<ForEach>
는 엘리먼트의 본문을 목록 내 세미콜론으로 구분된 각 항목에 할당된 프로퍼티 값으로 확장시킵니다.
예제 <ForEach>
문:
<ForEach Name="Counter" Values="1;2;3;4;5">
<Log Message="Counter=$(Counter)"/>
</ForEach>
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
Name |
Name |
필수 |
목록 내 각 값에 할당할 프로퍼티입니다. |
Values |
String List |
필수 |
세미콜론으로 구분되는 값 목록입니다. |
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
진단
BuildGraph 스크립트에 대한 진단을 할 수 있는 엘리먼트는 다음과 같습니다:
<Warning>
경고<Error>
오류
경고
<Warning>
은 그래프 실행 전 경고 메시지를 출력합니다. <Warning>
은 노드, 에이전트, 트리거, 전체 영역에 포함시킬 수 있습니다. <Warning>
은 실행중인 대상으로 추려낸(trim down) 이후에도 그래프의 일부인 경우에만 출력을 제공할 것입니다.
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
Message |
String |
필수 |
로그에 출력할 텍스트입니다. |
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |
오류
<Error>
는 오류 메시지를 출력합니다. <Error>
는 노드, 에이전트, 트리거, 전체 영역에 포함시킬 수 있습니다. <Error>
는 실행중인 대상으로 추려낸(trim down) 이후에도 그래프의 일부인 경우에만 출력을 제공할 것입니다.
어트리뷰트 |
유형 |
필수? |
설명 |
---|---|---|---|
Message |
String |
필수 |
로그에 출력할 텍스트입니다. |
If |
Condition |
옵션 |
평가할 조건입니다. 조건이 |