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ć Source
pole , Version
i 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:
- Jeśli port jest zgodny ze schematem, taki jak
va.b.c
, usuwamy wiodącyv
element . W takim przypadku staje się .a.b.c
- 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:
- Najnowsze zatwierdzenie zostało dokonane w dniach 2019-04-19
- Bieżący ciąg wersji to
2019-02-14-1
- 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.