Outils pour utilisateurs

Outils du site


prog:vcpkg

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
prog:vcpkg [2024/04/10 14:30] – [portfile.cmake] : ajout de "vcpkg_copy_pdbs()" pour l'installation rootprog:vcpkg [2024/08/28 14:09] (Version actuelle) – [Récupérer le code source] : fix typo root
Ligne 124: Ligne 124:
 La présente méthode va avoir plusieurs conséquences : La présente méthode va avoir plusieurs conséquences :
   * Il n'est possible d'avoir qu'un seul dépôt "intégré" (déclaré dans ''C:\Users\xxx\AppData\Local\vcpkg'').   * Il n'est possible d'avoir qu'un seul dépôt "intégré" (déclaré dans ''C:\Users\xxx\AppData\Local\vcpkg'').
-  * Si un projet dépend d'une librairie qui est déjà dans ''vcpkg'' mais avec une version différente, il va y avoir conflit et risque d'erreur de compilation.+  * Si un projet dépend d'une librairie qui est compilé en local alors qu'elle est également dans ''vcpkg'' mais avec une version différente, il va y avoir conflit et risque d'erreur de compilation.
 </WRAP> </WRAP>
  
Ligne 313: Ligne 313:
 ====portfile.cmake==== ====portfile.cmake====
  
-  * Récupérer le code source+===Récupérer le code source===
  
-SHA512 se calcule depuis l'URL https://github.com/[REPO]/archive/[REF].tar.gz. Mais pour faire simple, mettre 0 (pas vide) et laisser le téléchargement échouer. ''vcpkg'' affichera le bon ''SHA512''Si la valeur change à chaque fois, il y a probablement un problème de droit. Ouvrir le fichier téléchargé dans le dossier ''download'' avec un éditeur de texte pour vérifier le contenu (probablement une page HTML).+SHA512 se calcule depuis l'URL https://github.com/[REPO]/archive/[REF].tar.gz ou ''%%curl -H "PRIVATE-TOKEN: ${TOKEN}" -L git@[GITLAB_REPOSITORY]/[PROJECT]/-/archive/[VERSION]/[PROJECT]-[VERSION].tar.gz --output ${version}.tar.gz%%''. Mais pour faire simple, mettre 0 (pas vide) et laisser le téléchargement échouer. ''vcpkg'' affichera le bon ''SHA512''Il est aussi possible de mettre ''SKIP_SHA512'' (très mauvaise idée en production).
  
-''vcpkg_check_features'' active le define ''WITH_HDF5'' si la feature ''hdf5'' est activée.+Si la valeur change à chaque fois, il y a probablement un problème de droit. Ouvrir le fichier téléchargé dans le dossier ''download'' avec un éditeur de texte pour vérifier le contenu (probablement une page HTML).
  
-''vcpkg_cmake_configure''. ''BUILD_SHARED_LIBS'' est automatiquement transmis. Pour avoir la liste complète des variables automatiquement transmises, voir ''vcpkg\scripts\cmake\vcpkg_configure_cmake.cmake''+''vcpkg_from_github'' : par défaut, c'est systématiquement ''REF'' et son ''SHA512'' associé qui est utilisé.
- +
-''vcpkg_from_github'' : par défaut, c'est systématiquement ''REF'' et son ''SHA512'' associé qui est utilisé. Pour forcer l'utilisation de la branche ''HEAD_REF'', il faut ajouter ''set(VCPKG_USE_HEAD_VERSION ON)'' avant.+
  
 <code cmake> <code cmake>
Ligne 334: Ligne 332:
 </code> </code>
  
