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
,gmock
gtest_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-link
pří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ů avcpkg-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ě.