Dipendenze dell'host
Gli strumenti usati in fase di compilazione da altre porte per generare codice o implementare un sistema di compilazione personalizzato possono essere inseriti in un pacchetto all'interno di vcpkg.
Consumo
Quando si utilizza una porta come strumento, è necessario impostare il campo della "host"
dipendenza su true. Ad esempio:
{
"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
}
]
}
In questo caso, contoso-code-generator
e contoso-build-system
(incluse le eventuali dipendenze transitive) verranno compilati e installati per il triplo host prima contoso-http-library
della compilazione.
Nota
I consumer devono usare vcpkg.json
anziché CONTROL
come formato di metadati. È possibile convertire facilmente un file esistente CONTROL
usando vcpkg format-manifest /path/to/CONTROL
.
Quindi, all'interno del file di porta del consumer (contoso-http-library
nell'esempio), la variabile CURRENT_HOST_INSTALLED_DIR
CMake verrà definita in installed/<host-triplet>
e deve essere usata per individuare gli asset necessari. Nell'esempio potrebbe contoso-code-generator
essere stato installato tools/contoso-code-generator/ccg.exe
il consumer che aggiunge al percorso locale tramite:
# ports/contoso-http-library/portfile.cmake
vcpkg_add_to_path(${CURRENT_HOST_INSTALLED_DIR}/tools/contoso-code-generator)
Specifica del tripletto host
Le triplette host predefinite vengono scelte in base all'architettura host e al sistema operativo, ad esempio x64-windows
, x64-linux
o x64-osx
. Possono essere sottoposti a override tramite:
- In modalità manifesto basata su CMake chiamare
set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "")
prima della primaproject()
direttiva - Nella modalità manifesto basata su MSBuild impostare la
VcpkgHostTriplet
proprietà - Nella riga di comando, tramite il flag
--host-triplet=...
- La variabile di ambiente
VCPKG_DEFAULT_HOST_TRIPLET
Produzione
La produzione di uno strumento non ha requisiti speciali; gli strumenti devono essere creati come porta standard, seguendo tutti i criteri e le procedure normali. In particolare, devono essere compilati in TARGET_TRIPLET
, non HOST_TRIPLET
all'interno del contesto del file di porta.
Se il contesto corrente esegue la compilazione incrociata (TARGET_TRIPLET
non HOST_TRIPLET
è ), VCPKG_CROSSCOMPILING
verrà impostato su un valore di verità.
if(VCPKG_CROSSCOMPILING)
# This is a native build
else()
# This is a cross build
endif()
Porte solo host
Alcune porte devono essere dipendenti solo da una dipendenza host; porte script e porte degli strumenti sono esempi comuni. In questo caso, è possibile usare l'espressione "native"
supports per descriverlo. Questo supporta l'espressione è true quando VCPKG_CROSSCOMPILING
è false (implicando che TARGET_TRIPLET == HOST_TRIPLET
).
VCPKG_USE_HOST_TOOLS
Impostare questa opzione CMake per aggiungere file eseguibili compilati da vcpkg a CMAKE_PROGRAM_PATH
.
e renderli disponibili durante il processo di compilazione.
Per rendere effettiva questa opzione, è necessario impostarla prima di qualsiasi chiamata a project()
nel CMakeLists.txt
file. La VCPKG_HOST_TRIPLET
variabile deve essere impostata anche.
Solo gli strumenti installati nella tools
cartella per il triplet host vengono aggiunti a CMAKE_PROGRAM_PATH
.
In effetti, vengono aggiunte le posizioni seguenti:
${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools
${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools/*/bin