comanda de manipulare a fișierelor.
file(WRITE <filename> <content>...)file(APPEND <filename> <content>...)
scrieți <content>
într-un fișier numit <filename>
. Dacă fișierul nu există, acesta va fi creat. Dacă fișierul există deja, modul WRITE
îl va suprascrie și modul APPEND
se va adăuga până la sfârșit.Vor fi create toate directoarele din calea specificată de <filename>
care nu există.
Dacă fișierul este o intrare de construire, utilizați comanda configure_file()
pentru a actualiza fișierul numai atunci când conținutul său se modifică.
file(READ <filename> <variable> )
citiți conținutul dintr-un fișier numit <filename>
și stocați-l într-un<variable>
. Opțional începe de la dat <offset>
șicitiți cel mult <max-in>
octeți. Opțiunea HEX
determină conversia datelor într-o reprezentare hexazecimală (utilă pentru datele binare).
file(STRINGS <filename> <variable> )
analizați o listă de șiruri ASCII de la <filename>
și stocați-o în<variable>
. Datele binare din fișier sunt ignorate. Caracterele de retur (\r
, CR) sunt ignorate. Opțiunile sunt:
LENGTH_MAXIMUM <max-len>
luați în considerare numai șiruri de cel mult o lungime dată.
LENGTH_MINIMUM <min-len>
luați în considerare numai șiruri de cel puțin o lungime dată.
LIMIT_COUNT <max-num>
limitați numărul de șiruri distincte care trebuie extrase.
LIMIT_INPUT <max-in>
limitați numărul de octeți de intrare pentru a citi din fișier.
LIMIT_OUTPUT <max-out>
limita numărul de octeți totale pentru a stoca în <variable>
.
NEWLINE_CONSUME
tratați caracterele newline (\n
, LF) ca parte a conținutului șirului în loc să le terminați.
NO_HEX_CONVERSION
fișierele Intel Hex și Motorola s-record sunt convertite automat tobinary în timp ce citiți, cu excepția cazului în care această opțiune este dată.
REGEX <regex>
luați în considerare numai șirurile care se potrivesc cu expresia regulată dată.
ENCODING <encoding-type>
luați în considerare șirurile unei codificări date. Codificările acceptate în prezent sunt: UTF-8, UTF-16le, UTF-16be, UTF-32le, UTF-32be. Dacă opțiunea de codificare nu este furnizată și fișierul are o marcă de ordine octet, opțiunea de codificare va fi implicită pentru a respecta marca de ordine octet.
de exemplu, codul
file(STRINGS myfile.txt myfile)
stochează o listă în variabila myfile
în care fiecare element este o linie din fișierul de intrare.
file(<HASH> <filename> <variable>)
calculați un hash criptografic al conținutului <filename>
șistocați-l într-un <variable>
. Numele algoritmului <HASH>
suportate sunt cele listate de comanda string (<HASH>).
file(GLOB <variable> )file(GLOB_RECURSE <variable> )
generați o listă de fișiere care se potrivesc cu <globbing-expressions>
șistocați-l în <variable>
. Expresiile Globbing sunt similare cuexpresii regulate, dar mult mai simple. Dacă RELATIVE
flag isspecified, rezultatele vor fi returnate ca căi relative la Calea dată. Rezultatele vor fi ordonate lexicografic.
implicit GLOB
liste directoare – directoarele sunt omise în rezultat dacăLIST_DIRECTORIES
este setat la false.
notă
nu recomandăm utilizarea GLOB pentru a colecta o listă de fișiere sursă din arborele sursă. Dacă nu CMakeLists.txt fișier se schimbă atunci când o sursă isadded sau eliminat, atunci sistemul construi generat nu poate ști când toask CMake pentru a regenera.
Exemple de expresii globbing includ:
*.cxx - match all files with extension cxx*.vt? - match all files with extension vta,...,vtzf.txt - match files f3.txt, f4.txt, f5.txt
modul GLOB_RECURSE
va traversa toate subdirectoarele din Directorul thematched și se va potrivi cu fișierele. Subdirectoarele care sunt legături simbolice sunt traversate numai dacăFOLLOW_SYMLINKS
este dat sau politica CMP0009
nu este setată la NEW
.
implicit GLOB_RECURSE
omite directoarele din lista de rezultate – setareaLIST_DIRECTORIES
la true adaugă directoarele la lista de rezultate.Dacă FOLLOW_SYMLINKS
este dat sau politica CMP0009
nu este setată laOLD
atunci LIST_DIRECTORIES
tratează legăturile simbolice ca directoare.
Exemple de globbing recursiv includ:
/dir/*.py - match all python files in /dir and subdirectories
file(RENAME <oldname> <newname>)
mutați un fișier sau un director dintr-un sistem de fișiere de la <oldname>
la<newname>
, înlocuind destinația Atomic.
file(REMOVE )file(REMOVE_RECURSE )
eliminați fișierele date. Modul REMOVE_RECURSE
va elimina datulfișiere și directoare, de asemenea directoare ne-goale. Nici o eroare este emisă dacă fișierul agiven nu există.
file(MAKE_DIRECTORY )
creați directoarele date și părinții lor după cum este necesar.
file(RELATIVE_PATH <variable> <directory> <file>)
calculați calea relativă de la un <directory>
la un <file>
și stocați-o în <variable>
.
file(TO_CMAKE_PATH "<path>" <variable>)file(TO_NATIVE_PATH "<path>" <variable>)
modul TO_CMAKE_PATH
convertește un nativ <path>
într-un CMake-stylepath cu slash-uri înainte (/
). Intrarea poate fi o singură cale sau o cale de căutare a sistemului ca $ENV{PATH}
. O cale de căutare va fi convertită într-o listă în stil cmake separată de caractere ;
.
modul TO_NATIVE_PATH
convertește un stil cmake<path>
într-o cale nativă cu bare oblice specifice platformei (\
pe Windows și /
în altă parte).
folosiți întotdeauna ghilimele duble în jurul <path>
pentru a vă asigura că este tratat ca un singur argument la această comandă.
file(DOWNLOAD <url> <file> )file(UPLOAD <file> <url> )
modul DOWNLOAD
descarcă <url>
dat la un <file>
local.Modul UPLOAD
Încarcă un <file>
local la un <url>
dat.
opțiunile pentru ambele DOWNLOAD
și UPLOAD
sunt:
INACTIVITY_TIMEOUT <seconds>
încheiați operațiunea după o perioadă de inactivitate.
LOG <variable>
stocați un jurnal lizibil al operației într-o variabilă.
SHOW_PROGRESS
imprimați informațiile de progres ca mesaje de stare până când operația este finalizată.
STATUS <variable>
stocați starea rezultată a operației într-o variabilă.Starea este o listă separată ;
a lungimii 2.Primul element este valoarea numerică returnată pentru operație, iar al doilea element este o valoare șir pentru eroare.O eroare numerică 0
înseamnă că nu există nicio eroare în operație.
TIMEOUT <seconds>
încheiați operația după ce a trecut un anumit timp total.
USERPWD <username>:<password>
Setați numele de utilizator și parola pentru funcționare.
HTTPHEADER <HTTP-header>
Antet HTTP pentru funcționare. Subopțiunea poate fi repetată de mai multe ori.
opțiuni suplimentare pentru DOWNLOAD
sunt:
EXPECTED_HASH ALGO=<value>
verificați dacă hash-ul conținutului descărcat se potrivește cu valoarea așteptată, unde
ALGO
este unul dintre algoritmii suportați defile(<HASH>)
.Dacă nu se potrivește, operația eșuează cu o eroare.
EXPECTED_MD5 <value>
istoric scurt-mână pentru EXPECTED_HASH MD5=<value>
.
TLS_VERIFY <ON|OFF>
specificați dacă să verificați certificatul serverului pentru URL-urile https://
.Implicit este de a nu verifica.
TLS_CAINFO <file>
specificați un fișier personalizat de autoritate de certificare pentru https://
URL-uri.
pentru https://
URL-uri CMake trebuie să fie construit cu suport OpenSSL. TLS/SSL
certificatele nu sunt verificate în mod implicit. Setați TLS_VERIFY
la ON
tocheck certificate și/sau utilizați EXPECTED_HASH
pentru a verifica conținutul descărcat.Dacă niciuna dintre opțiunile TLS
nu este dată CMake va verifica variabileleCMAKE_TLS_VERIFY
și CMAKE_TLS_CAINFO
, respectiv.
file(TIMESTAMP <filename> <variable> )
calculați o reprezentare șir a timpului de modificare a <filename>
și stocați-l în <variable>
. În cazul în care comanda nu poate obține variabila atimestamp va fi setată la șirul gol („”).
a se vedea comanda string(TIMESTAMP)
pentru documentarea opțiunilor <format>
și UTC
.
file(GENERATE OUTPUT output-file <INPUT input-file|CONTENT content> )
generați un fișier de ieșire pentru fiecare configurație de construire acceptată de curentulCMake Generator
. Evaluațigenerator expressions
din conținutul de intrare pentru a produce conținutul de ieșire. Opțiunile sunt:
CONDITION <condition>
generați fișierul de ieșire pentru o anumită configurație numai dacăcondiția este adevărată. Condiția trebuie să fie 0
sau 1
după evaluarea expresiilor generatorului.
CONTENT <content>
utilizați conținutul dat în mod explicit ca intrare.
INPUT <input-file>
utilizați conținutul dintr-un fișier dat ca intrare.O cale relativă este tratată în raport cu valoareaCMAKE_CURRENT_SOURCE_DIR
. A se vedea politica CMP0070
.
OUTPUT <output-file>
specificați numele fișierului de ieșire de generat. Utilizați expresii ale generatoruluiprecum $<CONFIG>
pentru a specifica un nume de fișier de ieșire specific configurației. Configurațiile Multiple pot genera numai același fișier de ieșiredacă conținutul generat este identic. În caz contrar, <output-file>
trebuie să evalueze la un nume unic pentru fiecare configurație.O cale relativă (după evaluarea expresiilor generatorului) este tratatăcu privire la valoarea CMAKE_CURRENT_BINARY_DIR
.A se vedea politica CMP0070
.
trebuie dată exact o opțiune CONTENT
sau INPUT
. Un fișier specific OUTPUT
poate fi numit prin cel mult o invocare a file(GENERATE)
.Fișierele generate sunt modificate și timestamp lor actualizate pe cmakeruns ulterioare numai în cazul în care conținutul lor este schimbat.
rețineți, de asemenea, că file(GENERATE)
nu creează fișierul de ieșire până la faza de generare. Fișierul de ieșire nu va fi fost încă scris când se întoarce comandafile(GENERATE)
, este scris numai după procesarea tuturor fișierelor CMakeLists.txt
ale unui proiect.
file(<COPY|INSTALL> <files>... DESTINATION <dir> ] )
semnătura COPY
copiază fișiere, directoare și legături simbolice în folderul adestination. Căile de intrare Relative sunt evaluate cu respect față de directorul sursă curent, iar o destinație relativă este evaluată în raport cu directorul de construire curent. Copyingpreserves fișier de intrare timestamps, și optimizează un fișier în cazul în care existsat destinația cu același timestamp. Copierea păstrează inputpermissions excepția cazului în permisiuni explicite sau NO_SOURCE_PERMISSIONS
sunt date (implicit este USE_SOURCE_PERMISSIONS
).
a se vedea install(DIRECTORY)
comanda pentru documentația ofpermissions, FILES_MATCHING
, PATTERN
, REGEX
, și EXCLUDE
opțiuni. Copierea directoarelor păstrează structuradin conținutul lor, chiar dacă opțiunile sunt utilizate pentru a selecta un subset defișiere.
semnătura INSTALL
diferă ușor de COPY
: se printsstatus mesaje (sub rezerva CMAKE_INSTALL_MESSAGE
variabila),și NO_SOURCE_PERMISSIONS
este implicit.Scripturi de instalare generate de comanda install()
utilizați această semnătură (cu unele opțiuni nedocumentate pentru uz intern).
file(LOCK <path> )
blocați un fișier specificat de <path>
dacă nu există opțiuneaDIRECTORY
prezentă și fișierul <path>/cmake.lock
altfel. Fișierul va fi blocat pentru domeniul definit de opțiuneaGUARD
(valoarea implicită este PROCESS
). RELEASE
opțiunea poate fi utilizatăpentru a debloca fișierul în mod explicit. Dacă opțiunea TIMEOUT
nu este specificat CMake willwait până blocare reuși sau până când apare eroare fatală. DacăTIMEOUT
este setat la 0
blocarea va fi încercată o dată și rezultatul va fi raportat imediat. DacăTIMEOUT
nu este 0
CMake va încerca să blocheze fișierul pentru perioada specificată de valoarea <seconds>
. Orice eroare va fi interpretată ca fatală dacă nu există o opțiuneRESULT_VARIABLE
. În caz contrar, rezultatul va fi stocat în <variable>
și va fi 0
la succes sau mesaj de eroare la eșec.
rețineți că blocarea este consultativă – nu există nicio garanție că alte procese vor respecta această blocare, adică blocarea sincronizează două sau mai multe instanțe CMake partajând unele resurse modificabile. Logica similară aplicată directorului părinte DIRECTORY
de blocare a opțiunilor nu împiedică alte comenzi LOCK
să blocheze directorul sau fișierul anychild.
încercarea de a bloca fișierul de două ori nu este permisă. Orice directoare intermediare șifișierul în sine va fi creat dacă nu există. GUARD
și TIMEOUT
opțiuni ignorate pe RELEASE
operațiune.