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


Соглашения о макете каталога установки

В этой статье описываются соглашения о макете, используемые vcpkg для каталога установки. Каталог установки содержит файлы, установленные каждым пакетом. Авторы портов должны убедиться, что их пакеты соответствуют соглашениям, описанным в этой статье.

В классическом режиме каталог установки находится в $VCPKG_ROOT/installed расположении (где $VCPKG_ROOT находится путь установки vcpkg). В режиме манифеста каждый файл манифеста имеет соответствующий vcpkg_installed каталог. Расположение каталога установки можно изменить с --x-install-root помощью параметра. Независимо от режима работы макет каталога установки остается неизменным.

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

Корневой уровень каталога установки содержит следующее:

  • vcpkg Каталог, который отслеживает установленные пакеты и файлы
  • Каталог для каждого триплета. Каждый каталог триплета содержит файлы, установленные каждым пакетом.

Каталоги triplet

Выходные данные каждой установки пакета содержатся в трехуровневом каталоге. Например, пакеты, установленные для триплета x64-windows , находятся в installed/x64-windows каталоге.

Макет подкаталогов внутри каждого триплетного каталога совпадает:

Примечание.

Некоторые пакеты могут создавать файлы, которые не соответствуют соглашениям, описанным здесь. Авторы портов должны определить окончательное расположение созданных файлов на основе назначения каждого файла.

Подкаталог Тип файла
bin Выпуск .dll и .pdb файлы
debug/bin Отладка .dll и .pdb файлы
debug/lib Отладка.lib, , .so.dylibи .a файлы
debug/lib/manual-link Отладка.lib.so, и файлы, которые можно связать вручную, .dylibи .a файлы
debug/plugins/<group> Файлы отладки .dll во время выполнения
debug/lib/pkgconfig Отладка файлов pkgconfig (.pc)
include Файлы заголовков (.h, .hpp, .hxx)
lib Выпуск .lib, .so.dylib и .a файлы
lib/manual-link Выпуск.lib, доступный вручную, .soи .dylib.a файлы
lib/pkgconfig Pkgconfig-файлы (.pc)
plugins/<group> Файлы выпуска .dll для загрузки среды выполнения
share/<port> Дополнительные файлы, независимые от конфигурации
share/<port>/copyright Текст лицензии для пакета
share/<port>/usage Файл инструкций по интеграции со сборкой
share/<port>/vcpkg-port-config.cmake Определяемые портом функции и переменные CMake
share/<lowercase-package>/<package>Config.cmake Файлы интеграции CMake для find_package(package)
share/<cmakepackagename>/vcpkg-cmake-wrapper.cmake Переопределение CMake find_package(<cmakepackagename>)
share/pkgconfig Файлы pkgconfig независимой от конфигурации (.pc)
tools/<port> Исполняемые средства

bin каталоги и debug/bin каталоги

В Windows эти каталоги содержат файлы DLL и PDB для конфигурации выпуска и отладки соответственно. Любой исполняемый файл, созданный портом, должен быть перемещен в tools/<port> каталог.

include

Содержит файлы заголовков (.h, .hpp, .hxx). Макет в этом каталоге должен отражать предполагаемое использование файлов заголовков пакета. Например, contoso библиотека, которая намерена использовать #include <contoso/contoso.h> , должна предоставить файл include/contoso/contoso.hзаголовка.

vcpkg запрещает установку некоторых зарезервированных имен файлов заголовков include в корне каталога, например err.h, , user.htime.hи других. Библиотеки, предоставляющие запрещенное имя файла заголовка, должны помещать их файлы заголовков в include/<port> каталог. Если библиотека намерена заменить системный файл заголовка, она должна задать политику в ней VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS portfile.cmake.

lib каталоги и debug/lib каталоги

Содержит статические библиотеки, импорт библиотеки (в Windows) и общие библиотеки (не в Windows).

Содержит библиотеки, которые должны быть связаны вручную.

Файлы, которые могут вызвать проблемы при автоматическом размещении lib/manual-link связанных папок вместо lib каталога. Например, если библиотека предназначена для определения main() функции для программы.

lib/pkgconfig, debug/lib/pkgconfig и share/pkgconfig каталоги

Содержит файлы интеграции pkgconfig (.pc). Библиотека не должна одновременно предоставлять файлы, зависящие от конфигурации и независимой от конфигурации. Например, не устанавливайте и share/pkgconfig/contoso.pcне устанавливайтеlib/pkgconfig/contoso.pc.

plugins/<group> и debug/plugins/<group>.

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

share/<port>

Содержит другие файлы, установленные каждым портом. Например, файлы SPDX, скрипты и т. д.

vcpkg ожидает, что порты предоставляют copyright файл, содержащий сведения о лицензии установленного пакета. Дополнительные сведения см. в руководстве по обслуживанию .

share/<port>/usage

Текстовый файл с инструкциями по интеграции библиотеки в проект. Дополнительные сведения см. в руководстве по предоставлению документации по использованию пакетов .

share/<lowercase-package>/<package>Config.cmake, share/<package>/<package>-config.cmake

Файлы интеграции CMake должны размещаться в папке share и соблюдать правила CMake для find_package(package) в CONFIG режиме.

Например, если порт ожидает предоставления find_package(MyPackage REQUIRED), он должен предоставить либо share/mypackage/MyPackageConfig.cmake share/mypackage/MyPackage-config.cmake.

Если пакет предоставляет файлы интеграции CMake, vcpkg_cmake_config_fixup() Вспомогательные функции следует вызвать для исправления любых не перемещаемых путей и слияния конфигураций сборки.

tools/<port>

Внимание

vcpkg — это в первую очередь диспетчер зависимостей библиотеки C++. Авторы портов должны быть преднамеренными при принятии решения о включении средств в выходные данные установки. Например, рекомендуется установить только исполняемый файл выпуска, если средство отладки не требуется.

Исполняемые файлы выпуска и отладки должны быть предоставлены, если исполняемые файлы предназначены для использования среды выполнения.

Содержит исполняемые средства, созданные портом. Настоятельно рекомендуется, но не обязательно, чтобы каждый установленный исполняемый файл переходит в подкаталог, соответствующий имени порта, создающего его. Например, contoso порт может установить в ContosoGenerator.exe tools/contoso/ContosoGenerator.exe.

Некоторые порты требуют, чтобы их исполняемые файлы входить в bin подкаталог, в этом случае рекомендуется tools/<port>/binиспользовать шаблон.