Partager via


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 updatevcpkg upgradeet 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.cmakecustom-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