Udostępnij za pośrednictwem


PLIKI CONTROL

Ostrzeżenie

CONTROL pliki są przestarzałe i przechowywane tylko w celu zachowania zgodności z poprzednimi wersjami programu vcpkg. Użyj vcpkg.json plików manifestu dla dowolnego nowo utworzonego portu.

Użyj polecenia ./vcpkg format-manifest path/to/CONTROL , aby przekonwertować istniejący CONTROL plik na vcpkg.json plik.

Plik CONTROL zawiera metadane dotyczące portu. Składnia jest oparta na formacie Debianacontrol, chociaż obsługujemy tylko podzestaw pól opisanych tutaj.

Nazwy pól są uwzględniane w wielkości liter i uruchamiają wiersz bez wiodącego odstępu. Akapity są oddzielone co najmniej jednym pustym wierszem.

Akapit źródłowy

Pierwszy akapit w CONTROL pliku to akapit źródłowy. Musi mieć Sourcepole , Versioni Description . Pełny zestaw pól jest udokumentowany poniżej.

Przykłady

Source: ace
Version: 6.5.5
Description: The ADAPTIVE Communication Environment
Source: vtk
Version: 8.2.0
Port-Version: 2
Description: Software system for 3D computer graphics, image processing, and visualization
Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, libtheora, atlmfc (windows), eigen3, double-conversion, pugixml, libharu, sqlite3, netcdf-c

Rozpoznane pola

Źródło

Nazwa portu.

Podczas dodawania nowych portów należy pamiętać, że nazwa może powodować konflikt z innymi projektami, które nie są częścią programu vcpkg. Na przykład json konflikty z zbyt wieloma innymi projektami, dlatego należy dodać zakres do nazwy, na przykład taocpp-json w celu jego unikatowości. Sprawdź, czy nie ma konfliktów w wyszukiwarce, a także w innych kolekcjach pakietów.

Kolekcje pakietów do sprawdzania konfliktów:

Wersja

Wersja biblioteki.

To pole jest ciągiem alfanumerycznym, który może również zawierać .ciąg , _lub -. Nie podjęto żadnej próby zamawiania wersji; wszystkie wersje są traktowane jako ciągi bitowe i są oceniane tylko pod kątem równości.

W przypadku portów otagowanych wersji przestrzegamy następującej konwencji:

  1. Jeśli port jest zgodny ze schematem, taki jak va.b.c, usuwamy wiodący velement . W takim przypadku staje się .a.b.c
  2. Jeśli port zawiera własną nazwę w wersji, takiej jak curl-7_65_1, usuwamy wiodącą nazwę: 7_65_1

W przypadku portów wersji stopniowej użyjemy daty, do której dostęp do zatwierdzenia został użyty przez Ciebie, sformatowanej jako YYYY-MM-DD. Stwierdził inny sposób: jeśli ktoś miał maszynę czasową i poszedł do tej daty, zobaczy to zatwierdzenie jako najnowszy wzorzec.

Na przykład podane:

  1. Najnowsze zatwierdzenie zostało dokonane w dniach 2019-04-19
  2. Bieżący ciąg wersji to 2019-02-14-1
  3. Dzisiejsza data to 2019-06-01.

Następnie, jeśli zaktualizujesz wersję źródłową dzisiaj, należy nadać jej wersję 2019-06-01.

Wersja portu

Wersja portu.

To pole jest nieujemną liczbą całkowitą. Umożliwia ona przechowywanie wersji pliku portu oddzielnie od wersji źródłowej biblioteki; Jeśli wprowadzisz zmianę w porcie, bez zmiany bazowej wersji biblioteki, należy zwiększyć to pole o jeden (począwszy od 0, co jest równoważne żadnemu Port-Version polu). Po uaktualnieniu wersji biblioteki bazowej to pole powinno zostać ustawione z powrotem na 0 (tj. usunąć Port-Version pole).

Przykłady
Version: 1.0.5
Port-Version: 2
Version: 2019-03-21

opis

Opis biblioteki.

Zgodnie z konwencją pierwszy wiersz opisu jest podsumowaniem biblioteki. Poniżej przedstawiono opcjonalny szczegółowy opis. Szczegółowy opis może zawierać wiele wierszy, a wszystko zaczyna się od białych znaków.

