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
Installazione di una porta con funzionalità predefinite (comportamento predefinito):
vcpkg install extract-any
vieneextract-any
installata con le funzionalità predefinite (extract-any[format-a]
), a causa dell'assenza di richieste di funzionalità specifiche.Specificare una funzionalità senza disabilitare le impostazioni predefinite:
vcpkg install extract-any[format-b]
consente l'installazione diextract-any
con le funzionalità specificate (format-b
) e predefinite (extract-any[format-a,format-b]
format-a
).Disabilitazione esplicita delle funzionalità predefinite:
vcpkg install extract-any[core]
installaextract-any
senza funzionalità predefinite, perché[core]
le esclude in modo esplicito.Dipendenze transitive e funzionalità predefinite:
vcpkg install extract-any[format-b] portB
potrebbe comportareextract-any[format-a,format-b] portB
l'installazione seportB
dipende daextract-any[format-a]
, ma non disabilita in modo esplicito le funzionalità predefiniteextract-any
.Combinazione di porte con specifiche di funzionalità diverse:
vcpkg install extract-any[format-b] portB
installaextract-any[format-a, format-b] portB
, incluseextract-any
le funzionalità predefinite, a meno che non siano escluse in modo esplicito.Disabilitazione completa delle funzionalità predefinite:
vcpkg install extract-any[core] portB
garantisce l'installazioneextract-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.