Зависимости узлов
Средства, используемые во время сборки другими портами для создания кода или реализации пользовательской системы сборки, можно упаковать внутри 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-windows
x64-linux
, илиx64-osx
. Их можно переопределить с помощью:
- В режиме манифеста на основе CMake вызовите
set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "")
перед первойproject()
директивой - В режиме манифеста на основе MSBuild задав
VcpkgHostTriplet
свойство - В командной строке с помощью флага
--host-triplet=...
- Переменная среды
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
).
Задайте этот параметр 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
Отзыв о vcpkg
vcpkg — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: