Share via


이진 캐싱

vcpkg 공용 레지스트리대부분의 포트는 원본에서 빌드됩니다. 원본에서 빌드하면 vcpkg는 프로젝트에서 종속성을 빌드하는 데 사용하는 동일한 환경, 빌드 도구, 컴파일러 플래그, 링커 플래그 및 기타 구성을 사용하여 최대 호환성을 보장할 수 있습니다.

이진 캐싱을 사용하는 경우 각 패키지가 원본에서 빌드된 후 vcpkg는 이진 패키지를 만듭니다. 이진 패키지는 이진 파일, 빌드 시스템 통합 파일, 사용 설명서, 라이선스 및 기타 파일과 같은 패키지의 빌드 출력을 보유합니다. 나중에 실행하려면 캐시된 패키지를 설치해야 하는 경우 vcpkg는 캐시된 이진 패키지를 복원할지 아니면 원본에서 빌드를 트리거할지 결정합니다.

이러한 방식으로 이진 캐싱은 원본에서 빌드할 때 다음과 같은 단점이 미치는 영향을 줄입니다.

  • 중복된 작업: 원본에서 패키지를 빌드해야 하는 횟수를 줄입니다.
  • 긴 빌드 시간: 이진 패키지 복원은 일반적으로 완료하는 데 몇 초가 걸리는 매우 빠른 작업입니다.

이진 캐싱은 임시 컨테이너 또는 빌드 에이전트가 매번 vcpkg가 클린 슬레이트로 작동하도록 강제하는 CI 시나리오에서 특히 효과적입니다. 클라우드 기반 이진 캐시(예: GitHub 패키지 또는 Azure DevOps 아티팩트)를 사용하면 종속성 또는 구성을 변경할 때만 다시 빌드가 수행되므로 최대 속도를 보장하기 위해 실행 간에 이진 패키지를 유지할 수 있습니다.

이진 배포 메커니즘으로는 권장되지 않지만 이진 캐싱을 사용하여 여러 시스템의 빌드 출력을 다시 사용할 수 있습니다. 예를 들어 개발자는 로컬 컴퓨터에서 CI 실행으로 생성된 이진 패키지를 사용할 수 있습니다. vcpkg에서 생성된 이진 파일을 재사용하고 통합하는 다른 방법은 다음을 참조 vcpkg export하세요.

모든 연속 통합 파이프라인 또는 워크플로에 대한 읽기 및 쓰기 권한이 있는 이진 캐시를 만드는 것이 좋습니다. 개별 개발자는 CI에서 생성된 이진 캐시에 대한 읽기 전용 액세스 권한이 있어야 합니다.

이진 캐시는 다양한 환경에서 호스트할 수 있습니다. 이진 캐시의 가장 기본적인 형태는 로컬 컴퓨터의 폴더 또는 네트워크 파일 공유입니다. 캐시는 모든 NuGet 피드(예: GitHub 패키지 또는 Azure DevOps 아티팩트), Azure Blob Storage, Google Cloud Storage 및 기타 여러 서비스에 저장할 수도 있습니다.

CI 공급자가 네이티브 "캐싱" 함수를 제공하는 경우 가장 성능이 좋은 결과를 위해 vcpkg 이진 캐싱과 네이티브 메서드를 모두 사용하는 것이 좋습니다.

기본 이진 캐시

이진 캐싱은 기본적으로 다음과 같은 첫 번째 유효한 위치에 있는 files 공급자 와 함께 사용하도록 설정됩니다.

  • Windows
  1. %VCPKG_DEFAULT_BINARY_CACHE%
  2. %LOCALAPPDATA%\vcpkg\archives
  3. %APPDATA%\vcpkg\archives
  • 비 Windows
  1. $VCPKG_DEFAULT_BINARY_CACHE
  2. $XDG_CACHE_HOME/vcpkg/archives
  3. $HOME/.cache/vcpkg/archives

축소된 도구 내 도움말은 .를 통해 vcpkg help binarycaching사용할 수 있습니다.

이진 캐싱은 빌드하는 이진 파일만 포함합니다. 원본 파일 및 미리 빌드된 도구를 캐시하려면 자산 캐싱을 참조하세요.

