Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Koncepcja: Funkcje domyślne

W tym artykule opisano koncepcję funkcji domyślnych, ich implikacji i strategii efektywnego zarządzania.

Funkcje domyślne to zestaw funkcji automatycznie dołączanych po zainstalowaniu portu, chyba że jawnie wyłączone. Te funkcje zapewniają, że biblioteka utrzymuje poziom podstawowej funkcjonalności, nawet w miarę wzrostu złożoności grafu zależności.

Uwaga

Nie wszystkie porty zawierają funkcje domyślne.

Rola funkcji domyślnych

Funkcje domyślne zapewniają przyjazne dla użytkownika środowisko, zapewniając, że podstawowe funkcje są dostępne w bibliotekach z funkcjami modułowymi.

Na przykład biblioteka, która może wyodrębniać różne formaty archiwum, może mieć każdy format jako funkcję opcjonalną. Bez domyślnych funkcji biblioteka może nie zawierać żadnego algorytmu wyodrębniania z pudełka, komplikując wstępne użycie.

Pakiety zainstalowane przez program vcpkg zawsze będą zawierać ich funkcje domyślne, chyba że jawnie zażądano inaczej. To zachowanie dotyczy pakietów wymaganych bezpośrednio przez użytkownika za pośrednictwem pliku manifestu lub wywołania instalacji programu vcpkg oraz pakietów wymaganych jako zależności.

Wyłączanie domyślnych funkcji w trybie manifestu

"default-features": false Dodaj atrybut do deklaracji zależności, aby wyłączyć instalację jej funkcji domyślnych.

Wyłączenie automatycznej instalacji funkcji domyślnych jest możliwe tylko w przypadku zależności żądanych przez użytkownika.

Jeśli chcesz wyłączyć funkcje domyślne dla zależności przechodniej, musisz podwyższyć jej poziom do bezpośredniej zależności od manifestu projektu.

Wyłączanie funkcji domyślnych w trybie klasycznym

Dodaj funkcję specjalną core w ramach żądanych funkcji pakietów, które chcesz zainstalować.

Uwaga

Podobnie jak w przypadku działania trybu manifestu, jeśli chcesz wyłączyć funkcje domyślne dla zależności przechodniej; Należy podwyższyć poziom go do żądania instalacji bezpośredniej w wierszu polecenia.

Przykład 1: dołączanie biblioteki z funkcjami domyślnymi

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

W tym scenariuszu extract-any program jest instalowany z funkcjami domyślnymi, zapewniając natychmiastową funkcjonalność.

Przykład 2. Wyłączanie funkcji domyślnych (tryb manifestu)

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

extract-any W tym miejscu jest instalowany bez domyślnych funkcji, co pozwala na dostosowanie konfiguracji.

Przykład 3. Wyłączanie funkcji domyślnych (tryb klasyczny)

vcpkg install extract-any[core]

extract-any W tym miejscu program jest instalowany bez domyślnych funkcji przy użyciu specjalnej core funkcji.

Domyślne interakcje funkcji

  1. Instalowanie portu z funkcjami domyślnymi (zachowanie domyślne): vcpkg install extract-any jest instalowany extract-any z jego funkcjami domyślnymi (extract-any[format-a]), ze względu na brak określonych żądań funkcji.

  2. Określanie funkcji bez wyłączania wartości domyślnych: prowadzi do instalacji extract-any zarówno z określonymi (format-b) i domyślnymi funkcjami (format-aextract-any[format-a,format-b]). vcpkg install extract-any[format-b]

  3. Jawne wyłączanie funkcji domyślnychextract-any: vcpkg install extract-any[core] instaluje bez żadnych funkcji domyślnych, ponieważ [core] jawnie je wyklucza.

  4. Przejściowe zależności i funkcje domyślne: vcpkg install extract-any[format-b] portB może spowodować extract-any[format-a,format-b] portB zainstalowanie, jeśli portB zależy od extract-any[format-a]elementu , ale nie powoduje jawnego wyłączenia extract-anyfunkcji domyślnych.

  5. Łączenie portów z różnymi specyfikacjami funkcji: vcpkg install extract-any[format-b] portB instaluje extract-any[format-a, format-b] portBfunkcje domyślne, extract-anychyba że jawnie wykluczone.

  6. Kompleksowe wyłączanie funkcji domyślnych: vcpkg install extract-any[core] portB zapewnia, że extract-any jest instalowany tylko z jawnie żądanymi funkcjami, z wyłączeniem ustawień domyślnych.

Zarządzanie funkcjami domyślnymi

Aby skutecznie zarządzać funkcjami domyślnymi w projektach:

  • Być jawne: określ tylko potrzebne funkcje. Użyj [core] polecenia , aby wyłączyć funkcje domyślne w razie potrzeby.
  • Sprawdź zależności: użyj polecenia vcpkg depend-info <port> , aby poznać rozwiązania zależności i odpowiednio dostosować konfiguracje.
  • Korzystanie z przesłonięć i punktów odniesienia: korzystaj z funkcji przechowywania wersji i punktów odniesienia, aby uzyskać większą kontrolę nad rozwiązaniami zależności.

Aby uzyskać więcej informacji, zobacz następujące zasoby:

Wdrożenie jasnej strategii zarządzania funkcjami domyślnymi pomoże usprawnić zarządzanie zależnościami projektu, zapewniając uwzględnienie tylko elementów niezbędnych do działania aplikacji.