file¶

Commande de manipulation de fichier.

file(WRITE <filename> <content>...)file(APPEND <filename> <content>...)

Écrivez <content> dans un fichier appelé <filename>. Si le fichier n’existe pas, il sera créé. Si le fichier existe déjà, le mode WRITE l’écrasera et le mode APPEND s’ajoutera à la fin.Tous les répertoires du chemin spécifié par <filename> qui n’existent pas seront créés.

Si le fichier est une entrée de compilation, utilisez la commande configure_file() pour mettre à jour le fichier uniquement lorsque son contenu change.

file(READ <filename> <variable> )

Lisez le contenu d’un fichier appelé <filename> et stockez-le dans un <variable>. Éventuellement, commencez à partir de <offset> et lisez au plus <max-in> octets. L’option HEX entraîne la conversion des données en une représentation hexadécimale (utile pour les données binaires).

file(STRINGS <filename> <variable> )

Analysez une liste de chaînes ASCII de <filename> et stockez-la dans <variable>. Les données binaires du fichier sont ignorées. Les caractères de retour chariot (\r, CR) sont ignorés. Les options sont:

LENGTH_MAXIMUM <max-len>

Ne considérez que des chaînes d’au plus une longueur donnée.

LENGTH_MINIMUM <min-len>

Ne considérez que des chaînes d’au moins une longueur donnée.

LIMIT_COUNT <max-num>

Limite le nombre de chaînes distinctes à extraire.

LIMIT_INPUT <max-in>

Limite le nombre d’octets d’entrée à lire dans le fichier.

LIMIT_OUTPUT <max-out>

Limite le nombre total d’octets à stocker dans le <variable>.

NEWLINE_CONSUME

Traitez les caractères de nouvelle ligne (\n, LF) comme faisant partie du contenu de la chaîne au lieu de les terminer.

NO_HEX_CONVERSION

Les fichiers Intel Hex et Motorola S-record sont automatiquement convertis en binaire pendant la lecture, sauf si cette option est donnée.

REGEX <regex>

Ne considère que les chaînes qui correspondent à l’expression régulière donnée.

ENCODING <encoding-type>

Considérez les chaînes d’un codage donné. Les encodages actuellement pris en charge sont : UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. Si l’option d’ENCODAGE n’est pas fournie et que le fichier a une Marque d’ordre d’octets, l’option d’ENCODAGE sera par défaut pour respecter la Marque d’ordre d’octets.

Par exemple, le code

file(STRINGS myfile.txt myfile)

stocke une liste dans la variable myfile dans laquelle chaque élément est une ligne à partir du fichier d’entrée.

file(<HASH> <filename> <variable>)

Calculez un hachage cryptographique du contenu de <filename> et stockez-le dans un <variable>. Les noms d’algorithme <HASH> pris en charge sont ceux listés par la commande string (< HASH >).

file(GLOB <variable> )file(GLOB_RECURSE <variable> )

Générez une liste de fichiers qui correspondent au <globbing-expressions> et stockez-le dans le <variable>. Les expressions Globbing sont similaires àexcitations régulières, mais beaucoup plus simples. Si l’indicateur RELATIVE est spécifié, les résultats seront renvoyés sous forme de chemins relatifs au chemin donné. Les résultats seront ordonnés lexicographiquement.

Par défaut GLOB liste les répertoires – les répertoires sont omis dans le résultat si LIST_DIRECTORIES est défini sur false.

Remarque

Nous ne recommandons pas d’utiliser GLOB pour collecter une liste de fichiers source à partir de votre arborescence source. Si aucun CMakeLists.le fichier txt change lorsqu’une source est ajoutée ou supprimée, le système de génération généré ne peut pas savoir quand demander à CMake de se régénérer.

Des exemples d’expressions globbing incluent:

*.cxx - match all files with extension cxx*.vt? - match all files with extension vta,...,vtzf.txt - match files f3.txt, f4.txt, f5.txt

Le mode GLOB_RECURSE parcourra tous les sous-répertoires du répertoire correspondant et correspondra aux fichiers. Les sous-répertoires qui sont symlinks ne sont parcourus que si FOLLOW_SYMLINKS est donné ou si la stratégie CMP0009 n’est pas définie sur NEW.

Par défaut GLOB_RECURSE omet les répertoires de la liste de résultats – définir LIST_DIRECTORIES sur true ajoute des répertoires à la liste de résultats.Si FOLLOW_SYMLINKS est donné ou si la stratégie CMP0009 n’est pas définie sur OLD, alors LIST_DIRECTORIES traite les liens symboliques comme des répertoires.

