Udostępnij za pośrednictwem


Przykład tworzenia pakietów plików archiwum: zlib

Uruchamianie za pomocą polecenia create

Najpierw znajdź globalnie dostępne archiwum źródeł biblioteki. Obsługiwane są pliki zip, gzip i bzip. Zdecydowanie preferuj oficjalne źródła lub lustra na nieoficjalnych lustrach.

Patrząc na witrynę internetową biblioteki zlib, adres URL http://zlib.net/zlib-1.2.13.tar.gz wygląda odpowiednio.

Po drugie, określ odpowiednią nazwę pakietu. Powinno to być ASCII, małe litery i rozpoznawalne dla kogoś, kto zna "ludzkie imię" biblioteki. Jeśli biblioteka jest już spakowana w innym menedżerze pakietów, preferuj tę nazwę.

Ponieważ zlib jest już spakowany jako zlib, w tym przykładzie użyjemy nazwy zlib2.

Na koniec, jeśli nazwa serwera dla archiwum nie jest bardzo opisowa (na przykład pobieranie spakowanego zatwierdzenia lub gałęzi z usługi GitHub), wybierz miłą nazwę archiwum formularza <packagename>-<version>.zip.

zlib-1.2.13.zip to dobra nazwa, więc żadna zmiana nie jest wymagana.

Wszystkie te informacje można następnie przekazać do create polecenia , które pobierze źródła i uruchomi proces pakowania wewnątrz ports/<packagename>programu .

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

Tworzenie pliku manifestu

Oprócz wygenerowanego ports/<package>/portfile.cmakepliku potrzebujemy ports/<package>/vcpkg.json również pliku. Ten plik to prosty zestaw pól opisujących metadane pakietu.

W przypadku biblioteki zlib2 utworzymy plik ports/zlib2/vcpkg.json z następującą zawartością:

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

Dostosowywanie wygenerowanego pliku portów

Wygenerowany portfile.cmake element będzie potrzebował edycji, aby poprawnie spakować większość bibliotek w środowisku naturalnym, jednak możemy rozpocząć od wypróbowania kompilacji.

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

W tym momencie jest to kwestia odczytywania komunikatów o błędach i plików dziennika, jednocześnie poprawiając jakość pliku portfile. Biblioteka Zlib wymaga dostarczenia dyskretnej kopii licencji do skopiowania do pakietu, pomijania kompilacji i instalacji plików wykonywalnych i nagłówków oraz usuwania bibliotek statycznych po ich zainstalowaniu.

Sugerowane przykładowe pliki portów

W katalogu jest wiele bibliotek, które mogą być używane jako przykłady, w tym wiele, które nie są oparte na narzędziu ports/ CMake.

  • Biblioteki tylko nagłówków
    • rapidjson
    • range-v3
  • Oparty na programie MSBuild
    • chakracore
  • Nienależący do narzędzia CMake, niestandardowy system kompilacji
    • openssl
    • ffmpeg