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/07/04 10:18] – [Visual Studio] : précision sur la note rootprog:vcpkg [2025/01/28 14:05] (Version actuelle) – [CMake] : ajout de "Passer des paramètres à l'appel de vcpkg" root
Ligne 117: Ligne 117:
 {{ :prog:vcpkg:vcpkg_creates_multiple_triplets_for_packages_with_no_reason._issue_33040_microsoft_vcpkg_github_24_11_2023_10_20_02_.html |Archive du 08/08/2023 le 24/11/2023}} {{ :prog:vcpkg:vcpkg_creates_multiple_triplets_for_packages_with_no_reason._issue_33040_microsoft_vcpkg_github_24_11_2023_10_20_02_.html |Archive du 08/08/2023 le 24/11/2023}}
  
 +  * Passer des paramètres à l'appel de vcpkg
 +
 +Si on veut faire passer des options à l'appel de vcpkg, il faut utiliser ''VCPKG_INSTALL_OPTIONS''. Par exemple ''%%-DVCPKG_INSTALL_OPTIONS=--debug%%''.
 ====Visual Studio==== ====Visual Studio====
  
Ligne 313: Ligne 316:
 ====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 335:
 </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 365:
 </code> </code>
  
-  * Installer+===Installer===
  
 <code cmake> <code cmake>
Ligne 353: Ligne 372:
 </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 393:
 </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 407:
  
 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 505: Ligne 532:
  
 Voir la documentation [[https://learn.microsoft.com/fr-fr/vcpkg/users/triplets|triplet]] de vcpkg. Voir la documentation [[https://learn.microsoft.com/fr-fr/vcpkg/users/triplets|triplet]] de vcpkg.
 +
 +<WRAP center round important 60%>
 +Passer les variables via CMake (''-DVCPKG_CXX_FLAGS=/fsanitize=address'' par exemple) ne fonctionne pas. Il faut bien le mettre dans le fichier triplet.
 +</WRAP>
  
 ====Variables les plus courantes==== ====Variables les plus courantes====
Ligne 511: Ligne 542:
  
   * ''VCPKG_TARGET_ARCHITECTURE'' : architecture des librairies à générer (''x64'', ...),   * ''VCPKG_TARGET_ARCHITECTURE'' : architecture des librairies à générer (''x64'', ...),
 +
   * ''VCPKG_LIBRARY_LINKAGE'' : compilation en ''dynamic'' ou ''static'' des librairies générer,   * ''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_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''. 
  
 +  * ''VCPKG_BUILD_TYPE'' : laisser ne pas définir 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''. Attention, ces variables seront respectées si ''VCPKG_CHAINLOAD_TOOLCHAIN_FILE'' pointe vers ceux à l'intérieur de ''vcpkg''. Ce qui n'est pas le cas pour le triplet ''wasm-emscripten''. Dans ce cas, on peut utiliser : ''%%set(VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG -DCMAKE_CXX_FLAGS=\"-O1 -g\" -DCMAKE_C_FLAGS=\"-O1 -g\" --trace-expand)%%''
 +
 +  * Flags de configuration de CMake : ''VCPKG_CMAKE_CONFIGURE_OPTIONS'', ''VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG'' et ''VCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE''. C'est via cette variable que l'on peut passer par exemple ''%%--trace-expand%%'' à la configuration des ports.
 ===Windows uniquement=== ===Windows uniquement===
  
prog/vcpkg.1720081098.txt.gz · Dernière modification : 2024/07/04 10:18 de root