vcpkg v projektech MSBuild

Metody integrace

Integrace na úrovni uživatele

Pokud chcete v projektech MSBuild použít vcpkg, spusťte následující příkaz:

vcpkg integrate install

Příkaz je potřeba spustit vcpkg integrate install jenom při prvním povolení integrace nástroje MSBuild. To umožňuje integraci nástroje MSBuild pro všechny vaše stávající a budoucí projekty.

Pokud máte více instancí vcpkg, můžete pomocí vcpkg integrate install příkazu aktualizovat instanci vcpkg, která instance vcpkg se používá v rámci nástroje MSBuild. Slouží vcpkg integrate remove k odebrání integrace nástroje MSBuild pro celou uživatele.

Tato metoda integrace automaticky přidá balíčky nainstalované vcpkg do následujících vlastností projektu: Include Directories, Link Directories a Link Libraries. Kromě toho se vytvoří akce po sestavení, která zajistí, že se všechny požadované knihovny DLL zkopírují do výstupní složky sestavení. To funguje pro všechna řešení a projekty pomocí sady Visual Studio 2015 nebo novější.

To je vše, co potřebujete udělat pro velkou většinu knihoven. Některé knihovny však provádějí konfliktní chování, například redefining main(). Vzhledem k tomu, že potřebujete zvolit jednotlivé projekty, které z těchto konfliktních možností chcete, musíte tyto knihovny přidat do vstupů linkeru ručně.

Tady je několik příkladů, kdy je nutné ruční propojení (nejedná se o vyčerpávající seznam):

  • Gtest poskytuje gtest, gmockgtest_main, agmock_main
  • SDL2 poskytuje SDL2main
  • SFML poskytuje sfml-main
  • Boost.Test poskytuje boost_test_exec_monitor

Úplný seznam všech nainstalovaných balíčků získáte spuštěním vcpkg owns manual-linkpříkazu .

Import a import .props.targets

Vcpkg lze také integrovat do projektů MSBuild explicitním importem scripts/buildsystems/vcpkg.props souborů scripts/buildsystems/vcpkg.targets do každého .vcxproj. Pomocí relativních cest to umožňuje, aby vcpkg spotřeboval dílčí modul a automaticky získá uživatele při spuštění git clone.

Nejjednodušší způsob, jak je přidat do každého projektu v řešení, je vytvořit Directory.Build.props a Directory.Build.targets soubory v kořenovém adresáři úložiště.

Následující příklady předpokládají, že jsou v kořenovém adresáři vašeho úložiště s dílčím plánem microsoft/vcpkg at vcpkg.

Příklad: Directory.Build.props

<Project>
 <Import Project="$(MSBuildThisFileDirectory)vcpkg\scripts\buildsystems\msbuild\vcpkg.props" />
</Project>

Příklad: Directory.Build.targets

<Project>
 <Import Project="$(MSBuildThisFileDirectory)vcpkg\scripts\buildsystems\msbuild\vcpkg.targets" />
</Project>

Další informace o Directory.Build.targets nástroji MSBuild naleznete v části Přizpůsobení sestavení oficiální dokumentace nástroje MSBuild a Directory.Build.props.

Propojený balíček NuGet

Poznámka:

Tento přístup se nedoporučuje pro nové projekty, protože je obtížné je sdílet s ostatními. Informace o přenosném samostatném balíčku NuGet najdete v tématu export command.

Projekty VS je také možné integrovat prostřednictvím balíčku NuGet. Tím se upraví soubor projektu, takže tento přístup nedoporučujeme pro opensourcové projekty.

PS D:\src\vcpkg> .\vcpkg integrate project
Created nupkg: D:\src\vcpkg\scripts\buildsystems\vcpkg.D.src.vcpkg.1.0.0.nupkg

With a project open, go to Tools->NuGet Package Manager->Package Manager Console and paste:
    Install-Package vcpkg.D.src.vcpkg -Source "D:/src/vcpkg/scripts/buildsystems"

Poznámka:

Vygenerovaný balíček NuGet neobsahuje skutečné knihovny. Místo toho funguje jako zástupce (nebo symlink) k instalaci vcpkg a "automaticky" aktualizuje všechny změny (instalace nebo odebrání) knihoven. Nemusíte znovu vygenerovat ani aktualizovat balíček NuGet.

Běžná konfigurace

VcpkgEnabled (Použití Vcpkg)

Tuto možnost můžete nastavit na false a explicitně zakázat integraci vcpkg pro projekt.

VcpkgConfiguration (Konfigurace Vcpkg)