Przykłady
Description: C++ header-only JSON library
Description: Mosquitto is an open source message broker that implements the MQ Telemetry Transport protocol versions 3.1 and 3.1.1.
  MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for "machine
  to machine" messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino.

Strona główna

Adres URL strony głównej biblioteki, w której użytkownik może znaleźć dodatkową dokumentację lub oryginalny kod źródłowy.

Przykład:

Homepage: https://github.com/Microsoft/vcpkg

Kompilacja — zależności

Rozdzielona przecinkami lista portów vcpkg, z których biblioteka ma zależność.

Narzędzie vcpkg nie rozróżnia zależności tylko do kompilacji i zależności środowiska uruchomieniowego. Należy określić pełną listę zależności wymaganych do pomyślnego użycia biblioteki.

Na przykład: websocketpp jest biblioteką tylko nagłówka i dlatego nie wymaga żadnych zależności w czasie instalacji. Jednak użytkownicy podrzędni potrzebują zwiększenia i rozszerzenia openssl, aby korzystać z biblioteki. W związku z tym lista składników websocketpp zwiększa i otwierasl jako zależności.

Jeśli port jest zależny od opcjonalnych funkcji innej biblioteki, można je określić przy użyciu portname[featurelist] składni. Jeśli port nie wymaga żadnych funkcji z zależności, należy to określić jako portname[core].

Zależności można filtrować na podstawie trypletu docelowego, aby obsługiwać różne wymagania. Te filtry używają tej samej składni co pole Obsługiwane poniżej i są ujęte w nawiasy po nazwie portu i liście funkcji.

Przykład
Build-Depends: rapidjson, curl[core,openssl] (!windows), curl[core,winssl] (windows)

Funkcje domyślne

Rozdzielona przecinkami lista opcjonalnych funkcji portów do zainstalowania domyślnie.

To pole jest opcjonalne.

Przykład
Default-Features: dynamodb, s3, kinesis

Obsługuje

Wyrażenie, które daje wartość true, gdy port ma zostać pomyślnie skompilowanych dla triplet.

Obecnie to pole jest używane tylko w testach ciągłej integracji, aby pominąć porty. W przyszłości ten mechanizm ma na celu ostrzeżenie użytkowników z wyprzedzeniem, że dane drzewo instalacji nie powiedzie się. W związku z tym to pole powinno być używane optymistycznie; w przypadkach, gdy port ma zakończyć się powodzeniem 10% czasu, nadal powinien być oznaczony jako "obsługiwany".

Aby uzyskać listę obsługiwanych identyfikatorów, zobacz Wyrażenia platformy w vcpkg.json dokumentacji manifestu.

Przykład
Supports: !(uwp|arm)

Akapity funkcji

W plikach można określić wiele opcjonalnych CONTROL funkcji. Musi mieć Feature pole i Description . Opcjonalnie może mieć Build-Depends pole. Musi być oddzielony od innych akapitów co najmniej jednym pustym wierszem.

Przykład

Source: vtk
Version: 8.2.0-2
Description: Software system for 3D computer graphics, image processing, and visualization
Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, libtheora, atlmfc (windows), eigen3, double-conversion, pugixml, libharu, sqlite3, netcdf-c

Feature: openvr
Description: OpenVR functionality for VTK
Build-Depends: sdl2, openvr

Feature: qt
Description: Qt functionality for VTK
Build-Depends: qt5

Feature: mpi
Description: MPI functionality for VTK
Build-Depends: mpi, hdf5[parallel]

Feature: python
Description: Python functionality for VTK
Build-Depends: python3

Rozpoznane pola

Funkcja

Nazwa funkcji.

opis

Opis funkcji używającej tej samej składni co pole portu Description .

Kompilacja — zależności

Lista zależności wymaganych do kompilowania i używania tej funkcji.

Po zainstalowaniu zależności ze wszystkich wybranych funkcji są łączone w celu utworzenia pełnej listy zależności dla kompilacji. To pole jest zgodne z tą samą składnią co Build-Depends w akapicie źródłowym.