Ler en inglés

Compartir por


Ejemplo de archivos de archivo de empaquetado: zlib

Arranque con create

En primer lugar, busque un archivo accesible globalmente de los orígenes de la biblioteca. Se admiten todos los archivos ZIP, gzip y bzip. Prefiere fuertemente fuentes oficiales o espejos sobre espejos no oficiales.

Al examinar el sitio web de zlib, la dirección URL http://zlib.net/zlib-1.2.13.tar.gz es adecuada.

En segundo lugar, determine un nombre de paquete adecuado. Debe ser ASCII, en minúsculas y reconocible para alguien que conoce el "nombre humano" de la biblioteca. Si la biblioteca ya está empaquetada en otro administrador de paquetes, prefiera ese nombre.

Puesto que zlib ya está empaquetado como zlib, usaremos el nombre zlib2 para este ejemplo.

Por último, si el nombre del servidor para el archivo no es muy descriptivo (como descargar una confirmación comprimida o una rama de GitHub), elija un buen nombre de archivo del formulario <packagename>-<version>.zip.

zlib-1.2.13.zip es un nombre correcto, por lo que no se necesita ningún cambio.

Toda esta información se puede pasar al create comando , que descargará los orígenes y arrancará el proceso de empaquetado dentro ports/<packagename>de .

PowerShell
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

Creación del archivo de manifiesto

Además del elemento generado ports/<package>/portfile.cmake, también necesitamos un ports/<package>/vcpkg.json archivo . Este archivo es un conjunto sencillo de campos que describen los metadatos del paquete.

Para zlib2, crearemos el archivo ports/zlib2/vcpkg.json con el siguiente contenido:

JSON
{
  "name": "zlib2",
  "version": "1.2.13",
  "description": "A Massively Spiffy Yet Delicately Unobtrusive Compression Library"
}

Ajuste del archivo de puerto generado

El generado portfile.cmake necesitará alguna edición para empaquetar correctamente la mayoría de las bibliotecas comodín, pero podemos empezar probando la compilación.

PowerShell
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

En este momento, es cuestión de leer los mensajes de error y los archivos de registro a la vez que mejora constantemente la calidad del archivo de puerto. Zlib requería proporcionar una copia discreta de la LICENCIA para copiar en el paquete, suprimir la compilación y la instalación de ejecutables y encabezados, y quitar las bibliotecas estáticas después de instalarlas.

Archivos de puerto de ejemplo sugeridos

En el ports/ directorio hay muchas bibliotecas que se pueden usar como ejemplos, incluidas muchas que no se basan en CMake.

  • Solo bibliotecas de encabezado
    • rapidjson
    • range-v3
  • Basado en MSBuild
    • chakracore
  • No CMake, sistema de compilación personalizado
    • openssl
    • ffmpeg