Comando di manipolazione dei file.
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 scriverà un messaggio in un file chiamato ‘filename’. Itoverwrites il file se già esiste, e crea il file se itdoes non esiste. (Se il file è un input di compilazione, utilizzare configure_file toupdate il file solo quando il suo contenuto cambia.)
APPEND scriverà un messaggio in un file come WRITE, tranne che lo invierà alla fine del file
READ leggerà il contenuto di un file e lo memorizzerà nella variabile.Inizierà dall’offset dato e leggerà fino a numBytes. Se viene fornito l’esadecimale dell’oggetto, i dati binari verranno convertiti in rappresentazione esadecimale e questo verrà memorizzato nella variabile.
MD5, SHA1, SHA224, SHA256, SHA384 e SHA512 calcoleranno l’hash acriptografico del contenuto di un file.
LE STRINGHE analizzeranno un elenco di stringhe ASCII da un file e lo memorizzeranno in una variabile. I dati binari nel file vengono ignorati. I caratteri di ritorno a capo(CR) vengono ignorati. Funziona anche per i file Intel Hex e MotorolaS-record, che vengono automaticamente convertiti in formato binario quando li leggono. Disabilita questo usando NO_HEX_CONVERSION.
LIMIT_COUNT imposta il numero massimo di stringhe da restituire. LIMIT_INPUTsets il numero massimo di byte da leggere dal file di input.LIMIT_OUTPUT imposta il numero massimo di byte da memorizzare in outputvariable. LENGTH_MINIMUM imposta la lunghezza minima di una stringa da ripristinare. Le stringhe più brevi vengono ignorate. LENGTH_MAXIMUM imposta la lunghezza massima di una stringa da restituire. Le stringhe più lunghe sono divise in cordenon più lungo della lunghezza massima. NEWLINE_CONSUME consente a newline di essere incluse nelle stringhe invece di terminarle.
REGEX specifica un’espressione regolare che una stringa deve corrispondere a bereturned. Uso tipico
file(STRINGS myfile.txt myfile)
memorizza un elenco nella variabile “myfile” in cui ogni elemento è una lineadal file di input.
GLOB genererà un elenco di tutti i file che corrispondono alle globbingexpressions e lo memorizzerà nella variabile. Le espressioni di globbing sono simili alle espressioni regolari, ma molto più semplici. Se il flag RELATIVO è specificato per un’espressione, i risultati verranno restituiti come percorso arelativo al percorso specificato. (Non è consigliabile utilizzare GLOB per raccogliere un elenco di file sorgente dall’albero dei sorgenti. Se noCMakeLists.il file txt cambia quando viene aggiunta o rimossa un’origine, quindi il sistema di compilazione generato non può sapere quando chiedere a CMake di rigenerarsi.)
Esempi di espressioni globbing includono:
*.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 genererà una lista simile al GLOB regolare, exceptit attraverserà tutte le sottodirectory della directory abbinata andmatch i file. Le sottodirectory che sono collegamenti simbolici vengono attraversate solose FOLLOW_SYMLINKS è dato o cmake policy CMP0009 non è impostato su NEW.Vedere cmake-help-policy CMP0009 per ulteriori informazioni.
Esempi di globbing ricorsivo includono:
/dir/*.py - match all python files in /dir and subdirectories
MAKE_DIRECTORY creerà le directory date, anche se le loro parentdirectories non esistono ancora
RINOMINA sposta un file o una directory all’interno di un filesystem, sostituendo atomicamente thedestination.
REMOVE rimuoverà i file dati, anche nelle sottodirectory
REMOVE_RECURSE rimuoverà i file e le directory dati, anchedirectory non vuote
RELATIVE_PATH determinerà il percorso relativo dalla directory al file dato.
TO_CMAKE_PATH convertirà il percorso in un percorso di stile cmake con unix /.L’input può essere un singolo percorso o un percorso di sistema come ” EN ENV {PATH}”.Nota le virgolette intorno alla chiamata ENV TO_CMAKE_PATH prende solo un argomento. Questo comando convertirà anche i listdelimiters nativi per un elenco di percorsi come la variabile d’ambiente PATH.
TO_NATIVE_PATH funziona proprio come TO_CMAKE_PATH, ma convertirà da acmake style path nello stile path nativo per Windows e / forUNIX.
DOWNLOAD scaricherà l’URL specificato nel file specificato. Se LOG var isspecified un registro del download sarà messo in var. Se lo STATO var isspecified lo stato dell’operazione sarà messo in var. Lo statoè restituito in un elenco di lunghezza 2. Il primo elemento è il valore numericreturn per l’operazione e il secondo elemento è un stringvalue per l’errore. Un errore numerico 0 significa nessun errore nell’operazione. Se il tempo di TIMEOUT è specificato, l’operazione sarà timeoutdopo il tempo secondi, il tempo deve essere specificato come un numero intero. TheINACTIVITY_TIMEOUT specifica un numero intero di secondi ofinactivity dopo il quale l’operazione deve terminare. IfEXPECTED_HASH ALGO = value is specified, the operation will verify thatthe downloaded file’s actual hash matches the expected value, whereealgo is one of MD5, SHA1, SHA224, SHA256, SHA384, or SHA512. Se non corrisponde, l’operazione fallisce con un errore. (“EXPECTED_MD5sum” è a mano corta per “EXPECTED_HASH MD5 = sum”.) Se SHOW_PROGRESS è specificato, le informazioni di avanzamento verranno stampate come messaggi di stato fino al completamento dell’operazione. Per gli URL https CMake deve essere costruitocon OpenSSL. I certificati TLS / SSL non sono controllati per impostazione predefinita. SetTLS_VERIFY su ON per controllare i certificati e / o utilizzare EXPECTED_HASH per verificare il contenuto scaricato. Impostare TLS_CAINFO per specificare un file di autorità customCertificate. Se non viene fornita l’opzione TLS, cmakeverrà controllare le variabili CMAKE_TLS_VERIFY e CMAKE_TLS_CAINFO, rispettivamente.
UPLOAD caricherà il file specificato nell’URL specificato. Se LOG var isspecified un registro del caricamento sarà messo in var. Se lo STATO var isspecified lo stato dell’operazione sarà messo in var. Lo statoè restituito in un elenco di lunghezza 2. Il primo elemento è il valore numericreturn per l’operazione e il secondo elemento è un stringvalue per l’errore. Un errore numerico 0 significa nessun errore nell’operazione. Se il tempo di TIMEOUT è specificato, l’operazione sarà timeoutdopo il tempo secondi, il tempo deve essere specificato come un numero intero. TheINACTIVITY_TIMEOUT specifica un numero intero di secondi ofinactivity dopo il quale l’operazione deve terminare. IfSHOW_PROGRESS è specificato, informazioni di avanzamento verranno stampati messaggi asstatus fino al completamento dell’operazione.
TIMESTAMP scriverà una rappresentazione stringa del nome del file timeof modifica alla variabile.
Se il comando non è in grado di ottenere una variabile timestamp, verrà impostata la stringa vuota “”.
Vedere la documentazione del sotto-comando string TIMESTAMP per ulteriori dettagli.
Il comando file () fornisce anche le firme di COPIA e INSTALLAZIONE:
file(<COPY|INSTALL> files... DESTINATION <dir> ] )
La firma COPIA copia file, directory e collegamenti simbolici alla cartella adestination. I percorsi di input relativi vengono valutati rispetto alla directory di origine corrente e viene valutata una destinazione relativa rispetto alla directory di compilazione corrente. Copyingpreserves timestamp del file di input e ottimizza un file se esiste nella destinazione con lo stesso timestamp. La copia conserva inputpermissions a meno che non vengano fornite autorizzazioni esplicite o NO_SOURCE_PERMISSIONS (l’impostazione predefinita è USE_SOURCE_PERMISSIONS). Vedere il comando install (DIRECTORY) per la documentazione di autorizzazioni, PATTERN, REGEX ed EXCLUDEoptions.
La firma di INSTALLAZIONE differisce leggermente dalla COPIA: stampa statusmessages e NO_SOURCE_PERMISSIONS è predefinita. Gli script di installazionigenerati dal comando install () utilizzano questa firma (con alcune opzioni non documentate per uso interno).
GENERA scriverà un< output_file>con contenuto da un< input_file >, o da<input_content >. L’output viene generatocondizionalmente in base al contenuto della condizione <>. Il file viene scritto in CMake generate-time e l’input può contenere generatorexpressions. La condizione <>, < output_file>e < input_file> può anche contenere espressioni del generatore. La condizione < > deve valutare toeither ‘ 0 ‘ o ‘1’. < output_file> deve valutare un nome univocotra tutte le configurazioni e tra tutte le invocazioni di file(GENERATE).