구성 구문

이진 캐싱은 환경 변수 VCPKG_BINARY_SOURCES (로 설정 <source>;<source>;...) 및 명령줄 옵션 --binarysource=<source>으로 구성됩니다. 옵션은 먼저 환경에서 평가된 다음 명령줄에서 평가됩니다. 마지막 명령줄 옵션으로 전달 --binarysource=clear 하여 이진 캐싱을 완전히 사용하지 않도록 설정할 수 있습니다.

양식 설명
clear 모든 이전 원본 사용 안 함(기본값 포함)
default[,<rw>] 기본 파일 공급자 추가
files,<absolute path>[,<rw>] 파일 기반 위치 추가
nuget,<uri>[,<rw>] NuGet 기반 원본을 추가합니다. -Source NuGet CLI의 매개 변수에 해당
nugetconfig,<path>[,<rw>] NuGet-config-file-based 원본을 추가합니다. -Config NuGet CLI의 매개 변수에 해당합니다.
nugettimeout,<seconds> NuGet 네트워크 작업에 대한 시간 제한을 지정합니다. -Timeout NuGet CLI의 매개 변수에 해당합니다.
http,<url_template>[,<rw>[,<header>]] 사용자 지정 http 기반 위치를 추가합니다.
x-azblob,<baseuri>,<sas>[,<rw>] 실험적: 경고 없이 변경되거나 제거됩니다.
공유 액세스 서명을 사용하여 Azure Blob Storage 원본 추가
x-gcs,<prefix>[,<rw>] 실험적: 경고 없이 변경되거나 제거됩니다.
GCS(Google Cloud Storage) 원본을 추가합니다.
x-aws,<prefix>[,<rw>] 실험적: 경고 없이 변경되거나 제거됩니다.
AWS S3 원본을 추가합니다.
x-aws-config,<parameter> 실험적: 경고 없이 변경되거나 제거됩니다.
모든 AWS S3 공급자를 구성합니다.
x-cos,<prefix>[,<rw>] 실험적: 경고 없이 변경되거나 제거됩니다.
Tencent Cloud Object Storage 원본을 추가합니다.
x-gha,<rw>] 실험적: 경고 없이 변경되거나 제거됩니다.
GitHub Actions 캐시를 원본으로 사용합니다.
interactive NuGet에 대한 대화형 자격 증명 관리를 사용하도록 설정합니다(디버깅의 경우, 명령줄에서 필요--debug).

특정 원본에 대한 선택적 매개 변수는 이 <rw> 진 파일 다운로드()(기본값), 주문형 빌드를 해당 원격(read) 또는 둘 다(writereadwrite)에 업로드할지 여부를 제어합니다.

공급자

AWS S3 공급자

참고 항목

이 섹션에서는 언제든지 변경하거나 제거할 수 있는 vcpkg의 실험적 기능에 대해 설명합니다.

x-aws,<prefix>[,<rw>]

AWS CLI를 사용하여 AWS S3 원본을 추가합니다. <접두사는> .에서 /시작하고 s3:// 끝나야 합니다.

x-aws-config,no-sign-request

AWS CLI에 전달 --no-sign-request 합니다.

Azure Blob Storage 공급자

참고 항목

이 섹션에서는 언제든지 변경하거나 제거할 수 있는 vcpkg의 실험적 기능에 대해 설명합니다.

x-azblob,<baseuri>,<sas>[,<rw>]

공유 액세스 서명 유효성 검사를 사용하여 Azure Blob Storage 공급자를 추가합니다. <baseuri> 컨테이너 경로를 포함해야 합니다.

빠른 시작

먼저 컨테이너뿐만 아니라 Azure Storage 계정을 만들어야 합니다. 지침은 Azure Storage 빠른 시작 설명서를 참조하세요.

다음으로, 설정 ->Shared Access Signature 아래의 스토리지 계정에서 수행할 수 있는 SAS(공유 액세스 서명)를 만들어야 합니다. 이 SAS에는 다음이 필요합니다.

  • 허용되는 서비스: Blob
  • 허용되는 리소스 종류: 개체
  • 허용된 권한: 읽기(사용하는 read경우) 또는 읽기, 만들기(사용 write 또는 readwrite사용 시)