Pokud jsou vaše názvy konfigurací příliš složité, aby se vcpkg správně odhadly, můžete tuto vlastnost Release přiřadit nebo Debug explicitně sdělit vcpkg, jakou variantu knihoven chcete použít.

VcpkgEnableManifest (Použití manifestu Vcpkg)

Tato vlastnost musí být nastavena tak true , aby se spotřebovávat z místního vcpkg.json souboru. Pokud je nastavená hodnota false, budou všechny místní vcpkg.json soubory ignorovány.

V současné době se použije výchozí hodnota false, ale v budoucnu se použije true výchozí hodnota.

VcpkgTriplet (Triplet)

Tato vlastnost řídí triplet pro využívání knihoven, jako x64-windows-static je například .arm64-windows

Pokud to není explicitně nastavené, vcpkg odvodí správný trojitý bod na základě nastavení sady Visual Studio. vcpkg odvodí pouze trojité spojení, které používají propojení dynamické knihovny a dynamické propojení CRT; Pokud chcete statické závislosti nebo použít statický CRT (/MT), budete muset trojité nastavení nastavit ručně.

Automaticky vyvolaný triplet můžete zobrazit nastavením podrobností nástroje MSBuild na normální nebo vyšší:

Zkratka: Ctrl+Q "build and run"

Nástroje – Možnosti –>> Projekty a řešení –> Sestavení a spuštění –> Výstup sestavení projektu MSBuild

Viz také triplety

VcpkgHostTriplet (Trojitý hostitel)

Můžete ho nastavit na vlastní triplet, který se použije k překladu závislostí hostitelů.

Pokud tuto sadu nenasadíte, použije se výchozí triplet nativní (x64-windows).

Viz také závislosti hostitele.

VcpkgInstalledDir (Nainstalovaný adresář)

Tato vlastnost definuje umístění vcpkg nainstaluje a bude využívat knihovny z.

V režimu manifestu $(VcpkgManifestRoot)\vcpkg_installed\$(VcpkgTriplet)\je toto výchozí nastavení . V klasickém režimu je toto výchozí nastavení $(VcpkgRoot)\installed\.

VcpkgApplocalDeps (Místní nasazení knihoven DLL aplikací)

Tato vlastnost povolí nebo zakáže detekci a kopírování závislých knihoven DLL z nainstalovaného stromu vcpkg do výstupního adresáře projektu.

VcpkgXUseBuiltInApplocalDeps (Použití integrovaného místního nasazení aplikace)

Pokud je tato vlastnost povolená, používá při místním nasazování knihoven DLL vcpkg experimentální integrovanou implementaci knihovny DLL vcpkg. Tato vlastnost bude odebrána a nemá žádný vliv, pokud integrovaná implementace již není experimentální.

Tato vlastnost nemá žádný vliv, pokud $(VcpkgApplocalDeps) je false.

Konfigurace režimu manifestu

Pokud chcete použít manifesty (vcpkg.json) s nástrojem MSBuild, musíte nejprve použít některou z výše uvedených metod integrace. Potom přidejte vcpkg.json nad soubor projektu (například v kořenovém adresáři zdrojového úložiště) a nastavte vlastnost VcpkgEnableManifest na true. Tuto vlastnost můžete nastavit prostřednictvím integrovaného vývojového prostředí (IDE) ve vlastnostech>projektu Vcpkg>Použít manifest Vcpkg. Možná budete muset znovu načíst integrované vývojové prostředí , aby se zobrazila stránka vlastností vcpkg.

Vcpkg se spustí během sestavení projektu a nainstaluje všechny uvedené závislosti, které vcpkg_installed/$(VcpkgTriplet)/ budou sousedit se vcpkg.json souborem. Tyto knihovny se pak automaticky zahrnou a provedou propojení s vašimi projekty MSBuild.

Známé problémy

  • Visual Studio 2015 správně nesleduje úpravy vcpkg.json souborů a vcpkg-configuration.json nebude reagovat na změny, pokud .cpp není upravován.

VcpkgAdditionalInstallOptions (Další možnosti)

Při použití manifestu tato možnost určuje další příznaky příkazového řádku, které se mají předat do základní vyvolání nástroje vcpkg. Dá se použít pro přístup k funkcím, které ještě nebyly zpřístupněny prostřednictvím jiné možnosti.

VcpkgManifestInstall (Instalace závislostí Vcpkg)

Tuto vlastnost lze nastavit tak, aby false se během sestavování projektu zakázalo automatické obnovení závislostí. Závislosti musí být ručně obnoveny prostřednictvím příkazového řádku vcpkg samostatně.