Použití překryvných trojití
Vytváření dynamických knihoven v Linuxu
Pomocí nástroje vcpkg můžete vytvářet knihovny pro mnoho konfigurací. V současné době to ale neobsahuje sdílené knihovny v systému Linux a Mac OS.
To neznamená, že nemůžete použít vcpkg k vytváření dynamických knihoven na těchto platformách! Tento dokument vás provede vytvořením vlastních tripletů, které --overlay-triplets
vám umožní snadno vytvářet dynamické knihovny v Linuxu.
Krok 1: Vytvoření vlastních trojitých souborů
Pokud chcete ušetřit čas, zkopírujte existující x64-linux.cmake
trojitý soubor.
~/git$ mkdir custom-triplets
~/git$ cp vcpkg/triplets/x64-linux.cmake custom-triplets/x64-linux-dynamic.cmake
A upravte custom-triplets/x64-linux-dynamic.cmake
ho tak, aby odpovídal následujícímu obsahu:
# ~/git/custom-triplets/x64-linux-dynamic.cmake
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic) # This changed from static to dynamic
set(VCPKG_CMAKE_SYSTEM_NAME Linux)
Krok 2: Použití --overlay-triplets
k vytváření dynamických knihoven
--overlay-triplets
Pomocí této možnosti můžete do adresáře zahrnout trojité tečkycustom-triplets
.
~/git$ vcpkg/vcpkg install sqlite3:x64-linux-dynamic --overlay-triplets=custom-triplets
The following packages will be built and installed:
sqlite3[core]:x64-linux-dynamic
Starting package 1/1: sqlite3:x64-linux-dynamic
Building package sqlite3[core]:x64-linux-dynamic...
-- Loading triplet configuration from: /home/victor/git/custom-triplets/x64-linux-dynamic.cmake
-- Downloading https://sqlite.org/2019/sqlite-amalgamation-3280000.zip...
-- Extracting source /home/victor/git/vcpkg/downloads/sqlite-amalgamation-3280000.zip
-- Applying patch fix-arm-uwp.patch
-- Using source at /home/victor/git/vcpkg/buildtrees/sqlite3/src/3280000-6a3ff7ce92
-- Configuring x64-linux-dynamic-dbg
-- Configuring x64-linux-dynamic-rel
-- Building x64-linux-dynamic-dbg
-- Building x64-linux-dynamic-rel
-- Performing post-build validation
-- Performing post-build validation done
Building package sqlite3[core]:x64-linux-dynamic... done
Installing package sqlite3[core]:x64-linux-dynamic...
Installing package sqlite3[core]:x64-linux-dynamic... done
Elapsed time for package sqlite3:x64-linux-dynamic: 44.82 s
Total elapsed time: 44.82 s
The package sqlite3:x64-linux-dynamic provides CMake targets:
find_package(unofficial-sqlite3 CONFIG REQUIRED)
target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3)
Překryvné trojité sady umožňují vlastní trojité soubory při použití vcpkg install
, vcpkg update
, vcpkg upgrade
a vcpkg remove
.
Při použití --overlay-triplets
této možnosti vám zpráva podobná následujícímu říká, že se používá vlastní trojitá hodnota:
-- Loading triplet configuration from: /home/custom-triplets/x64-linux-dynamic.cmake
Přepsání výchozích trojitých hodnot
Jak jste si možná všimli, výchozí trojice pro Windows (x86-windows
a x64-windows
) instalují dynamické knihovny, zatímco pro statické knihovny je potřeba přípona (-static
). To se liší od Linuxu a Mac OS, kde jsou vytvořené x64-linux
statické knihovny a x64-osx
.
Použití --overlay-triplets
je možné přepsat výchozí trojité hodnoty, aby se stejné chování v Linuxu provedlo:
x64-linux
: Vytváří dynamické knihovny,x64-linux-static
: Vytváří statické knihovny.
Krok 1: Vytvoření překryvných tripletů
Pomocí vlastního tripletu vytvořeného v předchozím příkladu přejmenujte custom-triplets/x64-linux-dynamic.cmake
na custom-triplets/x64-linux.cmake
. Potom ve složce custom-triplets
zkopírujte výchozí x64-linux
triplet (který vytváří statické knihovny) a přejmenujte ho na x64-linux-static.cmake
.
~/git$ mv custom-triplets/x64-linux-dynamic.cmake custom-triplets/x64-linux.cmake
~/git$ cp vcpkg/triplets/x64-linux.cmake custom-triplets/x64-linux-static.cmake
Krok 2: Použití --overlay-triplets
k přepsání výchozích tripletů
--overlay-triplets
Pomocí této možnosti můžete do adresáře zahrnout trojité tečkycustom-triplets
.
~/git$ vcpkg/vcpkg install sqlite3:x64-linux --overlay-triplets=custom-triplets
The following packages will be built and installed:
sqlite3[core]:x64-linux
Starting package 1/1: sqlite3:x64-linux
Building package sqlite3[core]:x64-linux...
-- Loading triplet configuration from: /home/victor/git/custom-triplets/x64-linux.cmake
-- Downloading https://sqlite.org/2019/sqlite-amalgamation-3280000.zip...
-- Extracting source /home/victor/git/vcpkg/downloads/sqlite-amalgamation-3280000.zip
-- Applying patch fix-arm-uwp.patch
-- Using source at /home/victor/git/vcpkg/buildtrees/sqlite3/src/3280000-6a3ff7ce92
-- Configuring x64-linux-dbg
-- Configuring x64-linux-rel
-- Building x64-linux-dbg
-- Building x64-linux-rel
-- Performing post-build validation
-- Performing post-build validation done
Building package sqlite3[core]:x64-linux... done
Installing package sqlite3[core]:x64-linux...
Installing package sqlite3[core]:x64-linux... done
Elapsed time for package sqlite3:x64-linux: 44.82 s
Total elapsed time: 44.82 s
The package sqlite3:x64-linux provides CMake targets:
find_package(unofficial-sqlite3 CONFIG REQUIRED)
target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3)
Výchozí triplet je maskovaný vaším vlastním tripletem:
-- Loading triplet configuration from: /home/victor/git/custom-triplets/x64-linux.cmake