Соглашения о макете каталога установки
В этой статье описываются соглашения о макете, используемые 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.h
time.h
и других.
Библиотеки, предоставляющие запрещенное имя файла заголовка, должны помещать их файлы заголовков в include/<port>
каталог. Если библиотека намерена заменить системный файл заголовка, она должна задать политику в ней VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS
portfile.cmake
.
lib
каталоги и debug/lib
каталоги
Содержит статические библиотеки, импорт библиотеки (в Windows) и общие библиотеки (не в Windows).
lib/manual-link
каталоги и debug/lib/manual-link
каталоги
Содержит библиотеки, которые должны быть связаны вручную.
Файлы, которые могут вызвать проблемы при автоматическом размещении 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, скрипты и т. д.
share/<port>/copyright
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
использовать шаблон.