Condividi tramite


Concetto: funzionalità predefinite

Questo articolo descrive il concetto di funzionalità predefinite, le relative implicazioni e le strategie per una gestione efficace.

Le funzionalità predefinite sono un set di funzionalità incluse automaticamente quando viene installata una porta, a meno che non sia disabilitata in modo esplicito. Queste funzionalità assicurano che una libreria mantenga un livello di base di funzionalità, anche quando aumenta la complessità del grafico delle dipendenze.

Nota

Non tutte le porte contengono funzionalità predefinite.

Ruolo delle funzionalità predefinite

Le funzionalità predefinite offrono un'esperienza intuitiva assicurando che le funzionalità essenziali siano disponibili nelle librerie con funzionalità modulari.

Ad esempio, una libreria in grado di estrarre diversi formati di archivio potrebbe avere ogni formato come funzionalità facoltativa. Senza le funzionalità predefinite, la libreria potrebbe non includere alcun algoritmo di estrazione predefinito, complicando l'uso iniziale.

I pacchetti installati da vcpkg includono sempre le funzionalità predefinite, a meno che non vengano richieste in modo esplicito. Questo comportamento si applica ai pacchetti richiesti direttamente dall'utente tramite una chiamata di installazione di file manifesto o vcpkg e ai pacchetti necessari come dipendenze.

Disabilitazione delle funzionalità predefinite in modalità manifesto

Aggiungere l'attributo "default-features": false a una dichiarazione di dipendenza per disabilitare l'installazione delle funzionalità predefinite.

La disabilitazione dell'installazione automatica delle funzionalità predefinite è possibile solo per le dipendenze richieste dall'utente.

Se si desidera disabilitare le funzionalità predefinite per una dipendenza transitiva, è necessario alzarla di livello a una dipendenza diretta dal manifesto del progetto.

Disabilitazione delle funzionalità predefinite in modalità classica

Aggiungere la funzionalità speciale core come parte delle funzionalità richieste dei pacchetti da installare.

Nota

Analogamente al funzionamento della modalità manifesto, se si desidera disabilitare le funzionalità predefinite per una dipendenza transitiva; è necessario alzarlo di livello a una richiesta di installazione diretta nella riga di comando.

Esempio 1: Inclusione di una libreria con funzionalità predefinite

{
  "name": "my-application",
  "version": "0.15.2",
  "dependencies": [
    "extract-any"
  ]
}

In questo scenario, extract-any viene installato con le funzionalità predefinite, garantendo funzionalità immediate.

Esempio 2: Disabilitazione delle funzionalità predefinite (modalità manifesto)

{
  "name": "my-application",
  "version": "0.15.2",
  "dependencies": [
    {
      "name": "extract-any",
      "default-features": false
    }
  ]
}

In questo caso, extract-any viene installato senza le funzionalità predefinite, consentendo una configurazione personalizzata.

Esempio 3: Disabilitazione delle funzionalità predefinite (modalità classica)

vcpkg install extract-any[core]

In questo caso, extract-any viene installato senza le funzionalità predefinite usando la funzionalità speciale core .

Interazioni delle funzionalità predefinite

  1. Installazione di una porta con funzionalità predefinite (comportamento predefinito):vcpkg install extract-any viene extract-any installata con le funzionalità predefinite (extract-any[format-a]), a causa dell'assenza di richieste di funzionalità specifiche.

  2. Specificare una funzionalità senza disabilitare le impostazioni predefinite: vcpkg install extract-any[format-b] consente l'installazione di extract-any con le funzionalità specificate (format-b) e predefinite (extract-any[format-a,format-b]format-a).

  3. Disabilitazione esplicita delle funzionalità predefinite: vcpkg install extract-any[core] installa extract-any senza funzionalità predefinite, perché [core] le esclude in modo esplicito.

  4. Dipendenze transitive e funzionalità predefinite: vcpkg install extract-any[format-b] portB potrebbe comportare extract-any[format-a,format-b] portB l'installazione se portB dipende da extract-any[format-a], ma non disabilita in modo esplicito le funzionalità predefiniteextract-any.

  5. Combinazione di porte con specifiche di funzionalità diverse: vcpkg install extract-any[format-b] portB installa extract-any[format-a, format-b] portB, incluse extract-anyle funzionalità predefinite, a meno che non siano escluse in modo esplicito.

  6. Disabilitazione completa delle funzionalità predefinite: vcpkg install extract-any[core] portB garantisce l'installazione extract-any con solo le funzionalità richieste in modo esplicito, escluse le impostazioni predefinite.

Gestione delle funzionalità predefinite

Per gestire in modo efficace le funzionalità predefinite all'interno dei progetti:

  • Essere espliciti: specificare solo le funzionalità necessarie. Usare [core] per disabilitare le funzionalità predefinite quando necessario.
  • Esaminare le dipendenze: usare vcpkg depend-info <port> per comprendere le risoluzioni delle dipendenze e modificare le configurazioni di conseguenza.
  • Usare sostituzioni e linee di base: sfruttare le funzionalità di controllo delle versioni e di base per un maggiore controllo sulle risoluzioni delle dipendenze.

Per altre informazioni, vedere gli argomenti seguenti:

L'adozione di una strategia chiara per la gestione delle funzionalità predefinite consentirà di semplificare la gestione delle dipendenze del progetto, assicurandosi di includere solo le funzionalità necessarie per l'applicazione.