Commande de manipulation de fichier.
file(WRITE filename "message to write"... )file(APPEND filename "message to write"... )file(READ filename variable )file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> filename variable)file(STRINGS filename variable )file(GLOB variable ...)file(GLOB_RECURSE variable ...)file(RENAME <oldname> <newname>)file(REMOVE )file(REMOVE_RECURSE )file(MAKE_DIRECTORY )file(RELATIVE_PATH variable directory file)file(TO_CMAKE_PATH path result)file(TO_NATIVE_PATH path result)file(DOWNLOAD url file )file(UPLOAD filename url )file(TIMESTAMP filename variable )file(GENERATE OUTPUT output_file <INPUT input_file|CONTENT input_content> )
WRITE écrira un message dans un fichier appelé ‘nom de fichier’. Itoverécrit le fichier s’il existe déjà et crée le fichier s’il n’existe pas. (Si le fichier est une entrée de compilation, utilisez configure_file pour mettre à jour le fichier uniquement lorsque son contenu change.)
APPEND écrira un message dans un fichier identique à WRITE, sauf qu’il l’ajoutera à la fin du fichier
READ lira le contenu d’un fichier et le stockera dans la variable.Il commencera au décalage donné et lira jusqu’à numBytes. Si l’hexadécimal de l’argument est donné, les données binaires seront converties en une représentation hexadécimale et celles-ci seront stockées dans la variable.
MD5, SHA1, SHA224, SHA256, SHA384 et SHA512 calculeront le hachage acryptographique du contenu d’un fichier.Les chaînes
analyseront une liste de chaînes ASCII à partir d’un fichier et la stockeront dans une variable. Les données binaires du fichier sont ignorées. Les caractères de retour chariot (CR) sont ignorés. Cela fonctionne également pour les fichiers d’enregistrement Intel Hex et MotorolaS, qui sont automatiquement convertis au format binaire lors de leur lecture. Désactivez cela en utilisant NO_HEX_CONVERSION.
LIMIT_COUNT définit le nombre maximum de chaînes à renvoyer. Limit_input Définit le nombre maximal d’octets à lire dans le fichier d’entrée.LIMIT_OUTPUT définit le nombre maximal d’octets à stocker dans la variable de sortie. LENGTH_MINIMUM définit la longueur minimale d’une chaîne pourturn. Les chaînes plus courtes sont ignorées. LENGTH_MAXIMUM définit la longueur maximale d’une chaîne à renvoyer. Les chaînes plus longues sont divisées en cordesnon plus long que la longueur maximale. NEWLINE_CONSUME permet d’inclure des nouvelles lignes dans les chaînes au lieu de les terminer.
REGEX spécifie une expression régulière qu’une chaîne doit correspondre à bereturned. Utilisation typique
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.
GLOB générera une liste de tous les fichiers qui correspondent aux expressions globbing et les stockera dans la variable. Les expressions globulaires sont similaires aux expressions régulières, mais beaucoup plus simples. Si l’indicateur RELATIF est spécifié pour une expression, les résultats seront renvoyés sous la forme d’un chemin correspondant au chemin donné. (Nous ne recommandons pas d’utiliser GLOB tocollect une liste de fichiers sources de votre arborescence source. Si vous ne le faites pas.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 de globalisation 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
GLOB_RECURSE générera une liste similaire au GLOB normal, sauf qu’il parcourra tous les sous-répertoires du répertoire correspondant et associera les fichiers. Les sous-répertoires qui sont des liens symboliques ne sont traversés que si FOLLOW_SYMLINKS est donné ou si la stratégie cmake CMP0009 n’est pas définie sur NEW.Voir cmake-help-policy CMP0009 pour plus d’informations.
Des exemples de globulation récursive incluent:
/dir/*.py - match all python files in /dir and subdirectories
MAKE_DIRECTORY créera les répertoires donnés, même si leurs répertoires parents n’existent pas encore
RENOMMER déplace un fichier ou un répertoire dans un système de fichiers, en remplaçant la destination atomiquement.
REMOVE supprimera les fichiers donnés, également dans les sous-répertoires
REMOVE_RECURSE supprimera les fichiers et répertoires donnés, de même que les répertoires non vides
RELATIVE_PATH déterminera le chemin relatif du répertoire vers le fichier donné.
TO_CMAKE_PATH convertira path en chemin de style cmake avec unix/.L’entrée peut être un chemin unique ou un chemin système comme « ENenv{PATH} ».Notez que les guillemets doubles autour de l’appel ENV TO_CMAKE_PATH ne prennent qu’un seul argument. Cette commande convertira également les listdelimiters natifs pour une liste de chemins comme la variable d’environnement PATH.
TO_NATIVE_PATH fonctionne comme TO_CMAKE_PATH, mais convertira du chemin de style acmake au style de chemin natif pour Windows et /forUNIX.
DOWNLOAD téléchargera l’URL donnée vers le fichier donné. Si LOG var est spécifié, un log du téléchargement sera mis en var. Si STATUS var est spécifié, le statut de l’opération sera mis en var. Le statut est renvoyé dans une liste de longueur 2. Le premier élément est la valeur numericreturn pour l’opération et le second élément est une valeur de chaîne pour l’erreur. Une erreur numérique de 0 signifie aucune erreur dans l’opération. Si le délai d’EXPIRATION est spécifié, l’opération sera expiréaprès quelques secondes, le temps doit être spécifié sous la forme d’un entier. TheINACTIVITY_TIMEOUT spécifie un nombre entier de secondes d’inactivité après quoi l’opération doit se terminer. IfEXPECTED_HASH ALGO=value est spécifié, l’opération vérifiera que le hachage réel du fichier téléchargé correspond à la valeur attendue, alors qu’il s’agit de MD5, SHA1, SHA224, SHA256, SHA384 ou SHA512. S’il ne correspond pas, l’opération échoue avec une erreur. (« EXPECTED_MD5sum » est une courte main pour « EXPECTED_HASH MD5=sum ».) Si SHOW_PROGRESS est spécifié, les informations de progression seront imprimées sous forme de messages d’état jusqu’à la fin de l’opération. Pour les URL https, CMake doit être construit avec OpenSSL. Les certificats TLS/SSL ne sont pas vérifiés par défaut. SetTLS_VERIFY à ON pour vérifier les certificats et / ou utiliser EXPECTED_HASH pour vérifier le contenu téléchargé. Définissez TLS_CAINFO pour spécifier un fichier d’autorité customCertificate. Si l’une des options TLS n’est pas fournie, CMakewill vérifiera les variables CMAKE_TLS_VERIFY et CMAKE_TLS_CAINFO, respectivement.
UPLOAD téléchargera le fichier donné vers l’URL donnée. Si LOG var est spécifié, un journal du téléchargement sera mis en var. Si STATUS var est spécifié, le statut de l’opération sera mis en var. Le statut est renvoyé dans une liste de longueur 2. Le premier élément est la valeur numericreturn pour l’opération et le second élément est une valeur de chaîne pour l’erreur. Une erreur numérique de 0 signifie aucune erreur dans l’opération. Si le délai d’EXPIRATION est spécifié, l’opération sera expiréaprès quelques secondes, le temps doit être spécifié sous la forme d’un entier. TheINACTIVITY_TIMEOUT spécifie un nombre entier de secondes d’inactivité après quoi l’opération doit se terminer. Si Show_progress est spécifié, les informations de progression seront imprimées sous forme de messages de statut jusqu’à la fin de l’opération.
TIMESTAMP écrira une représentation sous forme de chaîne de caractères de la modification du nom de fichier timeof en variable.
Si la commande ne parvient pas à obtenir une variable d’horodatage, la chaîne vide « » sera affectée.
Voir la documentation de la sous-commande HORODATAGE de chaîne pour plus de détails.
La commande file() fournit également des signatures de COPIE et d’INSTALLATION:
file(<COPY|INSTALL> files... DESTINATION <dir> ] )
La signature COPIER copie les fichiers, les répertoires et les liens symboliques dans 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 inputpermissions sauf si des autorisations explicites ou NO_SOURCE_PERMISSIONS sont données (la valeur par défaut est USE_SOURCE_PERMISSIONS). Reportez-vous à la commande install (DIRECTORY) pour la documentation des autorisations, du MODÈLE, de l’EXPRESSION RÉGULIÈRE et des options d’exclusion.
La signature d’INSTALLATION diffère légèrement de COPY : elle imprime statusmessages et NO_SOURCE_PERMISSIONS est par défaut. Les scripts d’installationgénérés par la commande install() utilisent cette signature (avec certaines options non documentées pour un usage interne).
GENERATE écrira un < fichier de sortie > avec le contenu d’un < fichier d’entrée >, ou de < contenu d’entrée >. La sortie est généréeconditionnellement basée sur le contenu de la condition < >. Le fichier est écrit au moment de la génération de CMake et l’entrée peut contenir des expressions génératrices. Les conditions < >, <output_file > et <input_file > peuvent également contenir des expressions de générateur. La condition < > doit être évaluée à ‘0’ ou ‘1’. Le < fichier de sortie > doit évaluer à un nom unique parmi toutes les configurations et parmi toutes les invocations de fichier (GÉNÉRER).