본문 바로가기
REZ/REZ?

Building packages

by 르면가게 2024. 12. 24.

Rez 패키지 빌드 가이드 요약


빌드 환경

  • Rez는 rez-build 도구를 사용하여 패키지를 빌드하고 설치합니다.
  • 빌드 절차:
    1. 패키지의 variants를 반복적으로 확인.
    2. 각 variant에 대해 빌드 환경을 구성.
    3. 빌드 시스템(예: CMake)을 빌드 환경 내에서 실행.
  • 빌드 환경의 구성 요소:
    • 패키지의 requires 목록.
    • build_requires: 빌드에 필요한 종속성.
    • private_build_requires: 해당 패키지 전용 빌드 종속성.
    • 패키지의 variants에 따른 추가 종속성.
  • 빌드 환경 내에서 필요한 환경 변수는 Rez가 자동으로 설정합니다.

빌드 시간 종속성

  • 특정 패키지가 빌드 과정에서만 필요한 경우 build_requires 또는 private_build_requires에 이를 정의합니다.
    • 예시:
      • build_requires: 다른 패키지도 의존성을 상속받음 (전이적).
      • private_build_requires: 현재 패키지 빌드에서만 사용.
    • 사용 사례:
      • 문서 생성 도구(예: Doxygen, Sphinx).
      • 빌드 유틸리티(예: CMake 매크로).

패키지 간의 통신

  • Rez는 패키지를 직접 빌드하지는 않으며, 환경을 구성한 뒤 빌드 시스템(예: CMake)에 이를 위임합니다.
  • 빌드 중인 패키지에서 사용하는 특별한 환경 변수 building을 통해 다른 패키지가 빌드 관련 정보를 전달할 수 있습니다.
    • 예시: CMake의 CMAKE_MODULE_PATH를 사용하여 특정 패키지의 경로를 전달.

빌드 시스템

  • Rez는 다양한 빌드 시스템을 지원하며, 새 빌드 시스템을 플러그인으로 추가할 수 있습니다.
  • 기본적으로 Rez는 패키지의 루트 디렉터리에서 빌드 파일(예: CMakeLists.txt)을 감지하여 적절한 빌드 시스템을 자동으로 선택합니다.
  • 명령 전달 방법:
    • rez-build 명령에 직접 옵션 전달:
    • rez-build -- -DMYVAR=YES
    • 패키지에 build_command 속성을 정의:
    • build_command = "bash {root}/build.sh {install}"

로컬 설치

  • 로컬 설치는 패키지를 사용자가 설정한 로컬 디렉터리에 설치하여 테스트할 수 있도록 합니다.
    • 절차:
      1. 코드 수정.
      2. rez-build --install 명령으로 로컬 패키지 설치.
      3. rez-env 패키지명으로 테스트 환경 구성.
    • 설치 경로:
      • 기본 경로는 ~/packages.
      • 각 패키지는 버전별로 디렉터리에 설치됨 (예: ~/packages/maya_utils/1.0.5).
  • 패키지 확인:
    • 출력에 (local) 레이블이 표시되면 로컬 설치된 패키지가 사용 중임을 나타냄.
rez-env sequence

추가 빌드 커스터마이징

  • 사용자 정의 명령:
    • parse_build_args.py를 사용하여 빌드 스크립트에 옵션 추가 가능.
    • 추가된 옵션은 환경 변수로 저장되며, 빌드 스크립트에서 이를 참조 가능.
  • Make 사용 예시:
# Makefile
hai: ${REZ_BUILD_SOURCE_PATH}/lib/main.cpp
    g++ -o hai ${REZ_BUILD_SOURCE_PATH}/lib/main.cpp
.PHONY: install
install: hai
    mkdir -p ${REZ_BUILD_INSTALL_PATH}/bin
    cp $< ${REZ_BUILD_INSTALL_PATH}/bin/hai

 

https://rez.readthedocs.io/en/stable/building_packages.html

 

'REZ > REZ?' 카테고리의 다른 글

Context  (0) 2024.12.24
Releasing packages  (0) 2024.12.24
Basic concepts  (0) 2024.12.24
Getting started  (0) 2024.12.24
installation  (0) 2024.12.24