Пример упаковки архивных файлов: zlib
Начальная загрузка с create
Сначала найдите глобально доступный архив источников библиотеки. Поддерживаются zip, gzip и bzip. Настоятельно предпочитать официальные источники или зеркало по сравнению с неофициальными зеркало.
Глядя на веб-сайт zlib, URL-адрес http://zlib.net/zlib-1.2.13.tar.gz
выглядит соответствующим образом.
Во-вторых, определите подходящее имя пакета. Это должно быть ASCII, строчные буквы и узнаваемый кому-то, кто знает "человеческое имя библиотеки". Если библиотека уже упакована в другой диспетчер пакетов, предпочитайте это имя.
Так как zlib уже упаковано как zlib, мы будем использовать имя zlib2 для этого примера.
Наконец, если имя сервера для архива не очень описательно (например, скачивание zippped фиксации или ветви из GitHub), выберите хорошее имя архива формы <packagename>-<version>.zip
.
zlib-1.2.13.zip
является прекрасным именем, поэтому изменения не требуются.
Затем все эти сведения можно передать в create
команду, которая скачайте источники и загрузит процесс упаковки внутри ports/<packagename>
.
PS D:\src\vcpkg> .\vcpkg create zlib2 http://zlib.net/zlib-1.2.13.tar.gz zlib-1.2.13.tar.gz
-- Downloading http://zlib.net/zlib-1.2.13.tar.gz -> zlib-1.2.13.tar.gz...
-- Generated portfile: D:\src\vcpkg\ports\zlib2\portfile.cmake
-- Generated manifest: D:\src\vcpkg\ports\zlib2\vcpkg.json
-- To launch an editor for these new files, run
-- .\vcpkg edit zlib2
Создание файла манифеста
Помимо созданного ports/<package>/portfile.cmake
файла, нам также нужен ports/<package>/vcpkg.json
файл. Этот файл представляет собой простой набор полей, описывающих метаданные пакета.
Для zlib2 мы создадим файл ports/zlib2/vcpkg.json
со следующим содержимым:
{
"name": "zlib2",
"version": "1.2.13",
"description": "A Massively Spiffy Yet Delicately Unobtrusive Compression Library"
}
Настройка созданного порта
portfile.cmake
Для правильного упаковки большинства библиотек в диком режиме потребуется некоторое редактирование, однако мы можем начать, пробовав сборку.
PS D:\src\vcpkg> .\vcpkg install zlib2
Computing installation plan...
The following packages will be built and installed:
zlib2[core]:x64-uwp
Starting package 1/1: zlib2:x64-uwp
Building package zlib2[core]:x64-uwp...
-- Using cached C:/src/vcpkg/downloads/zlib-1.2.13.tar.gz
-- Cleaning sources at C:/src/vcpkg/buildtrees/zlib2/src/1.2.13-deec42f53b.clean. Pass --editable to vcpkg to reuse sources.
-- Extracting source C:/src/vcpkg/downloads/zlib-1.2.13.tar.gz
-- Applying patch cmake_dont_build_more_than_needed.patch
-- Using source at C:/src/vcpkg/buildtrees/zlib2/src/1.2.13-deec42f53b.clean
-- Configuring x64-uwp
-- Building x64-uwp-dbg
-- Building x64-uwp-rel
-- Installing: C:/src/vcpkg/packages/zlib2_x64-uwp/share/zlib2/copyright
-- Performing post-build validation
Include files should not be duplicated into the /debug/include directory. If this cannot be disabled in the project cmake, use
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
/debug/share should not exist. Please reorganize any important files, then use
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
The software license must be available at ${CURRENT_PACKAGES_DIR}/share/zlib2/copyright
Found 3 error(s). Please correct the portfile:
D:\src\vcpkg\ports\zlib2\portfile.cmake
На этом этапе речь идет о чтении сообщений об ошибках и файлах журналов, постоянно повышая качество портфайла. Zlib требует предоставления дискретной копии ЛИЦЕНЗИИ для копирования в пакет, подавления сборки и установки исполняемых файлов и заголовков, а также удаления статических библиотек после их установки.
Рекомендуемые примеры портов
В каталоге ports/
есть множество библиотек, которые можно использовать в качестве примеров, включая многие, которые не основаны на CMake.
- Только библиотеки заголовков
- rapidjson
- range-v3
- На основе MSBuild
- chakracore
- Non-CMake, настраиваемая система сборки
- openssl
- ffmpeg