| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| prog:vcpkg [2025/01/28 14:05] – [CMake] : ajout de "Passer des paramètres à l'appel de vcpkg" root | prog:vcpkg [2025/12/09 16:30] (Version actuelle) – [CMake] Ajout de quelques paramètres en plus par défaut pour CMake / vcpkg root |
|---|
| |
| <code bash> | <code bash> |
| cmake -B [build_directory] -S . -G "Visual Studio 17 2022" -A x64 -DBUILD_SHARED_LIBS=OFF -DVCPKG_TARGET_TRIPLET=x64-windows-static-md -DVCPKG_HOST_TRIPLET=x64-windows-static-md -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake | cmake -B [build_directory] -S . -G "Visual Studio 17 2022" -A x64 -DBUILD_SHARED_LIBS=OFF -DVCPKG_TARGET_TRIPLET=x64-windows-static-md -DVCPKG_HOST_TRIPLET=x64-windows-static-md -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_OVERLAY_TRIPLETS=../vcpkg-registry/triplets -DCMAKE_INSTALL_PREFIX=d:/repos/udpdk/install -DVCPKG_MANIFEST_INSTALL:BOOL=ON |
| cmake --build [build_directory] --config Release | cmake --build [build_directory] --config Release |
| </code> | </code> |
| ====portfile.cmake==== | ====portfile.cmake==== |
| |
| ===Récupérer le code source=== | ===Appliquer des limitations=== |
| |
| 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). | Il est possible d'imposer la compilation en static ou en shared only. |
| |
| 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). | <code cmake> |
| | if(VCPKG_TARGET_IS_WINDOWS) |
| | vcpkg_check_linkage(ONLY_STATIC_LIBRARY) |
| | vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) |
| | vcpkg_check_linkage(ONLY_STATIC_CRT) |
| | vcpkg_check_linkage(ONLY_DYNAMIC_CRT) |
| | endif() |
| | </code> |
| |
| ''vcpkg_from_github'' : par défaut, c'est systématiquement ''REF'' et son ''SHA512'' associé qui est utilisé. | En interne, cela applique un ''set(VCPKG_LIBRARY_LINKAGE static PARENT_SCOPE)''. |
| | |
| | ===Récupérer le code source=== |
| | |
| | * sur un commit précis |
| |
| <code cmake> | <code cmake> |
| REF 638807ad6842d82690fb2e712a32ccab4c7eec8f | REF 638807ad6842d82690fb2e712a32ccab4c7eec8f |
| SHA512 d8f0788b2c46bb07041d28d9ce9426a9a3ec6df8217b81b311fc02366c49850ee138f9d3f9784cf34c778d5173779db20acc3bee436d6f1494fa8fccff5950af | SHA512 d8f0788b2c46bb07041d28d9ce9426a9a3ec6df8217b81b311fc02366c49850ee138f9d3f9784cf34c778d5173779db20acc3bee436d6f1494fa8fccff5950af |
| HEAD_REF master | |
| PATCHES catch2.patch | PATCHES catch2.patch |
| ) | ) |
| </code> | </code> |
| | |
| | ''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''. |
| | |
| | Si la valeur du ''SHA512'' 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). |
| | |
| | * sur une branche précise |
| |
| 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). |
| * ''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é. | * ''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 compilation. |
| | <WRAP center round important 60%> |
| | 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 ''wasm32-emscripten'' (webassembly) qui utilise le fichier ''%%${EMSCRIPTEN_ROOT}/cmake/Modules/Platform/Emscripten.cmake%%''. Dans ce cas, on peut utiliser : ''%%set(VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG -DCMAKE_CXX_FLAGS=\"-O1 -g\" -DCMAKE_C_FLAGS=\"-O1 -g\" --trace-expand)%%''. |
| | </WRAP> |
| | |
| | * |
| | * ''VCPKG_C_FLAGS'' / ''VCPKG_CXX_FLAGS'' (doivent être défini tous les deux), ''VCPKG_C_FLAGS_DEBUG'' / ''VCPKG_CXX_FLAGS_DEBUG'', ''VCPKG_C_FLAGS_RELEASE'' / ''VCPKG_CXX_FLAGS_RELEASE'', |
| | * ''VCPKG_LINKER_FLAGS'', ''VCPKG_LINKER_FLAGS_DEBUG'', ''VCPKG_LINKER_FLAGS_RELEASE''. |
| |
| * 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. | * 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. |