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.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 CMP0009nu 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ă, undeALGO este unul dintre algoritmii suportați de file(<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 expressionsdin 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 1după 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_PERMISSIONSsunt 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.

Lasă un răspuns

Adresa ta de email nu va fi publicată.