Des exemples de globulation récursive incluent:

/dir/*.py - match all python files in /dir and subdirectories
file(RENAME <oldname> <newname>)

Déplacez un fichier ou un répertoire dans un système de fichiers de <oldname> à <newname>, en remplaçant la destination de manière atomique.

file(REMOVE )file(REMOVE_RECURSE )

Supprimez les fichiers donnés. Le mode REMOVE_RECURSE supprimera les fichiers et répertoires donnés, également des répertoires non vides. Aucune erreur n’est émise si un fichier donné n’existe pas.

file(MAKE_DIRECTORY )

Créez les répertoires donnés et leurs parents au besoin.

file(RELATIVE_PATH <variable> <directory> <file>)

Calculez le chemin relatif de a <directory> à a <file> et stockez-le dans le <variable>.

file(TO_CMAKE_PATH "<path>" <variable>)file(TO_NATIVE_PATH "<path>" <variable>)

Le mode TO_CMAKE_PATH convertit un <path> natif en un chemin de style cmake avec des barres obliques (/). L’entrée peut être un chemin unique ou un chemin de recherche système comme $ENV{PATH}. Un chemin de recherche sera converti en une liste de style cmake séparée par ; caractères.

Le mode TO_NATIVE_PATH convertit un <path> de style cmake en un chemin natif avec des barres obliques spécifiques à la plate-forme (\ sous Windows et / ailleurs).

Utilisez toujours des guillemets doubles autour du <path> pour être sûr qu’il est traité comme un seul argument de cette commande.

file(DOWNLOAD <url> <file> )file(UPLOAD <file> <url> )

Le mode DOWNLOAD télécharge le <url> donné vers un <file> local.Le mode UPLOAD télécharge un <file> local vers un <url> donné.

Les options de DOWNLOAD et UPLOAD sont:

INACTIVITY_TIMEOUT <seconds>

Terminez l’opération après une période d’inactivité.

LOG <variable>

Stockez un journal lisible par l’homme de l’opération dans une variable.

SHOW_PROGRESS

Affiche les informations de progression sous forme de messages d’état jusqu’à ce que l’opération soit terminée.

STATUS <variable>

Stockez l’état résultant de l’opération dans une variable.Le statut est une liste séparée ; de longueur 2.Le premier élément est la valeur de retour numérique de l’opération et le second élément est une valeur de chaîne pour l’erreur.Une erreur numérique 0 signifie aucune erreur dans l’opération.

TIMEOUT <seconds>

Terminez l’opération une fois qu’un temps total donné s’est écoulé.

USERPWD <username>:<password>

Définissez le nom d’utilisateur et le mot de passe pour le fonctionnement.

HTTPHEADER <HTTP-header>

En-tête HTTP pour l’opération. La sous-option peut être répétée plusieurs fois.

Les options supplémentaires à DOWNLOAD sont:

EXPECTED_HASH ALGO=<value>

Vérifiez que le hachage du contenu téléchargé correspond à la valeur attendue, où ALGO est l’un des algorithmes pris en charge par file(<HASH>).Si elle ne correspond pas, l’opération échoue avec une erreur.

EXPECTED_MD5 <value>

Courte main historique pour EXPECTED_HASH MD5=<value>.

TLS_VERIFY <ON|OFF>

Spécifiez s’il faut vérifier le certificat du serveur pour les URL https://.La valeur par défaut est de ne pas vérifier.

TLS_CAINFO <file>

Spécifiez un fichier d’autorité de certification personnalisé pour les URL https://.

Pour les URL https:// CMake doit être construit avec le support OpenSSL. TLS/SSL les certificats ne sont pas vérifiés par défaut. Définissez TLS_VERIFY sur ON pour vérifier les certificats et/ou utilisez EXPECTED_HASH pour vérifier le contenu téléchargé.Si aucune des options TLS n’est donnée, CMake vérifiera respectivement les variables CMAKE_TLS_VERIFY et CMAKE_TLS_CAINFO.

file(TIMESTAMP <filename> <variable> )

Calculez une représentation sous forme de chaîne du temps de modification de <filename> et stockez-le dans <variable>. Si la commande ne peut pas obtenir la variable atimestamp, elle sera définie sur la chaîne vide («  »).

Voir la commande string(TIMESTAMP) pour la documentation des options <format> et UTC.

file(GENERATE OUTPUT output-file <INPUT input-file|CONTENT content> )

Générer un fichier de sortie pour chaque configuration de construction prise en charge par le CMake Generator actuel. Évaluer generator expressions à partir du contenu d’entrée pour produire le contenu de sortie. Les options sont:

CONDITION <condition>

Génère le fichier de sortie pour une configuration particulière uniquement si la condition est vraie. La condition doit être 0 ou 1 après évaluation des expressions du générateur.

CONTENT <content>

Utilisez le contenu donné explicitement en entrée.

INPUT <input-file>

Utilisez le contenu d’un fichier donné comme entrée.Un chemin relatif est traité par rapport à la valeur CMAKE_CURRENT_SOURCE_DIR. Voir la politique CMP0070.

OUTPUT <output-file>

Spécifiez le nom du fichier de sortie à générer. Utilisez des expressions de générateur telles que $<CONFIG> pour spécifier un nom de fichier de sortie spécifique à la configuration. Plusieurs configurations peuvent générer le même fichier de sortie seulementsi le contenu généré est identique. Sinon, le <output-file> doit être évalué à un nom unique pour chaque configuration.Un chemin relatif (après évaluation des expressions du générateur) est traitéavec la valeur CMAKE_CURRENT_BINARY_DIR.Voir la politique CMP0070.

Exactement une option CONTENT ou INPUT doit être donnée. Un fichier OUTPUT spécifique peut être nommé par au plus une invocation de file(GENERATE).Les fichiers générés sont modifiés et leur horodatage mis à jour lors des cmakeruns suivants uniquement si leur contenu est modifié.

Notez également que file(GENERATE) ne crée pas le fichier de sortie avant la phase de génération. Le fichier de sortie n’aura pas encore été écrit lorsque la commande file(GENERATE) reviendra, il n’est écrit qu’après le traitement de tous les fichiers CMakeLists.txt d’un projet.

file(<COPY|INSTALL> <files>... DESTINATION <dir> ] )

La signature COPY copie les fichiers, les répertoires et les liens symboliques vers le dossier adestination. Les chemins d’entrée relatifs sont évalués par rapport au répertoire source actuel, et une destination relative est évaluée par rapport au répertoire de construction actuel. Copyingpréserve l’horodatage du fichier d’entrée et optimise un fichier s’il existe à la destination avec le même horodatage. La copie préserve les permissions d’entrée sauf si des autorisations explicites ou NO_SOURCE_PERMISSIONS sont données (la valeur par défaut est USE_SOURCE_PERMISSIONS).

Voir la commande install(DIRECTORY) pour la documentation des permissions, FILES_MATCHING, PATTERN, REGEX, et EXCLUDE options. La copie de répertoires préserve la structure de leur contenu même si des options sont utilisées pour sélectionner un sous-ensemble de fichiers.

La signature INSTALL diffère légèrement de COPY : elle imprime les messages de statut (sous réserve de la variable CMAKE_INSTALL_MESSAGE), et NO_SOURCE_PERMISSIONS est par défaut.Scripts d’installation générés par la commande install() utilisez cette signature (avec quelques options non documentées pour un usage interne).

file(LOCK <path> )

Verrouillez un fichier spécifié par <path> si aucune option DIRECTORY n’est présente et un fichier <path>/cmake.lock sinon. Le fichier sera verrouillé pour la portée définie par l’option GUARD (la valeur par défaut est PROCESS). l’option RELEASE peut être utiliséepour déverrouiller explicitement le fichier. Si l’option TIMEOUT n’est pas spécifiée, CMake attend jusqu’à ce que le verrouillage réussisse ou jusqu’à ce qu’une erreur fatale se produise. Si TIMEOUT est défini sur 0, le verrouillage sera essayé une fois et le résultat sera immédiatement signalé. Si TIMEOUT n’est pas 0, CMake essaiera de verrouiller le fichier pour la période spécifiée par la valeur <seconds>. Toute erreur sera interprétée comme fatale s’il n’y a pas d’option RESULT_VARIABLE. Sinon, le résultat sera stocké dans <variable> et sera 0 en cas de succès ou de message d’erreur en cas d’échec.

Notez que le verrou est consultatif – il n’y a aucune garantie que d’autres processus respecteront ce verrou, c’est-à-dire que le verrou synchronise deux instances CMake ou plus partageant certaines ressources modifiables. Logique similaire appliquée à l’option DIRECTORY – le verrouillage du répertoire parent n’empêche pas les autres commandes LOCK de verrouiller le répertoire ou le fichier anychild.

Essayer de verrouiller le fichier deux fois n’est pas autorisé. Tous les répertoires intermédiaires etle fichier lui-même sera créé s’ils n’existent pas. Options GUARD et TIMEOUT ignorées lors de l’opération RELEASE.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.