Exemplo de repositório do GitHub de empacotamento: libogg

Crie o arquivo de manifesto

O arquivo de manifesto (chamado vcpkg.json) é um arquivo json que descreve os metadados do pacote.

Para libogg, criaremos o arquivo ports/libogg/vcpkg.json com o seguinte conteúdo:

{
  "name": "libogg",
  "version-string": "1.3.3",
  "description": "Ogg is a multimedia container format, and the native file and stream format for the Xiph.org multimedia codecs."
}

Você pode formatar o arquivo de manifesto de acordo com nossas especificações com vcpkg format-manifest ports/libogg/vcpkg.jsono .

Criar o arquivo de porta

portfile.cmake Descreve como compilar e instalar o pacote. Primeiro baixamos o projeto do Github com vcpkg_from_github:

vcpkg_from_github(
    OUT_SOURCE_PATH SOURCE_PATH
    REPO xiph/ogg
    REF v1.3.3
    SHA512 0bd6095d647530d4cb1f509eb5e99965a25cc3dd9b8125b93abd6b248255c890cf20710154bdec40568478eb5c4cde724abfb2eff1f3a04e63acef0fbbc9799b
    HEAD_REF master
)

As partes importantes a serem atualizadas são REPO para o caminho do repositório do GitHub, para uma tag/commit estável a ser usada e com a soma de verificação do arquivo baixado (você pode obter isso facilmente configurando-o como 0, REF tentando instalar o pacote e SHA512 copiando a soma de verificação).

Finalmente, configuramos o projeto com o CMake, instalamos o pacote e copiamos sobre o arquivo de licença:

vcpkg_cmake_configure(SOURCE_PATH ${SOURCE_PATH})
vcpkg_cmake_install()
file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/libogg" RENAME copyright)

Verifique a documentação e vcpkg_cmake_configurevcpkg_cmake_install se o seu pacote precisa de opções adicionais.

Agora você pode executar vcpkg install libogg para compilar e instalar o pacote.

Exemplo sugerido de portfiles

ports/ No diretório há muitas bibliotecas que podem ser usadas como exemplos, incluindo muitas que não são baseadas no CMake.

  • Bibliotecas somente de cabeçalho
    • rapidjson
    • intervalo-v3
  • Baseado em MSBuild
    • Chakracore
  • Não-CMake, sistema de compilação personalizado
    • openssl
    • ffmpeg