-  * Compiler+Il est possible de pointer vers une branche (port à usage de développement uniquement). 
 + 
 +On remplace ''REF'' par ''HEAD_REF'', on supprime ''SHA512'' et on définit ''VCPKG_USE_HEAD_VERSION'' pour forcer l'utilisation de ''HEAD_REF''
 + 
 +<code cmake> 
 +set(VCPKG_USE_HEAD_VERSION ON) 
 + 
 +vcpkg_from_gitlab( 
 +  OUT_SOURCE_PATH SOURCE_PATH 
 +  GITLAB_URL ${GITLAB_REPOSITORY} 
 +  REPO ${PROJECT} 
 +  HEAD_REF "master"
 +</code> 
 + 
 +===Compiler=== 
 + 
 +''vcpkg_check_features'' active le define ''WITH_HDF5'' si la feature ''hdf5'' est activée. 
 + 
 +''vcpkg_cmake_configure''. ''BUILD_SHARED_LIBS'' est automatiquement transmis. Pour avoir la liste complète des variables automatiquement transmises, voir ''vcpkg\scripts\cmake\vcpkg_configure_cmake.cmake''.
  
 <code cmake> <code cmake>
Ligne 346: Ligne 362:
 </code> </code>
  
-  * Installer+===Installer===
  
 <code cmake> <code cmake>
Ligne 353: Ligne 369:
 </code> </code>
  
-  * Patcher+===Patcher===
  
 Il faut ensuite tester l'installation et patcher pour rendre l'installation compatible avec vcpkg. Il faut ensuite tester l'installation et patcher pour rendre l'installation compatible avec vcpkg.
Ligne 374: Ligne 390:
 </code> </code>
  
-  * Subtilités+===Subtilités=== 
 + 
 +  * Accès aux variables d'environnement de Windows
  
 Sous Windows, les variables d'environnement ne sont pas passées à vcpkg et donc pas non plus à CMake. Sous Windows, les variables d'environnement ne sont pas passées à vcpkg et donc pas non plus à CMake.
Ligne 386: Ligne 404:
  
 La modification d'une variable dans ''VCPKG_ENV_PASSTHROUGH'' entrainera la recompilation des paquets. Contrairement à ''VCPKG_ENV_PASSTHROUGH_UNTRACKED''. [[https://learn.microsoft.com/en-us/vcpkg/users/triplets|Triplets reference]] La modification d'une variable dans ''VCPKG_ENV_PASSTHROUGH'' entrainera la recompilation des paquets. Contrairement à ''VCPKG_ENV_PASSTHROUGH_UNTRACKED''. [[https://learn.microsoft.com/en-us/vcpkg/users/triplets|Triplets reference]]
 +
 +  * Connaître l'architecture source / destination
 +
 +L'architecture source (hôte qui compile) : `CMAKE_HOST_<SYSTEM>`.
 +
 +L'architecture de destination (target qui exécutera) : `VCPKG_TARGET_IS_<SYSTEM>`. `WIN32` et `LINUX` sont dépréciés car il y a confusion facile entre l'hôte et la target.
  
 ====Publication des modifications==== ====Publication des modifications====
Ligne 501: Ligne 525:
  
 Le dossier temporaire de clone des dépôts git sont dans ''C:\Users\[USER]\AppData\Local\vcpkg\registries''. Le dossier temporaire de clone des dépôts git sont dans ''C:\Users\[USER]\AppData\Local\vcpkg\registries''.
 +
 +=====Ajout / modification d'un triplet=====
 +
 +Voir la documentation [[https://learn.microsoft.com/fr-fr/vcpkg/users/triplets|triplet]] de vcpkg.
 +
 +====Variables les plus courantes====
 +
 +===Toutes plateformes===
 +
 +  * ''VCPKG_TARGET_ARCHITECTURE'' : architecture des librairies à générer (''x64'', ...),
 +  * ''VCPKG_LIBRARY_LINKAGE'' : compilation en ''dynamic'' ou ''static'' des librairies générer,
 +  * ''VCPKG_CRT_LINKAGE'' : compilation en ''dynamic'' ou ''static'' avec la librairie standard de Visual Studio. Par expérience, j'ai souvent moins de problème à mettre ''dynamic'' quand configurer un projet avec les binaires de vcpkg.
 +  * ''VCPKG_BUILD_TYPE'' : laisser vide pour compiler en ''Debug'' et ''Release''. Mettre ''release'' (sans la majuscule) pour compiler uniquement en Release. Uniquement ''debug'' n'est pas supporté.
 +  * Flags de compilation : ''VCPKG_CXX_FLAGS'', ''VCPKG_CXX_FLAGS_DEBUG'', ''VCPKG_CXX_FLAGS_RELEASE'', ''VCPKG_C_FLAGS'', ''VCPKG_C_FLAGS_DEBUG'', ''VCPKG_C_FLAGS_RELEASE'', ''VCPKG_LINKER_FLAGS'', ''VCPKG_LINKER_FLAGS_DEBUG'', ''VCPKG_LINKER_FLAGS_RELEASE''.
 +
 +===Windows uniquement===
 +
 +  * ''VCPKG_ENV_PASSTHROUGH'' et ''VCPKG_ENV_PASSTHROUGH_UNTRACKED'' : toutes les variables d'environnement de Windows sont ignorés. Il faut ajouter le nom des variables dans ces variables CMake pour que vcpkg les prennent en compte. Les variables dans ''VCPKG_ENV_PASSTHROUGH'' sont pris en compte dans le calcul du hash pour savoir s'il faut recompiler. Les variables dans ''VCPKG_ENV_PASSTHROUGH_UNTRACKED'' ne sont pas prises en compte (mot de passe par exemple).
 +  * ''VCPKG_PLATFORM_TOOLSET'' : version de Visual Studio à reprendre (''v140'', ''v141'', ''v142'', ''v143'', ''ClangCL''). Equivalent à l'option ''-T'' de CMake.
 +
 +====Personnalisation avancée====
 +
 +Il est possible d'appliquer des options de compilation spécifiques pour certains paquets :
 +
 +<code cmake>
 +set(VCPKG_LIBRARY_LINKAGE static)
 +if(${PORT} MATCHES "qt5-")
 +    set(VCPKG_LIBRARY_LINKAGE dynamic)
 +endif()
 +</code>
prog/vcpkg.1712752251.txt.gz · Dernière modification : 2024/04/10 14:30 de root