Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
prog:vcpkg [2024/08/27 15:43] – [portfile.cmake] : ajout de vcpkg_from_gitlab qui pointe vers une branche root | prog:vcpkg [2024/08/28 14:09] (Version actuelle) – [Récupérer le code source] : fix typo root |
---|
====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_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. | 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_from_github'' : par défaut, c'est systématiquement ''REF'' et son ''SHA512'' associé qui est utilisé. |
| |
<code cmake> | <code cmake> |
Il est possible de pointer vers une branche (port à usage de développement uniquement). | Il est possible de pointer vers une branche (port à usage de développement uniquement). |
| |
On remplace ''REF'' par ''HEAD_REF'' et on supprimer ''SHA512''. | 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> | <code cmake> |
vcpkg_from_gitlab( | vcpkg_from_gitlab( |
OUT_SOURCE_PATH SOURCE_PATH | OUT_SOURCE_PATH SOURCE_PATH |
GITLAB_URL git@git.moduleus.com | GITLAB_URL ${GITLAB_REPOSITORY} |
REPO common/sw/urx | REPO ${PROJECT} |
HEAD_REF "master") | HEAD_REF "master") |
</code> | </code> |
| |
* Compiler | ===Compiler=== |
| |
''vcpkg_check_features'' active le define ''WITH_HDF5'' si la feature ''hdf5'' est activée. | ''vcpkg_check_features'' active le define ''WITH_HDF5'' si la feature ''hdf5'' est activée. |
</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==== |