Blob 엔드포인트와 컨테이너는 접두사 없이 ? 생성된 SAS로 <baseuri> 전달되어야 <sas>합니다.

예제:

x-azblob,https://<storagename>.blob.core.windows.net/<containername>,sv=2019-12-12&ss=b&srt=o&sp=rcx&se=2020-12-31T06:20:36Z&st=2020-12-30T22:20:36Z&spr=https&sig=abcd,readwrite

그러나 vcpkg는 정상적인 작업 중에 SAS를 공개하지 않도록 시도합니다.

  1. 전달된 경우 --debug 전체 인쇄됩니다.
  2. 다음과 같은 하위 프로세스에 명령줄 매개 변수로 전달됩니다. curl.exe

Azure Blob Storage에는 이진 캐시의 크기를 자동으로 관리하는 데 사용할 수 있는 지정된 일 수의 액세스되지 않은 캐시 항목을 제거하는 기능이 포함되어 있습니다. 자세한 내용은 Microsoft Docs의 데이터 수명 주기 관리를 참조하거나 Azure Portal에서 스토리지 계정에 대한 데이터 관리 ->수명 주기 관리를 찾습니다.

Tencent Cloud Object Storage 공급자

참고 항목

이 섹션에서는 언제든지 변경하거나 제거할 수 있는 vcpkg의 실험적 기능에 대해 설명합니다.

x-cos,<prefix>[,<rw>]

COS 원본을 추가합니다. <prefix> 로 시작하고 .로 cos:///끝나야 합니다.

파일 공급자

files,<absolute path>[,<rw>]

이진 캐싱 ID를 기반으로 경로에 zip 압축된 보관 파일을 저장합니다.

Google Cloud Storage 공급자

참고 항목

이 섹션에서는 언제든지 변경하거나 제거할 수 있는 vcpkg의 실험적 기능에 대해 설명합니다.

x-gcs,<prefix>[,<rw>]

Google Cloud Storage 공급자를 추가합니다. <prefix> 로 시작하고 .로 gs:///끝나야 합니다.

빠른 시작

먼저 스토리지 버킷(GCS 빠른 시작)뿐만 아니라 Google 클라우드 플랫폼 계정을 만들어야 합니다.

이 빠른 시작의 일부로 Google Cloud에서 인증하도록 명령줄 도구를 구성 gsutil 했을 것입니다. vcpkg는 이 명령줄 도구를 사용하므로 실행 파일에 대한 검색 경로에 있는지 확인합니다.

예제 1(개체에 대한 공통 접두사 없이 버킷 사용):

x-gcs,gs://<bucket-name>/,readwrite

예제 2(개체에 버킷 및 접두사 사용):

x-gcs,gs://<bucket-name>/my-vcpkg-cache/maybe/with/many/slashes/,readwrite
x-gcs,gs://<bucket-name>/my-vcpkg-cache/maybe/with`,commas/too!/,readwrite

쉼표(,)는 GCS의 개체 접두사 일부로 유효합니다. 이전 예제와 같이 vcpkg 구성에서 이스케이프해야 합니다. GCS에는 폴더가 없습니다(일부 GCS 도구는 폴더를 시뮬레이션). vcpkg 캐시에서 사용하는 접두사를 만들거나 조작할 필요는 없습니다.

GitHub Actions 캐시

참고 항목

이 섹션에서는 언제든지 변경하거나 제거할 수 있는 vcpkg의 실험적 기능에 대해 설명합니다.

x-gha[,<rw>]

GitHub Actions 캐시를 공급자로 추가합니다. 이 이진 캐싱 공급자는 GitHub Actions 워크플로의 컨텍스트에서만 유효합니다. 이 공급자를 사용하려면 환경 변수와 ACTIONS_RUNTIME_TOKEN 환경 변수를 모두 ACTIONS_CACHE_URL 설정해야 합니다. 이러한 환경 변수를 올바르게 설정하는 방법은 다음 빠른 시작 섹션에서 설명합니다.

