vcpkg to bezpłatny i open source menedżer pakietów C/C++ obsługiwany przez firmę Microsoft i społeczność języka C++ działającą w systemach Windows, macOS i Linux. Jest to narzędzie C++ w samym sercu i jest napisane przy użyciu skryptów C++ i CMake. Jest on przeznaczony do rozwiązywania unikatowych punktów bólu z zarządzaniem bibliotekami C/C++.
Dlaczego vcpkg?
Ponad 2300 bibliotek typu open source do wyboru w nadzorowanym rejestrze, rutynowo skompilowane w celu zweryfikowania zgodności usługi ABI
Tworzenie własnego rejestru bibliotek niestandardowych przy użyciu własnych pakietów bibliotek niestandardowych
Spójne, międzyplatformowe środowisko dla systemów Windows, macOS i Linux
Tworzenie zależności ze źródła lub pobierania wstępnie skompilowanych plików binarnych zweryfikowanych przez usługę ABI z ponad 70 konfiguracjami dostępnymi domyślnie i nieskończonym dostosowaniem dla określonych wymagań
Zapobieganie konfliktom wersji i problemom z rombem między zależnościami przy użyciu unikatowego projektu przechowywania wersji
W przypadku użytkowników programu MSBuild i narzędzia CMake: automatyczna integracja ze środowiskiem kompilacji w celu zapewnienia bezproblemowego uzyskiwania zależności
Zaufane przez studentów, deweloperów open source, hobbystów i profesjonalistów, w tym niektóre z największych przedsiębiorstw
Funkcje programu vcpkg
Porty i trojaczki
Port vcpkg to przepis kompilacji w wersji, który tworzy pakiet. Najczęstszym typem pakietu jest biblioteka C/C++ składająca się z nagłówków, kodu źródłowego i plików binarnych.
Triplet przechwytuje docelowe środowisko kompilacji (cpu, os, kompilator, środowisko uruchomieniowe itp.) w jednej, wygodnej nazwie. Narzędzie vcpkg domyślnie udostępnia ponad 70 trojaków, ale można również zdefiniować własne.
Aby zainstalować pakiet w systemie, narzędzie vcpkg uruchamia plik przepisu portu, który jest skryptem narzędzia CMake. Skrypt może zawierać kroki pobierania kodu źródłowego lub uruchamiania kompilacji w systemie. Podczas kompilacji program vcpkg używa informacji w trójce, aby upewnić się, że wygenerowany pakiet jest zgodny z żądaną konfiguracją.
Buforowanie binarne
Podczas gdy narzędzie vcpkg kompiluje biblioteki ze źródła zawsze wtedy, gdy jest to konieczne, można utworzyć kopię zapasową wbudowanych pakietów w binarnej pamięci podręcznej. Dzięki temu inne maszyny deweloperskie lub przebiegi ciągłej integracji mogą odwoływać się do tych wstępnie utworzonych pakietów bez konieczności uruchamiania nowej kompilacji za każdym razem. Narzędzie vcpkg określa, czy ponowna kompilacja jest konieczna, sprawdzając, czy pamięć podręczna zawiera już prawidłowy istniejący pakiet z odpowiednimi plikami binarnymi.
Manifesty
Możesz zadeklarować bezpośrednie zależności i dodać opcjonalne funkcje lub ograniczenia wersji w pliku manifestu. Pliki manifestu można zaewidencjonować w systemie kontroli źródła i udostępnić zespołowi.
Wersje
Narzędzie vcpkg ma unikatowy sposób obsługi wersji pakietów. Plik manifestu może domyślnie odwoływać się do pojedynczej wersji punktu odniesienia ustawionej. Punkt odniesienia zapewnia bezproblemowe, wolne od konfliktów zarządzanie zależnościami z pełną powtarzalnością. Ponadto nadal możesz mieć bardziej zaawansowaną kontrolę, przypinając poszczególne wersje pakietów.
Rejestry
Rejestr to kolekcja portów i dostępnych wersji, które użytkownik vcpkg może zainstalować. Narzędzie vcpkg domyślnie udostępnia wyselekcjonowany rejestr bibliotek open source. Możesz również utworzyć własne rejestry dla dostosowań, poprawek lub bibliotek prywatnych.
Buforowanie zasobów
Buforowanie zasobów umożliwia programowi vcpkg pracę w środowiskach rozgałęzionych w powietrzu i offline, zapewniając ciągłość działania, nawet jeśli host zdalny ulegnie awarii lub zostanie naruszony. Używa funkcji download-mirrors do przekazywania i przywracania zasobów, takich jak kod źródłowy i narzędzia kompilacji.
vcpkg w porównaniu z innymi menedżerami pakietów
vcpkg w porównaniu z pakietem NuGet
NuGet to menedżer pakietów platformy .NET, który jest często używany do programowania w języku C/C++, szczególnie w przypadku rozwiązań MSBuild zawierających projekty platformy .NET. Ogólnie rzecz biorąc, zespół języka Microsoft C++ nie zaleca używania narzędzia NuGet do programowania w języku C/C++, ponieważ pakiet NuGet ma kilka ograniczeń:
Smaki kompilacji. Ponieważ pakiet NuGet nie może kompilować pakietów ze źródła na bieżąco, należy zapewnić wstępnie utworzone pliki binarne, aby dopasować wszystkie możliwe ograniczenia interfejsu binarnego aplikacji (ABI) dla wszystkich użytkowników. Użytkownik jest odpowiedzialny za poprawne kompilowanie pakietów. Trudno jest również odróżnić pliki binarne z powodu braku odpowiednich metadanych. Spowoduje to umieszczenie przez użytkownika informacji o architekturze, systemie operacyjnym i kompilatorze w nazwie pakietu. Jest to niepożądane, ponieważ podczas pozyskiwania pakietu nie można wymuszać ograniczeń dotyczących architektury, systemu operacyjnego i kompilatora.
Plik binarny a źródło. Pakiet NuGet został zaprojektowany od podstaw, aby zapewnić stosunkowo małe, wstępnie utworzone pliki binarne. Deweloperzy muszą mieć dostęp do kodu źródłowego, aby zapewnić zgodność, wydajność, integralność i debugowanie usługi ABI.
Brak obsługi funkcji NuGet PackageReference. Funkcja NuGet PackageReference nie jest obsługiwana w przypadku .vcxproj plików i nie ma planu dodania go w przyszłości ze względu na różnice techniczne i architektoniczne między projektami C++ i .NET MSBuild. Oznacza to, że użytkownicy nuGet C++ nie skorzystają z funkcji, takich jak użycie globalnej pamięci podręcznej i odwoływanie się do zależności w prostych terminach MSBuild z dostępem do logiki warunkowej.
Przechodnie śledzenie ABI. Narzędzie vcpkg ponownie kompiluje zależności typu open source, których dotyczy zmiana w określonym pakiecie. Jeśli na przykład nowa aktualizacja zostanie wydana dla funkcji Boost, narzędzie vcpkg ponownie kompiluje wszystkie zależności funkcji Boost i bibliotek, które zależą od boost, aby upewnić się, że nadal działają. Żądania ściągnięcia w celu zaktualizowania bibliotek w repozytorium vcpkg nie są scalane, dopóki nie zostaną rozwiązane konflikty czasu kompilacji.
vcpkg w porównaniu z menedżerami pakietów systemowych
Istnieje wiele różnych menedżerów pakietów systemowych dla systemów Linux, macOS i Windows, które mogą służyć do uzyskiwania bibliotek C/C++ i zarządzania nimi. Te menedżery pakietów są zazwyczaj doskonałymi wyborami do zarządzania aplikacjami. Jednak ze względu na ogólny charakter ich obsługi często nie dostarcza funkcji korzystnych szczególnie dla deweloperów języka C/C++. Chociaż przebieg będzie się różnić, a niektórzy menedżerowie pakietów systemowych dostarczają niektóre z tych funkcji, żaden z nich nie ma następujących elementów:
Zasoby deweloperów pakietu redystrybucyjnego: narzędzie vcpkg może uzyskać zasoby deweloperów pakietu redystrybucyjnego, aby ułatwić debugowanie.
Wstępnie utworzone pakiety a kompilacja ze źródła: narzędzie vcpkg może kompilować pakiety ze źródła na podstawie niestandardowych wymagań. Nie ma potrzeby zajmowania się wstępnie skompilowanymi pakietami, aby mogły działać.
Przechowywanie wersji w całym katalogu: narzędzie vcpkg umożliwia zależne od zestawu wersji zgodnych pakietów, a nie konieczności mikrozarządzanie poszczególnymi wersjami pakietów. Nadal możesz to zrobić w razie potrzeby, ale domyślne środowisko jest zaprojektowane tak, aby ułatwić rozpoczęcie pracy.
Wiele kopii tej samej biblioteki w jednym systemie: można mieć wiele kopii tej samej zależności zainstalowanej w tym samym systemie z narzędziem vcpkg, natomiast menedżerowie pakietów systemowych mogą zainstalować jedną wersję w jednej lokalizacji w całym systemie. Komplikuje to elementy, gdy masz wiele projektów w zależności od różnych wersji biblioteki.
Rozmiar katalogu: ponieważ vcpkg jest wyspecjalizowany dla języka C/C++, ma bardzo dużą kolekcję bibliotek C/C++ w porównaniu z menedżerami pakietów systemowych i jest aktywnie utrzymywana. Ogólnie rzecz biorąc, bardziej prawdopodobne jest znalezienie przydatnych i aktualnych bibliotek na potrzeby programowania w języku C++.
Obsługa wielu platform: Menedżerowie pakietów systemowych udostępniają pakiety zablokowane dla określonego systemu. Jeśli potrzebujesz więcej niż jednego systemu operacyjnego, musisz znaleźć innego menedżera pakietów dla drugiego systemu. Z kolei vcpkg jest międzyplatformowym menedżerem pakietów. Dlatego wystarczy odpowiednio dostosować kompilacje docelowe.
Istnieją sytuacje, w których menedżer pakietów systemowych absolutnie ma sens:
Menedżerowie pakietów systemowych mają tendencję do dobrej pracy, zapewniając i utrzymując biblioteki specyficzne dla tego systemu
Wstępnie utworzone pakiety powinny działać w tym systemie, jeśli projekt korzystający z projektu ma prostą konfigurację kompilacji.
Jeśli nie zamierzasz wykonywać programowania międzyplatformowego, nie wystąpią problemy ze zgodnością systemu operacyjnego z menedżerem pakietów systemowych.
Narzędzie vcpkg jest przeznaczone do pracy obok menedżerów pakietów systemowych, więc możesz korzystać z narzędzia, które ma największe znaczenie dla każdej zależności.
Wprowadzenie do programu vcpkg
Aby wypróbować narzędzie vcpkg, zapoznaj się z naszymi samouczkami wprowadzającymi:
Jeśli system kompilacji nie jest CMake lub MSBuild, vcpkg obsługuje również ręczną integrację z preferowanym środowiskiem.
Współpracuj z nami w serwisie GitHub
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
Opinia o produkcie vcpkg
vcpkg to projekt typu open source. Wybierz link, aby przekazać opinię:
Usprawnij instalację i konserwację oprogramowania na komputerze przy użyciu Menedżer pakietów systemu Windows. Wyjaśnij składniki i polecenia frontonu, repozytorium Menedżer pakietów systemu Windows oraz sposób współtworzenia repozytorium.