Dependências do host
Ferramentas usadas em tempo de compilação por outras portas para gerar código ou implementar um sistema de compilação personalizado podem ser empacotadas dentro de vcpkg.
Consumir
Ao consumir uma porta como 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 e (incluindo quaisquer dependências transitivas) será construído e contoso-build-system
instalado para o contoso-code-generator
triplete do host antes contoso-http-library
de ser construído.
Observação
Os consumidores devem usar vcpkg.json
em vez de como seu formato de CONTROL
metadados. Você pode facilmente converter um arquivo existente CONTROL
usando vcpkg format-manifest /path/to/CONTROL
o .
Em seguida, dentro do portfile 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 quaisquer 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 Triplete do 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, através 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 uma porta padrão, seguindo todas as políticas e práticas normais. Notavelmente, eles devem criar contra TARGET_TRIPLET
, não HOST_TRIPLET
dentro do contexto de seu portfile.
Se o contexto atual for 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
).
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de