Delen via


Binaire gegevenscaching

De meeste poorten in het openbare vcpkg-register zijn gebouwd op basis van de bron. Door te bouwen vanuit de bron, kan vcpkg zorgen voor maximale compatibiliteit met behulp van dezelfde omgeving, build-tools, compilervlagmen, linkervlagken en andere configuraties die u in uw project gebruikt om uw afhankelijkheden te bouwen.

Wanneer binaire caching is ingeschakeld, maakt vcpkg, nadat elk pakket is gebouwd op basis van de bron, een binair pakket. Binaire pakketten bevatten de build-uitvoer van een pakket: binaire bestanden, buildsysteemintegratiebestanden, gebruiksdocumentatie, licentie en andere bestanden. Als voor een latere uitvoering een in de cache opgeslagen pakket moet worden geïnstalleerd, bepaalt vcpkg of het binaire pakket in de cache moet worden hersteld of een build moet worden geactiveerd vanuit de bron.

Op deze manier vermindert binaire caching de impact van de volgende negatieve gevolgen van het bouwen vanuit de bron:

  • Gedupliceerde inspanning: Door het aantal keren te verminderen dat een pakket moet worden gebouwd op basis van de bron.
  • Lange buildtijden: Het herstellen van een binair pakket is meestal een zeer snelle bewerking die seconden in beslag neemt.

Binaire caching is vooral effectief in CI-scenario's waarbij tijdelijke containers of build agents vcpkg elke keer met een schone lei laten werken. Met behulp van een binaire cache in de cloud (zoals GitHub Packages of Azure DevOps Artifacts) kunt u binaire pakketten tussen uitvoeringen behouden om de maximale snelheid te garanderen, omdat herbouwen alleen plaatsvinden wanneer u wijzigingen aanbrengt in uw afhankelijkheden of configuratie.

Aanbeveling

Het is raadzaam om een binaire cache te maken met lees- en schrijfmachtigingen voor elke pijplijn of werkstroom voor continue integratie. Afzonderlijke ontwikkelaars moeten alleen-lezentoegang hebben tot de door CI geproduceerde binaire cache.

Binaire caches kunnen worden gehost in verschillende omgevingen. De meest eenvoudige vorm van een binaire cache is een map op de lokale computer of een netwerkbestandsshare. Caches kunnen ook worden opgeslagen in elke NuGet-feed (zoals GitHub Packages of Azure DevOps Artifacts), Azure Blob Storage, Google Cloud Storage en vele andere services.

Als uw CI-provider een systeemeigen 'caching'-functie biedt, is het raadzaam om zowel binaire vcpkg-caching als de systeemeigen methode te gebruiken voor de meest presterende resultaten.

Een binaire cache hergebruiken voor ontwikkeling

Hoewel het niet wordt aanbevolen als een binair distributiemechanisme, kan binaire caching worden gebruikt om build-uitvoer van meerdere systemen opnieuw te gebruiken. Ontwikkelaars kunnen bijvoorbeeld de binaire pakketten gebruiken die worden geproduceerd door een CI die op hun lokale computers worden uitgevoerd. Voor andere methoden voor het hergebruik en integreren van door vcpkg geproduceerde binaire bestanden, bekijkt u vcpkg export.

U kunt bijvoorbeeld een NuGet-feed configureren die wordt gehost op Azure Artifacts om binaire pakketten te accepteren die zijn gebouwd op basis van uw CI-pijplijn en deze opnieuw te gebruiken in een ontwikkelomgeving.

U moet uw Azure Artifacts-feed configureren om lees- en schrijfmachtigingen te verlenen aan uw Azure DevOps-pijplijn en om alleen-lezenmachtigingen te verlenen voor hosts in uw ontwikkelteam.

Standaard binaire cache

Binaire caching is standaard ingeschakeld met een files provider op de eerste geldige locatie van:

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

Beperkte hulpfunctie is beschikbaar via vcpkg help binarycaching.

Binaire caching omvat alleen binaire bestanden die u bouwt. Zie Asset Caching als u bronbestanden en vooraf gedefinieerde hulpprogramma's in de cache wilt opslaan.

Volgende stappen

Lees de handleidingen om te leren hoe je een binaire cache instelt en de syntaxisreferentie voor de configuratie: