Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
prog:vcpkg [2024/06/24 10:29] – Ajout de "Ajout / modification d'un triplet" root | prog:vcpkg [2024/08/28 14:09] (Version actuelle) – [Récupérer le code source] : fix typo root |
---|
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> |
| |
====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é. Pour forcer l'utilisation de la branche ''HEAD_REF'', il faut ajouter ''set(VCPKG_USE_HEAD_VERSION ON)'' avant. | ''vcpkg_from_github'' : par défaut, c'est systématiquement ''REF'' et son ''SHA512'' associé qui est utilisé. |
| |
<code cmake> | <code cmake> |
</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> |
</code> | </code> |
| |
* Installer | ===Installer=== |
| |
<code cmake> | <code cmake> |
</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. |
</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. |
| |
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==== |