Dependências do host
As ferramentas usadas em tempo de compilação por outros ports para gerar código ou implementar um sistema de compilação personalizado podem ser empacotadas dentro do vcpkg.
Consumir
Ao consumir uma porta como uma ferramenta, você deve definir o campo da "host"
dependência como true. Por exemplo:
{
"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
}
]
}
Nesse caso, o contoso-code-generator
e contoso-build-system
(incluindo quaisquer dependências transitivas) será criado e instalado para o trio de host antes contoso-http-library
de ser criado.
Observação
Os consumidores devem usar vcpkg.json
em vez de como formato de CONTROL
metadados. Você pode converter facilmente um arquivo existente CONTROL
usando vcpkg format-manifest /path/to/CONTROL
.
Em seguida, dentro do arquivo de porta do consumidor (contoso-http-library
no exemplo), a variável CURRENT_HOST_INSTALLED_DIR
CMake será definida e installed/<host-triplet>
deverá ser usada para localizar todos os ativos necessários. No exemplo, contoso-code-generator
pode ter instalado tools/contoso-code-generator/ccg.exe
o que o consumidor adicionaria ao seu caminho local por meio de:
# ports/contoso-http-library/portfile.cmake
vcpkg_add_to_path(${CURRENT_HOST_INSTALLED_DIR}/tools/contoso-code-generator)
Especificando o trio de host
Os trigêmeos de host padrão são escolhidos com base na arquitetura do host e no sistema operacional, por exemplo x64-windows
, , x64-linux
, ou x64-osx
. Eles podem ser substituídos por meio de:
- No modo de manifesto baseado em CMake, chamando
set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "")
antes da primeiraproject()
diretiva - No modo de manifesto baseado em MSBuild, definindo a
VcpkgHostTriplet
propriedade - Na linha de comando, por meio do sinalizador
--host-triplet=...
- A variável de ambiente
VCPKG_DEFAULT_HOST_TRIPLET
Produzir
A produção de uma ferramenta não tem requisitos especiais; As ferramentas devem ser criadas como um port padrão, seguindo todas as políticas e práticas normais. Notavelmente, eles devem construir contra TARGET_TRIPLET
, não HOST_TRIPLET
dentro do contexto de seu arquivo de porta.
Se o contexto atual for de compilação cruzada (TARGET_TRIPLET
não HOST_TRIPLET
é), então VCPKG_CROSSCOMPILING
será definido como um valor verdadeiro.
if(VCPKG_CROSSCOMPILING)
# This is a native build
else()
# This is a cross build
endif()
Portas somente host
Algumas portas só devem ser dependentes por meio de uma dependência de host; Portas de script e portas de ferramenta são exemplos comuns. Nesse caso, você pode usar a "native"
expressão de suporte para descrever isso. Isso suporta a expressão é verdadeira quando VCPKG_CROSSCOMPILING
é falsa (implicando que TARGET_TRIPLET == HOST_TRIPLET
).
VCPKG_USE_HOST_TOOLS
Defina essa opção do CMake para adicionar executáveis criados pelo vcpkg ao CMAKE_PROGRAM_PATH
.
e disponibilizá-los durante o processo de compilação.
Para que essa opção entre em vigor, ela deve ser definida antes de qualquer chamada para project()
em seu CMakeLists.txt
arquivo. A VCPKG_HOST_TRIPLET
variável também deve ser definida.
Somente as ferramentas instaladas tools
na pasta para o trio host são adicionadas ao CMAKE_PROGRAM_PATH
.
Efetivamente, os seguintes locais são adicionados:
${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools
${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools/*/bin