빠른 시작

vcpkg가 GitHub Actions Cache를 사용하려면 작업 캐시 URL 및 런타임 토큰이 필요합니다. 이렇게 하려면 다음과 유사한 워크플로 단계에서 두 값을 모두 환경 변수로 내보내야 합니다.

- uses: actions/github-script@v7
  with:
    script: |
      core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
      core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');

이러한 값을 vcpkg 명령줄 인수 대신 환경 변수로 지정하는 것은 GitHub Actions 캐시 이진 캐싱 공급자가 GitHub Actions 워크플로에서만 사용할 수 있기 때문에 디자인되었습니다.

환경 변수를 내보내면 다음과 같이 GitHub Actions 이진 캐싱 공급자를 사용하여 vcpkg를 실행할 수 있습니다.

- name: Install dependencies via vcpkg
  run: vcpkg install zlib --binarysource="clear;x-gha,readwrite"

HTTP 공급자

http,<url_template>[,<rw>[,<header>]]

각 이진 캐싱 작업은 HTTP 동사에 매핑됩니다.

  • 다운로드- GET
  • 업로드- PUT
  • 존재 확인 - HEAD

URL 템플릿

템플릿은 가변 확장에 중괄호를 사용합니다. 변수 'name', 'version', 'sha' 및 'triplet'를 사용할 수 있습니다. 예시:

https://cache.example.com/{name}/{version}/{sha}

Warning

이 값은 사용자 환경에 보안에 영향을 줄 수 있는 외부 프로세스 호출의 명령줄에 나타날 수 있습니다.

인증은 HTTP 권한 부여 헤더를 지정하여 지원됩니다. 예시:

http,https://cache.example.com/{name}/{version}/{sha},readwrite,Authorization: Bearer BearerTokenValue

NuGet 공급자

NuGet CLI 매개 변수를 사용하여 -Source NuGet 서버를 추가합니다.

nuget,<uri>[,<rw>]

NuGet CLI 매개 변수와 함께 -Config NuGet 구성 파일을 사용합니다.

nugetconfig,<path>[,<rw>]

NuGet 원본에 대한 시간 제한을 구성합니다.

nugettimeout,<seconds>

구성 파일은 피드에 defaultPushSource 패키지를 다시 쓸 수 있도록 지원하도록 정의해야 합니다.

자격 증명

많은 NuGet 서버에 액세스하려면 추가 자격 증명이 필요합니다. 자격 증명을 제공하는 가장 유연한 방법은 사용자 지정 nuget.config 파일이 있는 원본을 nugetconfig 사용하는 것입니다. 자세한 내용은 인증된 피드에서 패키지 소비를 참조하세요.

그러나 NuGet의 기본 제공 자격 증명 공급자를 사용하거나 환경의 기본값 nuget.config을 사용자 지정하여 많은 서버에 대해 인증할 수 있습니다. 기본 구성은 다음과 같은 nuget 클라이언트 호출을 통해 확장할 수 있습니다.

nuget sources add -Name MyRemote -Source https://... -Username $user -Password $pass

를 통해 vcpkg nuget,MyRemote,readwrite에 전달합니다. 다음과 같이 보고하는 실행 vcpkg fetch nuget하여 vcpkg에서 사용하는 NuGet의 정확한 복사본에 대한 경로를 가져올 수 있습니다.

$ vcpkg fetch nuget
/vcpkg/downloads/tools/nuget-5.5.1-linux/nuget.exe

비 Windows 사용자는 을 통해 mono /path/to/nuget.exe sources add ...모노를 통해 이를 호출해야 합니다.

metadata.repository

nugetconfig 원본 공급자는 nuget nuget 패키지를 생성하는 동안 특정 환경 변수를 준수합니다. metadata.repository 모든 패키지의 필드는 다음과 같이 생성됩니다.

    <repository type="git" url="${VCPKG_NUGET_REPOSITORY}"/>

또는

    <repository type="git"
                url="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git"
                branch="${GITHUB_REF}"
                commit="${GITHUB_SHA}"/>

