Прочитать на английском

Поделиться через


Зависимости узлов

Средства, используемые во время сборки другими портами для создания кода или реализации пользовательской системы сборки, можно упаковать внутри vcpkg.

Потребление

При использовании порта в качестве средства необходимо задать для поля зависимости "host" значение true. Например:

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

В этом случае contoso-code-generator contoso-build-system перед сборкой будет создано и установлено contoso-http-library (включая все транзитивные зависимости).

Примечание

Потребители должны использовать vcpkg.json вместо CONTROL формата метаданных. Вы можете легко преобразовать существующий CONTROL файл с помощью vcpkg format-manifest /path/to/CONTROL.

Затем в файле portfile потребителя (contoso-http-library в примере) переменная CURRENT_HOST_INSTALLED_DIR CMake будет определена installed/<host-triplet> и должна использоваться для поиска необходимых ресурсов. В примере может быть установленоtools/contoso-code-generator/ccg.exe, contoso-code-generator что потребитель добавит в свой локальный путь через:

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

Указание триплета узла

Триплеты узлов по умолчанию выбираются на основе архитектуры узла и операционной системы, напримерx64-windowsx64-linux, илиx64-osx. Их можно переопределить с помощью:

  1. В режиме манифеста на основе CMake вызовите set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "") перед первой project() директивой
  2. В режиме манифеста на основе MSBuild задав VcpkgHostTriplet свойство
  3. В командной строке с помощью флага --host-triplet=...
  4. Переменная среды VCPKG_DEFAULT_HOST_TRIPLET

Производства

Производство инструмента не имеет особых требований; Средства должны создаваться как стандартный порт, следуя всем обычным политикам и методикам. В частности, они должны создаваться на TARGET_TRIPLETоснове, а не HOST_TRIPLET в контексте их портфайла.

Если текущий контекст является перекрестным компиляцией (TARGET_TRIPLET не HOST_TRIPLETявляется), то VCPKG_CROSSCOMPILING будет задано значение truey.

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

Порты только для узлов

Некоторые порты должны зависеть только от зависимостей узла; Порты скриптов и порты инструментов являются общими примерами. В этом случае можно использовать выражение поддержки "native" , чтобы описать это. Это выражение поддерживает значение true, если VCPKG_CROSSCOMPILING имеет значение false (подразумевающее это TARGET_TRIPLET == HOST_TRIPLET).

VCPKG_USE_HOST_TOOLS

Задайте этот параметр CMake, чтобы добавить исполняемые файлы, созданные vcpkg CMAKE_PROGRAM_PATHв . и сделать их доступными во время процесса сборки.

Чтобы этот параметр вступить в силу, его необходимо установить перед любым вызовом project() в CMakeLists.txt файле. Переменная VCPKG_HOST_TRIPLET также должна быть задана.

В CMAKE_PROGRAM_PATHпапку добавляются только средства, установленные в tools папке для триплета узла. Фактически добавляются следующие расположения:

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