Utilisation de triplets de superposition
Création de bibliothèques dynamiques sur Linux
À l’aide de vcpkg , vous pouvez générer des bibliothèques pour de nombreuses configurations prêtes à l’emploi. Toutefois, cela n’inclut pas actuellement les bibliothèques partagées sur Linux et Mac OS.
Cela ne signifie pas que vous ne pouvez pas utiliser vcpkg pour créer vos bibliothèques dynamiques sur ces plateformes ! Ce document vous guide tout au long de la création de vos propres triplets --overlay-triplets
personnalisés pour créer facilement des bibliothèques dynamiques sur Linux.
Étape 1 : Créer les fichiers triplet personnalisés
Pour gagner du temps, copiez le fichier triplet existant x64-linux.cmake
.
~/git$ mkdir custom-triplets
~/git$ cp vcpkg/triplets/x64-linux.cmake custom-triplets/x64-linux-dynamic.cmake
Et modifiez custom-triplets/x64-linux-dynamic.cmake
pour correspondre au contenu ci-dessous :
# ~/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)
Étape 2 : Utiliser --overlay-triplets
pour créer des bibliothèques dynamiques
Utilisez l’option --overlay-triplets
pour inclure les triplets dans le custom-triplets
répertoire.
~/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)
Les triplets de superposition activent vos fichiers triplet personnalisés lors de l’utilisation vcpkg install
, , vcpkg update
vcpkg upgrade
et vcpkg remove
.
Lorsque vous utilisez l’option --overlay-triplets
, un message comme celui-ci vous indique qu’un triplet personnalisé est utilisé :
-- Loading triplet configuration from: /home/custom-triplets/x64-linux-dynamic.cmake
Substitution des triplets par défaut
Comme vous l’avez peut-être remarqué, les triplets par défaut pour Windows (x86-windows
et x64-windows
) installent des bibliothèques dynamiques, tandis qu’un suffixe (-static
) est nécessaire pour les bibliothèques statiques. Cela est différent avec Linux et Mac OS où les bibliothèques statiques sont générées par x64-linux
et x64-osx
.
Il --overlay-triplets
est possible de remplacer les triplets par défaut pour accomplir le même comportement sur Linux :
x64-linux
: Génère des bibliothèques dynamiques,x64-linux-static
: génère des bibliothèques statiques.
Étape 1 : Créer les triplets de superposition
À l’aide du triplet personnalisé créé dans l’exemple précédent, renommez -le custom-triplets/x64-linux-dynamic.cmake
custom-triplets/x64-linux.cmake
. Ensuite, copiez le triplet par défaut x64-linux
(qui génère des bibliothèques statiques) dans votre custom-triplets
dossier et renommez-le 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
Étape 2 : Utiliser --overlay-triplets
pour remplacer les triplets par défaut
Utilisez l’option --overlay-triplets
pour inclure les triplets dans le custom-triplets
répertoire.
~/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)
Le triplet par défaut est masqué par votre triplet personnalisé :
-- Loading triplet configuration from: /home/victor/git/custom-triplets/x64-linux.cmake