적절한 환경 변수가 정의되고 비어있지 않으면 입니다. 이는 GitHub Packages의 패키지를 원래 패키지 원본과 연결하기 위한 것이 아니라 빌드 프로젝트와 연결하는 데 특별히 사용됩니다.

NuGet 캐시

NuGet의 사용자 전체 캐시는 기본적으로 사용되지 않습니다. 모든 nuget 기반 원본에 사용하려면 환경 변수를 (대/소문자를 구분하지 않는) 또는 1.로 설정합니다.trueVCPKG_USE_NUGET_CACHE

공급자 예제

선택한 CI 시스템이 나열되지 않은 경우 PR을 제출하여 추가할 수 있습니다.

GitHub 패키지

GitHub 패키지와 함께 vcpkg를 사용하려면 NuGet 공급자사용하는 것이 좋습니다.

참고 항목

2020-09-21: GitHub의 호스트된 에이전트는 최신 이진 캐싱을 지원하지 않는 경로에 미리 설치된 이전 vcpkg 복사본과 함께 제공됩니다. 즉, 경로 접두사를 사용하거나 vcpkg 사용하지 않고 직접 호출 bootstrap-vcpkg 하면 의도하지 않은 vcpkg 인스턴스를 호출할 수 있습니다. vcpkg의 고유한 복사본을 사용하려는 경우 vcpkg의 고유한 복사본을 사용하려는 경우 다음 두 단계를 수행하여 문제를 방지합니다.

  1. 을 사용하는 것과 동일한 값을 rm -rf "$VCPKG_INSTALLATION_ROOT" 실행합니다 shell: 'bash'.
  2. 항상 호출 vcpkg 하고 bootstrap-vcpkg 경로 접두사(예: ./vcpkg, vcpkg/vcpkg.\bootstrap-vcpkg.bat등)를 사용합니다.
# actions.yaml
#
# In this example, vcpkg has been added as a submodule (`git submodule add https://github.com/Microsoft/vcpkg`).
env:
  VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'

matrix:
  os: ['windows-2019', 'ubuntu-20.04']
  include:
    - os: 'windows-2019'
      triplet: 'x86-windows'
      mono: ''
    - os: 'ubuntu-20.04'
      triplet: 'x64-linux'
      # To run `nuget.exe` on non-Windows platforms, `mono` must be used.
      mono: 'mono'

steps:
  # This step assumes `vcpkg` has been bootstrapped (run `./vcpkg/bootstrap-vcpkg`)
  - name: 'Setup NuGet Credentials'
    shell: 'bash'
    # Replace <OWNER> with your organization name
    run: |
      ${{ matrix.mono }} `./vcpkg/vcpkg fetch nuget | tail -n 1` \
        sources add \
        -source "https://nuget.pkg.github.com/<OWNER>/index.json" \
        -storepasswordincleartext \
        -name "GitHub" \
        -username "<OWNER>" \
        -password "${{ secrets.GITHUB_TOKEN }}"
      ${{ matrix.mono }} `./vcpkg/vcpkg fetch nuget | tail -n 1` \
        setapikey "${{ secrets.GITHUB_TOKEN }}" \
        -source "https://nuget.pkg.github.com/<OWNER>/index.json"

  # Omit this step if you're using manifests
  - name: 'vcpkg package restore'
    shell: 'bash'
    run: >
      ./vcpkg/vcpkg install sqlite3 cpprestsdk --triplet ${{ matrix.triplet }}

매니페스트를 사용하는 경우 단계를 생략 vcpkg package restore 할 수 있습니다. 이 단계는 빌드의 일부로 자동으로 실행됩니다.

자세한 내용은 GitHub 패키지의 NuGet 설명서를 참조하세요.

Azure DevOps 아티팩트

Azure DevOps Artifacts에서 vcpkg를 사용하려면 NuGet 공급자사용하는 것이 좋습니다.

먼저 DevOps 계정에서 아티팩트가 사용하도록 설정되었는지 확인합니다. 관리istrator는 Project 설정 -General ->Overview ->>Azure DevOps Services>아티팩트를 통해 이를 사용하도록 설정할 수 있습니다.

