Sdílet prostřednictvím


Závislosti hostitelů

Nástroje používané v době sestavení jinými porty k vygenerování kódu nebo implementaci vlastního systému sestavení je možné zabalit do vcpkg.

Pohlcující

Při využívání portu jako nástroje je nutné nastavit pole závislosti "host" na hodnotu True. Příklad:

{
    "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
        }
    ]
}

V takovém případě contoso-code-generator se před sestavením sestaví a contoso-build-system nainstaluje pro trojité připojení hostitele contoso-http-library a nainstaluje se (včetně jakýchkoli tranzitivních závislostí).

Poznámka:

Spotřebitelé musí místo formátu metadat používat vcpkg.json CONTROL . Existující soubor můžete snadno převést CONTROL pomocí vcpkg format-manifest /path/to/CONTROL.

Potom v souboru portu příjemce (contoso-http-library v příkladu) bude proměnná CURRENT_HOST_INSTALLED_DIR CMake definována installed/<host-triplet> a měla by být použita k vyhledání požadovaných prostředků. V tomto příkladu může být nainstalovánotools/contoso-code-generator/ccg.exe, contoso-code-generator které příjemce přidá do místní cesty prostřednictvím:

# ports/contoso-http-library/portfile.cmake
vcpkg_add_to_path(${CURRENT_HOST_INSTALLED_DIR}/tools/contoso-code-generator)

Určení trojitého hosta

Výchozí triplety hostitele jsou vybrány na základě architektury hostitele a operačního systému, například x64-windows, x64-linuxnebo x64-osx. Je možné je přepsat prostřednictvím:

  1. V režimu manifestu založeném na CMake volání set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "") před první project() direktivou
  2. V režimu manifestu založeném na nástroji MSBuild nastavujte VcpkgHostTriplet vlastnost.
  3. Na příkazovém řádku prostřednictvím příznaku --host-triplet=...
  4. Proměnná prostředí VCPKG_DEFAULT_HOST_TRIPLET

Produkování

Výroba nástroje nemá žádné zvláštní požadavky; nástroje by měly být vytvořené jako standardní port, a to podle všech běžných zásad a postupů. Zejména by se měly sestavovat proti TARGET_TRIPLETsouboru portů, nikoli HOST_TRIPLET v kontextu jejich souboru portu.

Pokud je aktuální kontext křížově kompilovaný (TARGET_TRIPLET není HOST_TRIPLET), VCPKG_CROSSCOMPILING nastaví se hodnota pravdivosti.

if(VCPKG_CROSSCOMPILING)
    # This is a native build
else()
    # This is a cross build
endif()

Porty jen pro hostitele

Některé porty by měly být závislé pouze prostřednictvím závislosti hostitele; Mezi běžné příklady patří porty skriptů a porty nástrojů. V tomto případě můžete k popisu použít "native" výraz podpory. Tento výraz podporuje hodnotu true, pokud VCPKG_CROSSCOMPILING je nepravda (což znamená, že TARGET_TRIPLET == HOST_TRIPLET).

VCPKG_USE_HOST_TOOLS

Nastavte tuto možnost CMake pro přidání spustitelných souborů vytvořených nástrojem vcpkg do CMAKE_PROGRAM_PATH. a zpřístupněte je během procesu sestavení.

Aby se tato možnost projevila, musí být nastavená před jakýmkoli voláním project() v CMakeLists.txt souboru. Proměnná VCPKG_HOST_TRIPLET musí být také nastavená.

Do složky jsou přidány CMAKE_PROGRAM_PATHpouze nástroje nainstalované ve tools složce pro triplet hostitele . V podstatě se přidají následující umístění:

  • ${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools
  • ${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools/*/bin