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.Luodaan hakemistoja, jotka eivät ole hakemistoja kohdassa <filename>
määritetyllä polulla.
jos tiedosto on koostesyötte, 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>
andreadista 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 varastoitavien 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(<HASH> <filename> <variable>)
laske kryptografinen hash <filename>
sisällöstä ja säilytä se <variable>
. Tuetut <HASH>
algoritmin nimet ovat merkkijonon(<HASH>)komennon listaamia.
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. Tulokset tilataan sanakirjallisesti.
oletuksena GLOB
luettelot 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 symlinks-linkkejä 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ä välillä <oldname>
– <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. Virhe ei tule, jos agiven-tiedostoa ei ole olemassa.
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 kaksoislainausmerkkejä <path>
ympärillä varmistuaksesi, että sitä käsitellään 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>
tietylle <url>
.
vaihtoehdot sekä DOWNLOAD
että UPLOAD
ovat:
INACTIVITY_TIMEOUT <seconds>
keskeytä toiminta käyttämättömyyden jälkeen.
LOG <variable>
säilytä ihmisen luettavissa oleva loki muuttujasta.
SHOW_PROGRESS
tulosta edistymistiedot tilaviesteinä, kunnes operaatio on valmis.
STATUS <variable>
säilytä operaation tuloksena saatu tila muuttujaan.Status on ;
erotettu lista pituudesta 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ä.
USERPWD <username>:<password>
Aseta käyttäjätunnus ja salasana käyttöön.
HTTPHEADER <HTTP-header>
HTTP-otsikko käyttöön. Suboption voidaan toistaa useita kertoja.
lisävaihtoehdot DOWNLOAD
ovat:
EXPECTED_HASH ALGO=<value>
varmista, että ladatun sisällön hash vastaa odotusarvoa, jossa
ALGO
on yksifile(<HASH>)
tukemista algoritmeista.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 varmenteen Auktoriteettitiedosto 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
optioiden dokumentointi .
file(GENERATE OUTPUT output-file <INPUT input-file|CONTENT content> )
luo tulostustiedosto jokaiselle rakentamisasetukselle, jota nykyinenCMake Generator
tukee. Evaluoigenerator expressions
syötesisällöstä tuotosisällön tuottamiseksi. Vaihtoehdot ovat:
CONDITION <condition>
luo tulostetiedosto tietylle kokoonpanolle 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ä.Suhteellinen polku käsitellään suhteessa arvoonCMAKE_CURRENT_SOURCE_DIR
. Katso politiikka CMP0070
.
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.Suhteellinen polku (generaattorin lausekkeiden arvioinnin jälkeen) käsitellään suhteessa arvoon CMAKE_CURRENT_BINARY_DIR
.Katso politiikka CMP0070
.
on annettava tasan yksi CONTENT
tai INPUT
vaihtoehto. TiettyOUTPUT
– tiedosto voidaan nimetä enintään yhdellä kutsulla file(GENERATE)
.Luotuja tiedostoja muokataan ja niiden aikaleimaa päivitetään myöhemmissä cmakeruneissa vain, jos niiden sisältöä muutetaan.
Huomaa myös, että file(GENERATE)
ei luo tulostiedostoa ennen generointivaihetta. Tulostustiedostoa ei ole vielä kirjoitettu komennonfile(GENERATE)
palatessa, se kirjoitetaan vasta projektin CMakeLists.txt
tiedostojen käsittelyn jälkeen.
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 install(DIRECTORY)
komento, joka koskee asiakirjojen dokumentointia, 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 asennuskoskriptit käyttävät tätä allekirjoitusta (sisäisessä käytössä on joitain paperittomia vaihtoehtoja).
file(LOCK <path> )
Lukitse kohdassa <path>
määritelty tiedosto, jos ei ole DIRECTORY
vaihtoehto läsnä ja tiedosto<path>/cmake.lock
muutoin. 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 <variable>
ja 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. Samantapaista logiikkaa sovelletaan DIRECTORY
option-locking parent directory ei estä muita LOCK
komentoja lukita anychild directory tai file.
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.