다음으로, 프로젝트에 대한 피드를 만듭니다. 피드 URL은 .로 끝나는 링크가 /nuget/v3/index.json됩니다https://. 자세한 내용은 Azure DevOps 아티팩트 설명서를 참조 하세요.

파이프라인에서 피드 사용

# azure-pipelines.yaml
variables:
- name: VCPKG_BINARY_SOURCES
  value: 'clear;nuget,<FEED_URL>,readwrite'

steps:
# Remember to add this task to allow vcpkg to upload archives via NuGet
- task: NuGetAuthenticate@0

Windows OS가 아닌 사용자 지정 에이전트를 사용하는 경우 Mono를 설치하여 실행 nuget.exe 해야 합니다(apt install mono-completebrew install mono등).

로컬로 피드 사용

# On Windows Powershell
PS> & $(vcpkg fetch nuget | select -last 1) sources add `
  -name ADO `
  -Source https://pkgs.dev.azure.com/$ORG/_packaging/$FEEDNAME/nuget/v3/index.json `
  -Username $USERNAME `
  -Password $PAT
PS> $env:VCPKG_BINARY_SOURCES="nuget,ADO,readwrite"
# On Linux or OSX
$ mono `vcpkg fetch nuget | tail -n1` sources add \
  -name ADO \
  -Source https://pkgs.dev.azure.com/$ORG/_packaging/$FEEDNAME/nuget/v3/index.json \
  -Username $USERNAME \
  -Password $PAT
$ export VCPKG_BINARY_SOURCES="nuget,ADO,readwrite"

최대 보안을 위해 PAT(개인용 액세스 토큰)를 암호로 사용합니다. 사용자 설정 ->Personal Access 토큰 또는 https://dev.azure.com/<ORG>/_usersSettings/tokens.에서 PAT를 생성할 수 있습니다.

ABI 해시

참고 항목

ABI 해시에 대한 정보는 구현 참고 사항으로 제공되며 예고 없이 변경됩니다.

모든 빌드에 대해 vcpkg는 ABI 해시계산하여 동등성을 결정합니다. 두 빌드에 동일한 ABI 해시가 있는 경우 vcpkg는 동일한 것으로 간주하고 프로젝트 및 컴퓨터에서 이진 파일을 다시 사용합니다.

ABI 해시는 다음을 고려합니다.

  • 포트 디렉터리의 모든 파일
  • 삼중 파일 내용 및 이름
  • C++ 컴파일러 실행 파일
  • C 컴파일러 실행 파일
  • 선택한 기능 집합
  • 각 종속성의 ABI 해시
  • (추론)에서 참조하는 portfile.cmake 모든 도우미 함수
  • 사용된 CMake 버전
  • 에 나열된 환경 변수의 내용 VCPKG_ENV_PASSTHROUGH
  • 도구 체인 파일의 텍스트 내용(VCPKG_CHAINLOAD_TOOLCHAIN_FILE)

이 광범위한 목록에도 불구하고 캐시를 무효화하고 비결정성을 도입할 수 있습니다. 사용자 환경에 대해 추적해야 하는 추가 세부 정보가 있는 경우 주석에 추가 정보가 포함된 triplet 파일을 생성할 수 있습니다. 해당 추가 정보는 ABI 해시에 포함되며 이진 파일의 고유한 우주를 보장합니다.

계산된 ABI 해시는 검사를 위해 각 패키지 및 현재 설치된 디렉터리에 /share/<port>/vcpkg_abi_info.txt 저장됩니다.

zlib의 예제 ABI 해시

디버그 출력을 사용하여 pacakge의 전체 ABI(애플리케이션 이진 인터페이스) 해시를 인쇄합니다. zlib의 경우:

[DEBUG] Trying to hash <path>\buildtrees\zlib\x86-windows.vcpkg_abi_info.txt
[DEBUG] <path>\buildtrees\zlib\x86-windows.vcpkg_abi_info.txt has hash bb1c96759ac96102b4b18215db138daedd3eb16c2cd3302ae7bffab2b643eb87

패키지 zlib에 대한 ABI 해시bb1c96759ac96102b4b18215db138daedd3eb16c2cd3302ae7bffab2b643eb87는 이진 패키지를 구분하기 위해 가능한 모든 관련 정보를 해시하여 생성됩니다.

컴파일러 버전은 ABI 해시의 일부이며 아래에서 계산됩니다.

[DEBUG] -- The C compiler identification is MSVC 19.36.32538.0
[DEBUG] -- The CXX compiler identification is MSVC 19.36.32538.0
[DEBUG] #COMPILER_HASH#f5d02a6542664cfbd4a38db478133cbb1a18f315

관련 파일, 컴파일러 및 도구 버전 정보는 최종 ABI 해시를 계산하기 위해 해시됩니다.

[DEBUG] <abientries for zlib:x86-windows>
[DEBUG]   0001-Prevent-invalid-inclusions-when-HAVE_-is-set-to-0.patch|750b9542cb55e6328cca01d3ca997f1373b9530afa95e04213168676936e7bfa
[DEBUG]   0002-skip-building-examples.patch|835ddecfed752e0f49be9b0f8ff7ba76541cb0a150044327316e22ca84f8d0c2
[DEBUG]   0003-build-static-or-shared-not-both.patch|d6026271dcb3d8fc74b41e235620ae31576a798e77aa411c3af8cd9e948c02b1
[DEBUG]   0004-android-and-mingw-fixes.patch|37a43eddbcb1b7dde49e7659ae895dfd0ff1df66666c1371ba7d5bfc49d8b438
[DEBUG]   cmake|3.26.2
[DEBUG]   features|core
[DEBUG]   portfile.cmake|ac63047b644fa758860dd7ba48ff9a13b058c6f240b8e8d675b8fbba035976be
[DEBUG]   ports.cmake|5a8e00cedff0c898b1f90f7d129329d0288801bc9056562b039698caf31ff3f3
[DEBUG]   post_build_checks|2
[DEBUG]   powershell|7.3.6
[DEBUG]   triplet|x86-windows
[DEBUG]   triplet_abi|3e71dd1d4afa622894ae367adbbb1ecbd42c57c51428a86b675fa1c8cad3a581-36b818778ba6f2c16962495caedb9a7b221d5be4c60de1cd3060f549319a9931-f5d02a6542664cfbd4a38db478133cbb1a18f315
[DEBUG]   usage|be22662327df993eebc437495add75acb365ab18d37c7e5de735d4ea4f5d3083
[DEBUG]   vcpkg-cmake|1b3dac4b9b0bcbef227c954b495174863feebe3900b2a6bdef0cd1cf04ca1213
[DEBUG]   vcpkg-cmake-wrapper.cmake|5d49ef2ee6448479c2aad0e5f732e2676eaba0411860f9bebabe6002d66f57d1
[DEBUG]   vcpkg.json|bc94e2540efabe36130a806381a001c57194e7de67454ab7ff1e30aa15e6ce23
[DEBUG]   vcpkg_copy_pdbs|d57e4f196c82dc562a9968c6155073094513c31e2de475694143d3aa47954b1c
[DEBUG]   vcpkg_fixup_pkgconfig|588d833ff057d3ca99c14616c7ecfb5948b5e2a9e4fc02517dceb8b803473457
[DEBUG]   vcpkg_from_git|8f27bff0d01c6d15a3e691758df52bfbb0b1b929da45c4ebba02ef76b54b1881
[DEBUG]   vcpkg_from_github|b743742296a114ea1b18ae99672e02f142c4eb2bef7f57d36c038bedbfb0502f
[DEBUG]   vcpkg_replace_string|d43c8699ce27e25d47367c970d1c546f6bc36b6df8fb0be0c3986eb5830bd4f1
[DEBUG] </abientries>

참고 항목

항목에는 triplet_abi 세 개의 해시, 즉 triplet의 x86-windows 파일 콘텐츠 해시, windows.cmake 도구 체인 및 컴파일러 해시가 포함됩니다. 다른 플랫폼을 대상으로 지정하기로 결정하면 이러한 해시가 변경됩니다.