12.6.3.5 Compiler

12.6.3.5 Compiler

Compilers는 target의 각 파일 그룹에서 변경된 각 파일에 대해 실행되어 객체 파일을 만들고, 이를 target에 링크합니다. 수정 날짜나 해시로 파일을 다시 컴파일해야 하는지, 또는 객체 파일을 재사용할 수 있는지 판단합니다.

  • flag - 컴파일러 커맨드 라인에 단일 인자를 추가합니다.
    • value - 커맨드 라인에 추가된 플래그.
    • tag - 일치하는 tag를 가진 파일로 플래그를 제한하는 선택적 필터. Tags 참조.
<flag value="value" tag="tag" />
  • cflag/cppflag/objcflag/mmflag - 특정 파일 유형을 컴파일할 때 플래그를 추가합니다.
    • cflag - .c(C) 파일에만 추가됨.
    • cppflag - .cpp(C++) 파일에만 추가됨.
    • objcflag - .objc(Objective-C) 파일에만 추가됨.
    • mmflag - .mm(Objective-C++) 파일에만 추가됨.
<cflag value="value" />
<cppflag value="value" />
<objcflag value="value" />
<mmflag value="value" />
  • pchflag - 미리 컴파일된 헤더 .h 파일을 컴파일할 때 플래그를 추가합니다.
    • pchflag - 헤더의 "정체성"을 지정하려면 apple의 경우 보통 ["-x", "c++-header"].
<pchflag value="value" />
  • pch - 미리 컴파일된 헤더 스타일을 설정합니다 - gcc 또는 msvc.
<pch value="gcc|msvc" />
  • objdir - 객체 파일을 저장하는 데 사용되는 디렉토리 이름을 설정합니다. 잘못된 아키텍처에 대해 링크하지 않도록 주어진 컴파일러 플래그 집합에 대해 고유해야 합니다.
    • value - 보통 프로그래밍 방식으로 만들어짐, 예: obj/msvc${MSVC_VER}-rt${OBJEXT}${OBJCACHE}${XPOBJ}.
<objdir value="obj/somewhere" />
  • output - 컴파일러의 출력을 지정하는 데 사용되는 플래그를 설정합니다.
    • value - 플래그 값. 실제 이름이 별도의 인자여야 하면 공백 문자를 포함해야 하고(예: -o<space>), 이름이 직접 추가되어야 하면 -o/-out:처럼 사용하세요.
<output value="-flag" />
  • exe - 컴파일러 속성에서 지정된 실행 명령을 재정의합니다.
    • name - 명령. 보통 path를 사용해 실행 파일이 포함된 디렉토리를 추가한 다음 이 속성에서 파일 이름 부분만 지정합니다.
<exe name="command" />
  • ext - 객체 파일 확장자를 설정합니다.
    • name - 확장자, "." 포함. Linux와 Mac에서 .o, Windows에서 .obj.
<ext name=".obj" />
  • getversion - 컴파일러 버전을 얻는 데 사용되는 명령을 설정합니다. 이는 컴파일러가 변경되었는지, 따라서 객체를 다시 컴파일해야 하는지 확인하는 데 사용됩니다.
    • value - 실행할 명령. 기본값은 gcc 기반 컴파일러에서 작동하는 (compiler) --version입니다. 빈 값으로 설정하면 캐싱을 비활성화합니다.
<getversion value="command" />
  • section - 요소 블록을 그룹화합니다 - 보통 모두 같은 if/unless 조건을 존중하는 것들.
<section ...>...</section>
  • include - 다른 파일의 컴파일러 옵션을 포함합니다. 대부분의 컴파일러는 hxcpp가 사용하는 defines를 추가하기 위해 <include name="toolchain/common-defines.xml" />를 포함해야 합니다.
<include name="filename" />

출처: Compiler

더 알아보기