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:

  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, por meio 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 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