file¶
File manipulation command.
file(WRITE <filename> <content>...)file(APPEND <filename> <content>...)
Kirjoita <content>
tiedostoon nimeltä <filename>
. Jos tiedostoa ei ole olemassa, se luodaan. Jos tiedosto on jo olemassa, WRITE
tila korvaa sen ja APPEND
tila liitetään loppuun.(Jos tiedosto on build input, käytä configure_file()
– komentoa päivittääksesi tiedoston vasta, kun sen sisältö muuttuu.)
file(READ <filename> <variable> )
Lue sisältö <filename>
– nimisestä tiedostosta ja säilytä se<variable>
. Vaihtoehtoisesti aloitetaan annetusta <offset>
andread enintään <max-in>
tavua. Valitsin HEX
saa tiedon muuntumaan heksadesimaaliesitykseksi (hyödyllinen binääridatalle).
file(STRINGS <filename> <variable> )
jäsennä luettelo ASCII-kielistä <filename>
ja säilytä se<variable>
. Tiedoston binääridataa ei huomioida. Vaunun palautusmerkkejä (\r
, CR) ei huomioida. Vaihtoehdot ovat:
LENGTH_MAXIMUM <max-len>
harkitse vain Jouset enintään tietyn pituuden.
LENGTH_MINIMUM <min-len>
tarkastellaan vain merkkijonoja, joiden pituus on vähintään tietty.
LIMIT_COUNT <max-num>
Rajoita irrotettavien erillisten merkkijonojen määrää.
LIMIT_INPUT <max-in>
Rajoita tiedostosta luettavien syötettävien tavujen määrää.
LIMIT_OUTPUT <max-out>
Rajoita tallennettavien tavujen kokonaismäärää <variable>
.
NEWLINE_CONSUME
käsittele newline-merkkejä (\n
, LF) osana merkkijonosisältöä niiden päättämisen sijaan.
NO_HEX_CONVERSION
Intel Hex – ja Motorola s-record-tiedostot muunnetaan automaattisesti lukiessa, ellei tätä vaihtoehtoa anneta.
REGEX <regex>
tarkastellaan vain merkkijonoja, jotka vastaavat annettua säännöllistä lauseketta.
ENCODING <encoding-type>
tarkastellaan tietyn koodauksen merkkijonoja. Tällä hetkellä tuetut koodaukset ovat:UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. Jos KOODAUSVAIHTOEHTOA ei ole annettu ja tiedostossa on Tavujärjestysmerkki, KOODAUSVAIHTOEHTO asetetaan oletusarvoisesti Tavujärjestysmerkin mukaiseksi.
esimerkiksi koodi
file(STRINGS myfile.txt myfile)
tallentaa muuttujaan myfile
luettelon, jossa jokainen kohde on line syötetiedoston sisällä.
file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> <filename> <variable>)
laske kryptografinen hash <filename>
sisällöstä ja säilytä se <variable>
.
file(GLOB <variable> )file(GLOB_RECURSE <variable> )
Luo luettelo tiedostoista, jotka vastaavat <globbing-expressions>
ja siirrä se <variable>
: ään. Globbing-lausekkeet ovat samankaltaisiasäännölliset lausekkeet, mutta paljon yksinkertaisempia. Jos RELATIVE
lippu on määritelty, tulokset palautetaan givenpolun suhteellisina polkuina. Mitään tiettyä tulosten järjestystä ei ole määritelty. Jos järjestys on tärkeä, merkitse luettelo eksplisiittisesti (esim. komennolla list(SORT)
).
oletusarvoisesti GLOB
luetteloi hakemistot – hakemistot jätetään tuloksesta pois, josLIST_DIRECTORIES
on asetettu epätosiksi.
Huomautus
emme suosittele globin käyttöä lähdetiedostojen luettelon keräämiseen lähdepuustasi. Jos ei Cmakelisteja.txt tiedosto muuttuu, kun lähde onlisätty tai poistettu sitten luotu rakentaa järjestelmä ei voi tietää, milloin pyytää CMake uudistua.
esimerkkejä pallottavista lausekkeista ovat:
*.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
– tila kulkee kaikkien matched-kansion alikansioiden läpi ja täsmää tiedostoihin. Symlinks – alikansiot kulkevat vain, jos FOLLOW_SYMLINKS
on annettu tai käytäntöäCMP0009
ei ole asetettu arvoon NEW
.
oletuksena GLOB_RECURSE
jättää hakemistot tulosluettelosta-asetusLIST_DIRECTORIES
tosi lisää hakemistoja tulosluetteloon.Jos FOLLOW_SYMLINKS
annetaan tai käytäntöä CMP0009
ei aseteta arvoonOLD
, LIST_DIRECTORIES
käsittelee symlinkkejä hakemistoina.
esimerkkejä rekursiivisesta globbingistä ovat:
/dir/*.py - match all python files in /dir and subdirectories
file(RENAME <oldname> <newname>)
Siirrä tiedosto tai kansio tiedostojärjestelmän sisällä arvosta <oldname>
arvoon<newname>
ja korvaa kohde atomisesti.
file(REMOVE )file(REMOVE_RECURSE )
Poista annetut tiedostot. REMOVE_RECURSE
– tila poistaa givenfiles-ja hakemistot, myös ei-tyhjät hakemistot
file(MAKE_DIRECTORY )
luo annetut hakemistot ja niiden vanhemmat tarpeen mukaan.
file(RELATIVE_PATH <variable> <directory> <file>)
laske suhteellinen polku a <directory>
a <file>
ja säilytä se <variable>
.
file(TO_CMAKE_PATH "<path>" <variable>)file(TO_NATIVE_PATH "<path>" <variable>)
TO_CMAKE_PATH
– moodi muuttaa natiivin <path>
cmake-stylepatiksi eteenpäin viistävillä (/
). Syöte voi olla yksittäinen polku tai järjestelmähakupolku, kuten $ENV{PATH}
. Hakupolku muunnetaan cmake-tyyliseksi listaksi, jota erottaa ;
merkkiä.
TO_NATIVE_PATH
-tila muuntaa cmake-tyylisen <path>
nativepathiksi alustakohtaisilla viilloilla (\
Windowsissa ja /
muualla).
käytä aina kaksinkertaisia lainausmerkkejä <path>
ympärillä varmistuaksesi, että sitä kohdellaan yhtenä argumenttina tälle komennolle.
file(DOWNLOAD <url> <file> )file(UPLOAD <file> <url> )
DOWNLOAD
– tila Lataa annetun <url>
paikalliselle <file>
.UPLOAD
– moodi lataa paikallisen <file>
annettuun <url>
.
vaihtoehdot sekä DOWNLOAD
että UPLOAD
ovat:
INACTIVITY_TIMEOUT <seconds>
keskeytä toiminta käyttämättömyyden jälkeen.
LOG <variable>
Tallenna muuttujaan ihmisen luettavissa oleva loki operaatiosta.
SHOW_PROGRESS
tulosta edistymistiedot tilaviesteinä, kunnes operaatio on valmis.
STATUS <variable>
säilytä operaation tuloksena saatu tila muuttujaan.Status on ;
erotettu luettelo pituuksista 2.Ensimmäinen elementti on operaation numeerinen palautusarvo ja toinen elementti on merkkijonon arvo virheelle.0
numeerinen virhe tarkoittaa, ettei operaatiossa ole virhettä.
TIMEOUT <seconds>
Lopeta toiminta tietyn kokonaisajan päätyttyä.
lisävaihtoehdot DOWNLOAD
ovat:
EXPECTED_HASH ALGO=<value>
varmista, että ladattu sisältö hash vastaa odotusarvoa, jossa
ALGO
on yksiMD5
,SHA1
,SHA224
,SHA256
,SHA384
, taiSHA512
. Jos se ei täsmää, toiminto epäonnistuu virheellä.
EXPECTED_MD5 <value>
Historiallinen lyhytkäsi EXPECTED_HASH MD5=<value>
.
TLS_VERIFY <ON|OFF>
Määritä, tarkistetaanko palvelinvarmenne https://
URL-osoitteille.Oletusarvo on olla vahvistamatta.
TLS_CAINFO <file>
Määritä oma Varmenneviranomaistiedosto https://
URL-osoitteille.
https://
URL-osoitteet CMake on rakennettava OpenSSL-tuella. TLS/SSL
varmenteita ei tarkisteta oletusarvoisesti. Aseta TLS_VERIFY
ON
tocheck-varmenteet ja / tai käytä EXPECTED_HASH
ladatun sisällön tarkistamiseen.Jos valitsinta TLS
ei anneta, CMake tarkistaa muuttujatCMAKE_TLS_VERIFY
ja CMAKE_TLS_CAINFO
.
file(TIMESTAMP <filename> <variable> )
laske merkkijono esitys muutosaika <filename>
ja tallentaa sen <variable>
. Jos komentoa ei voi saada atimestamp-muuttuja asetetaan tyhjään merkkijonoon (“”).
Katso string(TIMESTAMP)
– komento <format>
ja UTC
– vaihtoehtojen dokumentointiin.
file(GENERATE OUTPUT output-file <INPUT input-file|CONTENT content> )
luo tulostustiedosto jokaiselle rakentamisasetukselle, jota nykyinenCMake Generator
tukee. Arvioigenerator expressions
syötesisällöstä tuotosisällön tuottamiseksi. Vaihtoehdot ovat:
CONDITION <condition>
luo tulostiedosto tietylle määritykselle vain, jos ehto on tosi. Ehdon on oltava joko 0
tai 1
generaattorin lausekkeiden arvioinnin jälkeen.
CONTENT <content>
käytä suoraan annettua sisältöä syötteenä.
INPUT <input-file>
käytä tietyn tiedoston sisältöä syötteenä.
OUTPUT <output-file>
Määritä tuotettavan tiedoston nimi. Käytä generaattorin ekspressiota, kuten $<CONFIG>
, määrittääksesi asetuskohtaisen lähtötiedoston nimen. Useat kokoonpanot voivat luoda saman tulostustiedoston vain, jos luotu sisältö on identtinen. Muussa tapauksessa <output-file>
: n on arvioitava kullekin konfiguraatiolle yksilöllinen nimi.
on annettava tasan yksi CONTENT
tai INPUT
vaihtoehto. TiettyOUTPUT
– tiedosto voidaan nimetä enintään yhdellä kutsulla file(GENERATE)
.Luotuja tiedostoja muokataan myöhemmissä cmake-suorituksissa vain, jos niiden sisältö muuttuu.
file(<COPY|INSTALL> <files>... DESTINATION <dir> ] )
COPY
allekirjoitus kopioi tiedostoja, kansioita ja symlinkkejä adestination-kansioon. Suhteelliset syöttöpolut arvioidaan suhteessa nykyiseen lähdehakemistoon, ja suhteellinen kohde arvioidaan suhteessa nykyiseen rakentamishakemistoon. Copying tallentaa tulotiedoston aikaleimat ja optimoi tiedoston, jos se on olemassa kohteessa, jossa on sama aikaleima. Kopiointi säilyttää inputpermissiot, ellei ole annettu nimenomaisia oikeuksia tai NO_SOURCE_PERMISSIONS
(oletusarvo on USE_SOURCE_PERMISSIONS
).
Katso komennosta install(DIRECTORY)
asiakirjojen dokumentointi, FILES_MATCHING
, PATTERN
, REGEX
, jaEXCLUDE
vaihtoehdot. Hakemistojen kopiointi säilyttää niiden sisällön rakenteen, vaikka tiedostojen osajoukon valintaan käytettäisiinkin vaihtoehtoja.
INSTALL
allekirjoitus eroaa hieman COPY
: se tulostaa statussanomia (CMAKE_INSTALL_MESSAGE
muuttujan mukaan),ja NO_SOURCE_PERMISSIONS
on oletusarvo.Komennolla install()
luodut asennus skriptit käyttävät tätä allekirjoitusta (sisäisessä käytössä on joitain paperittomia vaihtoehtoja).
file(LOCK <path> )
Lukitse <path>
määritetty tiedosto, jos ei ole DIRECTORY
vaihtoehto ja tiedosto<path>/cmake.lock
muuten. Tiedosto lukitaanGUARD
– valitsimen määrittelemälle soveltamisalalle (oletusarvo on PROCESS
). RELEASE
valintaa voidaan käyttää tiedoston avaamiseen eksplisiittisesti. Jos vaihtoehtoa TIMEOUT
ei ole määritelty, CMake odottaa, kunnes lukko onnistuu tai kunnes tapahtuu kohtalokas virhe. Jos TIMEOUT
on asetettu arvoon0
, lukitusta kokeillaan kerran ja tuloksesta ilmoitetaan välittömästi. JosTIMEOUT
ei ole 0
CMake yrittää lukita tiedoston <seconds>
arvolla määritellyltä ajanjaksolta. Mahdolliset virheet tulkitaan kohtalokkaiksi, josRESULT_VARIABLE
– vaihtoehtoa ei ole. Muussa tapauksessa tulos tallennetaan numeroon <variable>
ja se on 0
onnistumisesta tai virheilmoitus epäonnistumisesta.
huomaa, että lukitus on neuvoa – antava-ei ole takeita siitä, että muut prosessit vastaavat tätä lukkoa, eli Lukko synkronoi kaksi tai useampia CMake-tapauksia jakaen joitakin muokattavia resursseja. Samantapainen logiikka, jota sovelletaan DIRECTORY
option lukitseminen ylähakemistoon, ei estä muita LOCK
komentoja lukitsemasta anychild-hakemistoa tai-tiedostoa.
tiedoston lukitsemista kahdesti ei sallita. Kaikki välihakemistot ja tiedosto itsessään luodaan, jos niitä ei ole olemassa. GUARD
ja TIMEOUT
vaihtoehtoja ei huomioida RELEASE
operaatiossa.