prog:cmake
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
prog:cmake [2024/08/26 12:12] – Ajout de "Environnement de sortie" root | prog:cmake [2024/12/12 11:33] (Version actuelle) – [Compilation] : ajout des options de compilation root | ||
---|---|---|---|
Ligne 12: | Ligne 12: | ||
git clone https:// | git clone https:// | ||
cd cmake | cd cmake | ||
- | cmake -B build | + | cmake -B build -DCMAKE_USE_OPENSSL: |
cmake --build build --parallel 16 | cmake --build build --parallel 16 | ||
sudo cmake --install build | sudo cmake --install build | ||
Ligne 280: | Ligne 280: | ||
</ | </ | ||
- | ====Cas spécifiques==== | + | ====Exécution d'une commande==== |
- | ===Exécuter | + | ===En passant par une nouvelle |
- | Il suffit de passer | + | <code cmake> |
+ | add_custom_target(clang_fmt ALL COMMAND xxxxxx) | ||
+ | </ | ||
+ | |||
+ | ===Associé une commande à une target existante=== | ||
+ | |||
+ | * En passant | ||
<code cmake> | <code cmake> | ||
- | # On crée une target qui sera ajoutée à la commande make par défaut. | + | add_custom_target(clang_fmt_dep COMMAND ...) |
- | add_custom_target(clang_fmt ALL) | + | |
- | # On définir une commande à exécuter. | + | add_dependencies(clang_fmt |
- | add_custom_command(TARGET | + | |
</ | </ | ||
- | ===Exécuter uniquement le préprocesseur=== | + | * Sans passer par une target intermédiaire |
- | Il faut créer une target compilable en l' | + | <code cmake> |
+ | add_custom_command(TARGET clang_fmt PRE_BUILD COMMAND | ||
+ | </ | ||
+ | |||
+ | * En passant par un fichier qui sera généré | ||
<code cmake> | <code cmake> | ||
- | add_library(file_obj OBJECT EXCLUDE_FROM_ALL | + | add_custom_command(OUTPUT |
- | add_custom_target(file ALL COMMAND make file.cpp.i) | + | |
+ | add_dependencies(clang_fmt | ||
</ | </ | ||
- | [[http:// | + | ===Spécificité au générateur Visual Studio=== |
+ | |||
+ | Normalement, | ||
+ | |||
+ | Mais Visual Studio va également analyser la sortie standard. Si le contenu de la sortie standard est faussement considéré comme une erreur, il faut rediriger la sortie standard vers NUL. | ||
+ | |||
+ | <code cmake> | ||
+ | if(CMAKE_GENERATOR MATCHES " | ||
+ | set(IGNORE_ERROR_IN_LOG ">" | ||
+ | else() | ||
+ | set(IGNORE_ERROR_IN_LOG "" | ||
+ | endif() | ||
+ | |||
+ | add_custom_target(targ COMMAND ... ${IGNORE_ERROR_IN_LOG}) | ||
+ | ) | ||
+ | </code> | ||
+ | |||
+ | Ce problème peut se produire en lançant la commande `python | ||
+ | |||
+ | < | ||
+ | " | ||
+ | (CustomBuild target) | ||
+ | CUSTOMBUILD : error : pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. [...\target.vcxproj] | ||
+ | C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(254, | ||
+ | |||
+ | 15 Warning(s) | ||
+ | 2 Error(s) | ||
+ | </code> | ||
===Dépendances dans un sous-dossier=== | ===Dépendances dans un sous-dossier=== | ||
Ligne 358: | Ligne 395: | ||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ | DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ | ||
</ | </ | ||
+ | |||
+ | ====Divers==== | ||
+ | |||
+ | ===Exécuter uniquement le préprocesseur=== | ||
+ | |||
+ | Il faut créer une target compilable en l' | ||
+ | |||
+ | <code cmake> | ||
+ | add_library(file_obj OBJECT EXCLUDE_FROM_ALL file.cpp) | ||
+ | add_custom_target(file ALL COMMAND make file.cpp.i) | ||
+ | </ | ||
+ | |||
+ | [[http:// | ||
+ | |||
====Tests==== | ====Tests==== |
prog/cmake.1724667143.txt.gz · Dernière modification : 2024/08/26 12:12 de root