Memorizzazione nella cache binaria

La maggior parte delle porte nel registro pubblico vcpkg viene compilata dall'origine. Eseguendo la compilazione dall'origine, vcpkg può garantire la massima compatibilità usando lo stesso ambiente, gli strumenti di compilazione, i flag del compilatore, i flag del linker e altre configurazioni usate nel progetto per compilare le dipendenze.

Quando la memorizzazione nella cache binaria è abilitata, dopo che ogni pacchetto viene compilato dall'origine, vcpkg crea un pacchetto binario. I pacchetti binari contengono l'output di compilazione di un pacchetto: file binari, file di integrazione del sistema di compilazione, documentazione sull'utilizzo, licenza e altri file. Se un'esecuzione successiva richiede l'installazione di un pacchetto memorizzato nella cache, vcpkg determina se ripristinare il pacchetto binario memorizzato nella cache o attivare una compilazione dall'origine.

In questo modo, la memorizzazione nella cache binaria riduce l'impatto dei seguenti svantaggi della compilazione dall'origine:

  • Sforzo duplicato: riducendo il numero di volte in cui un pacchetto deve essere compilato dall'origine.
  • Tempi di compilazione lunghi: il ripristino di un pacchetto binario è in genere un'operazione molto veloce che richiede secondi per il completamento.

La memorizzazione nella cache binaria è particolarmente efficace negli scenari di integrazione continua in cui i contenitori temporanei o gli agenti di compilazione forzano vcpkg a lavorare con uno slate pulito ogni volta. Usando una cache binaria basata sul cloud ,ad esempio GitHub Packages o Azure DevOps Artifacts, è possibile rendere persistenti i pacchetti binari tra le esecuzioni per garantire la massima velocità poiché le ricompilazione si verificano solo quando si apportano modifiche alle dipendenze o alla configurazione.

Suggerimento

È consigliabile creare una cache binaria con autorizzazioni di lettura e scrittura per ogni pipeline di integrazione continua o flusso di lavoro. I singoli sviluppatori devono avere accesso in sola lettura alla cache binaria prodotta da CI.

Le cache binarie possono essere ospitate in un'ampia gamma di ambienti. La forma più semplice di una cache binaria è una cartella nel computer locale o in una condivisione file di rete. Le cache possono anche essere archiviate in qualsiasi feed NuGet (ad esempio GitHub Packages o Azure DevOps Artifacts), Archiviazione BLOB di Azure, Google Cloud Storage e molti altri servizi.

Se il provider CI offre una funzione nativa di memorizzazione nella cache, è consigliabile usare sia la memorizzazione nella cache binaria vcpkg che il metodo nativo per ottenere risultati più efficienti.

Riutilizzo di una cache binaria per lo sviluppo

Sebbene non sia consigliabile come meccanismo di distribuzione binaria, la memorizzazione nella cache binaria può essere usata per riutilizzare l'output di compilazione da più sistemi. Ad esempio, gli sviluppatori possono usare i pacchetti binari prodotti da un'integrazione continua in esecuzione nei computer locali. Per altri metodi per riutilizzare e integrare i file binari prodotti da vcpkg, vedere vcpkg export.

Ad esempio, è possibile configurare un feed NuGet ospitato in Azure Artifacts per accettare pacchetti binari compilati dalla pipeline ci e riutilizzarli in un ambiente di sviluppo.

Sarà necessario configurare il feed di Azure Artifacts per concedere le autorizzazioni di lettura e scrittura alla pipeline di Azure DevOps e concedere autorizzazioni di sola lettura per gli host nel team di sviluppo.

Cache binaria predefinita

La memorizzazione nella cache binaria è abilitata per impostazione predefinita con un files provider nella prima posizione valida di:

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

La guida in-tool ridotta è disponibile tramite vcpkg help binarycaching.

La memorizzazione nella cache binaria copre solo i file binari compilati. Per memorizzare nella cache i file di origine e gli strumenti predefiniti, vedere Memorizzazione nella cache degli asset.

Passaggi successivi

Leggere le esercitazioni per informazioni su come configurare una cache binaria e le informazioni di riferimento sulla sintassi di configurazione: