vcpkg criar
vcpkg create <port-name> <url-to-source> [archive-file-name]
Gera um port para empacotar um projeto de código-fonte. Requer um nome de porta e uma URL para o código-fonte a ser empacotado.
Esse comando baixa o código-fonte da URL fornecida e cria um portfile.cmake
arquivo e um vcpkg.json
arquivo em um novo diretório de porta.
O comando pode salvar o código-fonte baixado usando um nome de arquivo específico, fornecido como um argumento opcional. Se o nome do arquivo morto não for especificado, o comando derivará um nome de arquivo de sua URL.
É importante entender que a porta criada pelo vcpkg create
comando serve apenas como ponto de partida e, na maioria dos casos, outras edições são necessárias para uma compilação bem-sucedida. Para obter mais orientações sobre como adicionar ports ao registro selecionado vcpkg, recomendamos consultar um de nossos tutoriais
vcpkg create zlib2 https://github.com/madler/zlib/archive/v1.2.11.tar.gz zlib-1.2.11.tar.gz
-- Downloading https://github.com/madler/zlib/archive/v1.2.11.tar.gz -> zlib-1.2.11.tar.gz...
-- Generated portfile: C:\src\vcpkg\ports\zlib2\portfile.cmake
-- Generated manifest: C:\src\vcpkg\ports\zlib2\vcpkg.json
-- To launch an editor for these new files, run
-- .\vcpkg edit zlib2
O comando executa as seguintes ações:
- Cria uma pasta de porta chamada
zlib2
contendo umportfile.cmake
arquivo e umvcpkg.json
arquivo. - Downloads
https://github.com/madler/zlib/archive/v1.2.11.tar.gz
comozlib-1.2.11.tar.gz
nodownloads
diretório.
O novo portfile.cmake
tem o conteúdo:
# Common Ambient Variables:
# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
# CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT}
# CURRENT_INSTALLED_DIR = ${VCPKG_ROOT_DIR}\installed\${TRIPLET}
# DOWNLOADS = ${VCPKG_ROOT_DIR}\downloads
# PORT = current port name (zlib, etc)
# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc)
# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic)
# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic)
# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm)
# VCPKG_TOOLCHAIN = ON OFF
# TRIPLET_SYSTEM_ARCH = arm x86 x64
# BUILD_ARCH = "Win32" "x64" "ARM"
# DEBUG_CONFIG = "Debug Static" "Debug Dll"
# RELEASE_CONFIG = "Release Static"" "Release DLL"
# VCPKG_TARGET_IS_WINDOWS
# VCPKG_TARGET_IS_UWP
# VCPKG_TARGET_IS_LINUX
# VCPKG_TARGET_IS_OSX
# VCPKG_TARGET_IS_FREEBSD
# VCPKG_TARGET_IS_ANDROID
# VCPKG_TARGET_IS_MINGW
# VCPKG_TARGET_EXECUTABLE_SUFFIX
# VCPKG_TARGET_STATIC_LIBRARY_SUFFIX
# VCPKG_TARGET_SHARED_LIBRARY_SUFFIX
#
# See additional helpful variables in /docs/maintainers/vcpkg_common_definitions.md
# Also consider vcpkg_from_* functions if you can; the generated code here is for any web accessable
# source archive.
# vcpkg_from_github
# vcpkg_from_gitlab
# vcpkg_from_bitbucket
# vcpkg_from_sourceforge
vcpkg_download_distfile(ARCHIVE
URLS "https://github.com/madler/zlib/archive/v1.2.11.tar.gz"
FILENAME "zlib-1.2.11.tar.gz"
SHA512 104c62ed1228b5f1199bc037081861576900eb0697a226cafa62a35c4c890b5cb46622e399f9aad82ee5dfb475bae26ae75e2bd6da3d261361b1c8b996970faf
)
vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE "${ARCHIVE}"
# (Optional) A friendly name to use instead of the filename of the archive (e.g.: a version number or tag).
# REF 1.0.0
# (Optional) Read the docs for how to generate patches at:
# https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/examples/patching.md
# PATCHES
# 001_port_fixes.patch
# 002_more_port_fixes.patch
)
# # Check if one or more features are a part of a package installation.
# # See /docs/maintainers/vcpkg_check_features.md for more details
# vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
# FEATURES # <- Keyword FEATURES is required because INVERTED_FEATURES are being used
# tbb WITH_TBB
# INVERTED_FEATURES
# tbb ROCKSDB_IGNORE_PACKAGE_TBB
# )
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
# OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2
# OPTIONS_RELEASE -DOPTIMIZE=1
# OPTIONS_DEBUG -DDEBUGGABLE=1
)
vcpkg_cmake_install()
# # Moves all .cmake files from /debug/share/zlib2/ to /share/zlib2/
# # See /docs/maintainers/ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.md for more details
# When you uncomment "vcpkg_cmake_config_fixup()", you need to add the following to "dependencies" vcpkg.json:
#{
# "name": "vcpkg-cmake-config",
# "host": true
#}
# vcpkg_cmake_config_fixup()
# Uncomment the line below if necessary to install the license file for the port
# as a file named `copyright` to the directory `${CURRENT_PACKAGES_DIR}/share/${PORT}`
# vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
O novo vcpkg.json
tem o conteúdo:
{
"name": "zlib2",
"version": "",
"homepage": "",
"description": "",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
}
],
"default-features": [],
"features": [
{
"name": "",
"description": "",
"dependencies": []
}
]
}
Você pode usar o edit
comando para modificar os arquivos de porta:
vcpkg edit zlib2
Comentários do vcpkg
O vcpkg é um projeto código aberto. Selecione um link para fornecer comentários: