fișier
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.(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ți numărul de octeți totali de stocat î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(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> <filename> <variable>)
calculați un hash criptografic al conținutului <filename>
șistocați-l într-un <variable>
.
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ă. Nu este definită o ordine specifică a rezultatelor. Dacă ordinea este importantă, atunci sortați lista în mod explicit (de exemplu, folosind comanda list(SORT)
).
implicitGLOB
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 fișierele și directoarele givenfiles, de asemenea, directoare non-goale
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>
șistocați-l î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.
opțiuni suplimentare pentru DOWNLOAD
sunt:
EXPECTED_HASH ALGO=<value>
verificați dacă hash-ul conținutului descărcat corespunde valorii așteptate, unde
ALGO
este unul dintreMD5
,SHA1
,SHA224
,SHA256
,SHA384
, sauSHA512
. 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ă opțiunea TLS
nu este dată, CMake va verifica variabilele CMAKE_TLS_VERIFY
și, respectiv, CMAKE_TLS_CAINFO
.
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.
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.
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 pe cmake ulterioare se execută numai în cazul în care conținutul lor sa schimbat.
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țiunea DIRECTORY
prezentă și fișierul<path>/cmake.lock
altfel. Fișierul va fi blocat pentru domeniul definit de opțiunea GUARD
(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 va aștepta până când blocarea va reuși sau până când apare o 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.