V tomto kurzu se dozvíte, jak zabalit knihovnu pro vcpkg pomocí vlastního překrytí. Než budete pokračovat, doporučujeme přečíst si instalační a používat balíčky s kurzem CMake .
V tomto kurzu ve Windows se jako kompilátor pro vývoj jazyka C++ používá MSVC sady Visual Studio.
1. Nastavení vcpkg
Klonování úložiště
Prvním krokem je klonování úložiště vcpkg z GitHubu. Úložiště obsahuje skripty pro získání spustitelného souboru vcpkg a registru kurátorovaných opensourcových knihoven spravovaných komunitou vcpkg. Provedete to spuštěním tohoto příkazu:
Console
git clone https://github.com/microsoft/vcpkg.git
Kurátorovaný registr vcpkg je sada více než 2 000 opensourcových knihoven. Tyto knihovny ověřily kanály kontinuální integrace vcpkg, aby spolupracovaly. I když úložiště vcpkg neobsahuje zdrojový kód pro tyto knihovny, obsahuje recepty a metadata pro sestavení a instalaci v systému.
Spuštění skriptu bootstrap
Teď, když jste naklonovali úložiště vcpkg, přejděte do vcpkg adresáře a spusťte spouštěcí skript:
Console
cd vcpkg && bootstrap-vcpkg.bat
Console
cd vcpkg; .\bootstrap-vcpkg.bat
Console
cd vcpkg && ./bootstrap-vcpkg.sh
Skript bootstrap provádí kontroly požadovaných součástí a stáhne spustitelný soubor vcpkg.
A je to! Vcpkg je nastavena a připravena k použití.
2. Konfigurace VCPKG_ROOT proměnné prostředí
Pokud chcete nastavit VCPKG_ROOT proměnné prostředí, spusťte následující příkazy:
Nastavení proměnných prostředí pomocí export příkazu ovlivní pouze aktuální relaci prostředí. Pokud chcete tuto změnu provést trvale napříč relacemi, přidejte export příkaz do skriptu profilu vašeho prostředí (např~/.bashrc. ).~/.zshrc
Console
set "VCPKG_ROOT=C:\path\to\vcpkg"
set PATH=%VCPKG_ROOT%;%PATH%
Poznámka
Nastavení proměnných prostředí tímto způsobem ovlivní pouze aktuální relaci terminálu. Pokud chcete tyto změny provést trvale ve všech relacích, nastavte je na panelu Proměnných systému Windows.
Nastavení proměnných prostředí tímto způsobem ovlivní pouze aktuální relaci terminálu. Pokud chcete tyto změny provést trvale ve všech relacích, nastavte je na panelu Proměnných systému Windows.
Nastavení VCPKG_ROOT říká vcpkg, kde se nachází vaše instance vcpkg.
Přidáním zajistíte, že PATH můžete spouštět příkazy vcpkg přímo z prostředí.
V custom-overlay adresáři vytvořte složku s názvem vcpkg-sample-library.
4. Nastavení souborů portů
Nejprve ve složce vytvořte vcpkg.json soubor custom-overlay\vcpkg-sample-library s následujícím obsahem:
JSON
{
"name": "vcpkg-sample-library",
"version": "1.0.2",
"homepage": "https://github.com/microsoft/vcpkg-docs/tree/cmake-sample-lib",
"description": "A sample C++ library designed to serve as a foundational example for a tutorial on packaging libraries with vcpkg.",
"license": "MIT",
"dependencies": [
{
"name" : "vcpkg-cmake",
"host" : true
},
{
"name" : "vcpkg-cmake-config",
"host" : true
},
"fmt"
]
}
Soubor vcpkg.json slouží jako manifest, který definuje metadata a závislosti pro knihovnu C++ a poskytuje vcpkg potřebné informace k sestavení, instalaci a správě balíčku.
name: Určuje název knihovny. Používá se jako identifikátor balíčku.
version: Označuje číslo verze knihovny.
homepage: Adresa URL domovské stránky projektu, často jeho úložiště. Užitečné pro ty, kteří chtějí vědět více nebo přispívat.
description: Stručný text popisující, co knihovna dělá. Toto je pro dokumentaci a uživatele.
license: Určuje licenci, pod kterou se knihovna distribuuje.
dependencies: Pole obsahující seznam závislostí, které knihovna potřebuje.
name: vcpkg-cmake: Určuje závislost na vcpkg-cmake, která poskytuje funkce CMake a makra běžně používané v portech vcpkg.
host: true: Určuje, že jde o závislost hostitele, což znamená, že vcpkg-cmake se vyžaduje pro sestavení balíčku, ale ne pro jeho použití.
name: vcpkg-cmake-config: Určuje závislost , vcpkg-cmake-configkterá pomáhá při používání konfiguračních skriptů CMake.
fmt: Určuje závislost za běhu na knihovně fmt . To znamená, že fmt se vyžaduje pro sestavení i použití balíčku.
Poskytnutí dokumentace k používání portů umožňuje uživatelům snadno je přijmout ve svých projektech. Důrazně doporučujeme poskytnout usage soubor v adresáři portu (ports/<port name>/usage), který popisuje minimální kroky potřebné k integraci se systémem sestavení. Pokud chcete určit správné pokyny k použití, doporučujeme postupovat podle pokynů upstreamu. V případě, že upstream neposkytuje informace o využití, může být nutné projít jejich systém sestavení a najít exportované cíle.
Nakonec v adresáři vytvořte portfile.cmake soubor custom-overlay\vcpkg-sample-library s následujícím obsahem:
cmake
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO Microsoft/vcpkg-docs
REF "${VERSION}"
SHA512 0# This is a temporary value. We will modify this value in the next section.
HEAD_REF cmake-sample-lib
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(PACKAGE_NAME "my_sample_lib")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(INSTALL"${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
configure_file("${CMAKE_CURRENT_LIST_DIR}/usage""${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" COPYONLY)
Definuje portfile , jak stáhnout, sestavit, nainstalovat a zabalit konkrétní knihovnu C++ z GitHubu pomocí vcpkg.
vcpkg_check_linkage(ONLY_STATIC_LIBRARY): Určuje, že pro tento balíček je podporováno pouze statické propojení.
vcpkg_from_github: Spustí funkci pro stažení zdrojového kódu z úložiště GitHub.
OUT_SOURCE_PATH SOURCE_PATH: Nastaví adresář, ve kterém se bude extrahovat zdrojový kód.
REPO Microsoft/vcpkg-docs: Úložiště GitHub obsahující zdrojový kód.
REF "${VERSION}": Verze zdrojového kódu ke stažení.
SHA512 0: Zástupný symbol hodnoty hash SHA-512 zdrojového kódu pro ověření integrity.
HEAD_REF main: Určuje výchozí větev úložiště.
vcpkg_cmake_configure: Nakonfiguruje projekt pomocí CMake a nastaví sestavení.
SOURCE_PATH "${SOURCE_PATH}": Cesta ke zdrojovému kódu staženého dříve.
vcpkg_cmake_install(): Sestaví a nainstaluje balíček pomocí CMake.
vcpkg_cmake_config_fixup(PACKAGE_NAME "my_sample_lib"): Opravuje konfigurační soubory balíčku CMake, aby byly kompatibilní s vcpkg.
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include"): Odstraní adresář include z instalace ladění, aby se zabránilo překrývání.
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION ...): Nainstaluje soubor LICENSE do adresáře sdílené složky balíčku a přejmenuje ho na autorská práva.
configure_file("${CMAKE_CURRENT_LIST_DIR}/usage" ...): Zkopíruje soubor s pokyny k použití do adresáře sdílené složky balíčku.
Zobrazí se dlouhá chybová zpráva. Naskenujte výstup, dokud nenajdete:
Console
Expected hash: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Actual hash: 4202125968a01219deeee14b81e1d476dab18d968425ba36d640816b0b3db6168f8ccf4120ba20526e9930c8c7294e64d43900ad2aef9d5f28175210d0c3a417
Zkopírujte hodnotu Actual hash 4202125968a01219deeee14b81e1d476dab18d968425ba36d640816b0b3db6168f8ccf4120ba20526e9930c8c7294e64d43900ad2aef9d5f28175210d0c3a417a nahraďte SHA512 hodnotu v hodnotě portfile.cmake její hodnotou.
Computing installation plan...
The following packages will be built and installed:
vcpkg-sample-library:x64-windows -> 1.0.2 -- C:\Users\dev\demo\custom-overlay\vcpkg-sample-library
Detecting compiler hash for triplet x64-windows...
Restored 0 package(s) from C:\Users\dev\AppData\Local\vcpkg\archives in 174 us. Use --debug to see more details.
Installing 1/1 vcpkg-sample-library:x64-windows...
Building vcpkg-sample-library:x64-windows...
-- Installing port from location: C:\Users\dev\demo\custom-overlay\vcpkg-sample-library
-- Note: vcpkg-sample-library only supports static library linkage. Building static library.
-- Using cached Microsoft-vcpkg-docs-1.0.2.tar.gz.
-- Cleaning sources at C:/Users/dev/demo/vcpkg/buildtrees/vcpkg-sample-library/src/1.0.2-2aff836404.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source C:/Users/dev/demo/vcpkg/downloads/Microsoft-vcpkg-docs-1.0.2.tar.gz
-- Using source at C:/Users/dev/demo/vcpkg/buildtrees/vcpkg-sample-library/src/1.0.2-2aff836404.clean
-- Configuring x64-windows
-- Building x64-windows-dbg
-- Building x64-windows-rel
-- Installing: C:/Users/dev/demo/vcpkg/packages/vcpkg-sample-library_x64-windows/share/vcpkg-sample-library/copyright
-- Performing post-build validation
Stored binaries in 1 destinations in 94 ms.
Elapsed time to handle vcpkg-sample-library:x64-windows: 6.1 s
Total install time: 6.1 s
vcpkg-sample-library provides CMake targets:
find_package(my_sample_lib CONFIG REQUIRED)
target_link_libraries(main PRIVATE my_sample_lib::my_sample_lib)
6. Ověření sestavení portu
Pokud chcete ověřit správné sestavení knihovny a odkazy, přidejte do helloworld projektu vytvořeného v kurzu instalace balíčků novou závislost.
Proveďte následující změny manifestu a konfiguračních souborů projektu.
Úprava helloworld/vcpkg.json přidání závislosti na vcpkg-sample-library:
Dále upravte helloworld/CMakeLists.txt a helloworld/main.cpp použijte novou závislost.
Upravte následující helloworld/CMakeLists.txt obsah:
cmake
cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
find_package(fmt CONFIG REQUIRED)
find_package(my_sample_lib CONFIG REQUIRED) # Add this lineadd_executable(HelloWorld helloworld.cpp)
target_link_libraries(HelloWorld PRIVATE fmt::fmt)
target_link_libraries(HelloWorld PRIVATE my_sample_lib::my_sample_lib) # Add this line
Upravte následující main.cpp obsah:
C++
#include"my_sample_lib.h"// Replace #include <fmt/core.h> with "my_sample_lib.h"intmain(){
greet("vcpkg!"); // Replace fmt::print("Hello World!\n) with this linereturn0;
}
Nakonfigurujte, sestavte a spusťte aplikaci.
Konfigurace sestavení pomocí CMake:
Console
cmake --preset=default
Sestavení projektu:
Console
cmake --build build
Spusťte aplikaci:
Console
./build/HelloWorld
Cesta ke spustitelnému souboru projektu se může lišit, například: ./build/Debug/HelloWorld.exe.
Console
Hello vcpkg!
Další kroky
Teď, když je balíček vcpkg-sample-library jako port, je dalším krokem jeho přidání do kurátorovaného registru vcpkg. Viz přidání portů do registru vcpkg.
Zdroj tohoto obsahu najdete na GitHubu, kde můžete také vytvářet a kontrolovat problémy a žádosti o přijetí změn. Další informace najdete v našem průvodci pro přispěvatele.
Zpětná vazba k produktu vcpkg
vcpkg je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Azure HPC je účelově sestavená cloudová funkce pro úlohy HPC a AI, která využívá špičkové procesory a interfiniBand třídy HPC, aby poskytovala nejlepší výkon, škálovatelnost a hodnotu aplikací. Azure HPC umožňuje uživatelům odhalovat inovace, produktivitu a obchodní flexibilitu prostřednictvím vysoce dostupné řady technologií HPC a AI, které se dají dynamicky přidělovat při změně obchodních a technických potřeb. Tento studijní program je řada modulů, které vám pomůžou začít pracovat s prostředím Azure HPC –