Share via


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/CONTROLo .

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-linuxou x64-osx. Eles podem ser substituídos por meio de:

  1. No modo de manifesto baseado em CMake, chamando set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "") antes da primeira project() diretiva
  2. No modo de manifesto baseado em MSBuild, definindo a VcpkgHostTriplet propriedade
  3. Na linha de comando, através do sinalizador --host-triplet=...
  4. 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).