Závislosti hostitelů
Nástroje používané v době sestavení jinými porty k vygenerování kódu nebo implementaci vlastního systému sestavení je možné zabalit do vcpkg.
Pohlcující
Při využívání portu jako nástroje je nutné nastavit pole závislosti "host"
na hodnotu True. Příklad:
{
"name": "contoso-http-library",
"version-string": "1.0.0",
"description": "Contoso's http runtime library",
"dependencies": [
"contoso-core-library",
{
"name": "contoso-code-generator",
"host": true
},
{
"name": "contoso-build-system",
"host": true
}
]
}
V takovém případě contoso-code-generator
se před sestavením sestaví a contoso-build-system
nainstaluje pro trojité připojení hostitele contoso-http-library
a nainstaluje se (včetně jakýchkoli tranzitivních závislostí).
Poznámka:
Spotřebitelé musí místo formátu metadat používat vcpkg.json
CONTROL
. Existující soubor můžete snadno převést CONTROL
pomocí vcpkg format-manifest /path/to/CONTROL
.
Potom v souboru portu příjemce (contoso-http-library
v příkladu) bude proměnná CURRENT_HOST_INSTALLED_DIR
CMake definována installed/<host-triplet>
a měla by být použita k vyhledání požadovaných prostředků. V tomto příkladu může být nainstalovánotools/contoso-code-generator/ccg.exe
, contoso-code-generator
které příjemce přidá do místní cesty prostřednictvím:
# ports/contoso-http-library/portfile.cmake
vcpkg_add_to_path(${CURRENT_HOST_INSTALLED_DIR}/tools/contoso-code-generator)
Určení trojitého hosta
Výchozí triplety hostitele jsou vybrány na základě architektury hostitele a operačního systému, například x64-windows
, x64-linux
nebo x64-osx
. Je možné je přepsat prostřednictvím:
- V režimu manifestu založeném na CMake volání
set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "")
před prvníproject()
direktivou - V režimu manifestu založeném na nástroji MSBuild nastavujte
VcpkgHostTriplet
vlastnost. - Na příkazovém řádku prostřednictvím příznaku
--host-triplet=...
- Proměnná prostředí
VCPKG_DEFAULT_HOST_TRIPLET
Produkování
Výroba nástroje nemá žádné zvláštní požadavky; nástroje by měly být vytvořené jako standardní port, a to podle všech běžných zásad a postupů. Zejména by se měly sestavovat proti TARGET_TRIPLET
souboru portů, nikoli HOST_TRIPLET
v kontextu jejich souboru portu.
Pokud je aktuální kontext křížově kompilovaný (TARGET_TRIPLET
není HOST_TRIPLET
), VCPKG_CROSSCOMPILING
nastaví se hodnota pravdivosti.
if(VCPKG_CROSSCOMPILING)
# This is a native build
else()
# This is a cross build
endif()
Porty jen pro hostitele
Některé porty by měly být závislé pouze prostřednictvím závislosti hostitele; Mezi běžné příklady patří porty skriptů a porty nástrojů. V tomto případě můžete k popisu použít "native"
výraz podpory. Tento výraz podporuje hodnotu true, pokud VCPKG_CROSSCOMPILING
je nepravda (což znamená, že TARGET_TRIPLET == HOST_TRIPLET
).
VCPKG_USE_HOST_TOOLS
Nastavte tuto možnost CMake pro přidání spustitelných souborů vytvořených nástrojem vcpkg do CMAKE_PROGRAM_PATH
.
a zpřístupněte je během procesu sestavení.
Aby se tato možnost projevila, musí být nastavená před jakýmkoli voláním project()
v CMakeLists.txt
souboru. Proměnná VCPKG_HOST_TRIPLET
musí být také nastavená.
Do složky jsou přidány CMAKE_PROGRAM_PATH
pouze nástroje nainstalované ve tools
složce pro triplet hostitele .
V podstatě se přidají následující umístění:
${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools
${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools/*/bin