filkrus
Filmanipulationskommando.
file(WRITE <filename> <content>...)file(APPEND <filename> <content>...)
skriv <content>
i en fil kaldet <filename>
. Hvis filen ikke findes, oprettes den. Hvis filen allerede findes, overskriver WRITE
– tilstanden den, og APPEND
– tilstanden tilføjes til slutningen.(Hvis filen er et build-input, skal du bruge kommandoen configure_file()
for kun at opdatere filen, når dens indhold ændres.)
file(READ <filename> <variable> )
Læs indhold fra en fil kaldet <filename>
og gem den i en<variable>
. Start eventuelt fra den givne <offset>
oglæs højst <max-in>
bytes. Indstillingen HEX
får data til at blive konverteret til en seksadecimal repræsentation (nyttig til binære data).
file(STRINGS <filename> <variable> )
Parse en liste over ASCII strenge fra <filename>
og gemme det i<variable>
. Binære data i filen ignoreres. Vognretur (\r
, CR) tegn ignoreres. Mulighederne er:
LENGTH_MAXIMUM <max-len>
overvej kun strenge af højst en given længde.
LENGTH_MINIMUM <min-len>
overvej kun strenge af mindst en given længde.
LIMIT_COUNT <max-num>
Begræns antallet af forskellige strenge, der skal ekstraheres.
LIMIT_INPUT <max-in>
Begræns antallet af inputbytes, der skal læses fra filen.
LIMIT_OUTPUT <max-out>
Begræns antallet af samlede bytes, der skal gemmes i <variable>
.
NEWLINE_CONSUME
behandl nylinjetegn (\n
, LF) som en del af strengindholdi stedet for at afslutte dem.
NO_HEX_CONVERSION
Intel sekskant-og Motorola s-record-filer konverteres automatisk tilbinary under læsning, medmindre denne indstilling er givet.
REGEX <regex>
overvej kun strenge, der matcher det givne regulære udtryk.
ENCODING <encoding-type>
overvej strenge af en given kodning. Aktuelt understøttede kodninger er: UTF-8, UTF-16le, UTF-16be, UTF-32le, UTF-32be. Hvis KODNINGSINDSTILLINGENER ikke angivet, og filen har et Byte-Ordremærke, KODNINGSINDSTILLINGENVIL blive standardiseret for at respektere Byte-Ordremærket.
for eksempel koden
file(STRINGS myfile.txt myfile)
gemmer en liste i variablen myfile
, hvor hvert element er en linjefra inputfilen.
file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> <filename> <variable>)
Beregn en kryptografisk hash af indholdet af <filename>
andstore det i en <variable>
.
file(GLOB <variable> )file(GLOB_RECURSE <variable> )
Generer en liste over filer, der matcher <globbing-expressions>
ogopbevares i <variable>
. Globbing udtryk lignerregelmæssige udtryk, men meget enklere. Hvis RELATIVE
flag isspecified, vil resultaterne blive returneret som relative stier til den givne sti. Ingen specifik rækkefølge af resultater er defineret. Hvis ordren er vigtig, såsort listen eksplicit (f.eks. ved hjælp af kommandoen list(SORT)
).
som standard GLOB
lister mapper – mapper udelades i resultat, hvisLIST_DIRECTORIES
er indstillet til falsk.
Bemærk
vi anbefaler ikke at bruge GLOB til at indsamle en liste over kildefiler fradit kildetræ. Hvis ingen CMakeLists.når en kilde tilføjes eller fjernes, kan det genererede build-system ikke vide, hvornår Toask CMake skal regenerere.
eksempler på globbing udtryk omfatter:
*.cxx - match all files with extension cxx*.vt? - match all files with extension vta,...,vtzf.txt - match files f3.txt, f4.txt, f5.txt
tilstanden GLOB_RECURSE
vil krydse alle undermapper i den matchede mappe og matche filerne. Undermapper, der er symlinksare kun gennemkøres, hvis FOLLOW_SYMLINKS
er givet eller politikCMP0009
er ikke indstillet til NEW
.
som standard GLOB_RECURSE
udelader mapper fra resultatliste – indstillingLIST_DIRECTORIES
til true tilføjer mapper til resultatliste.Hvis FOLLOW_SYMLINKS
er angivet, eller politik CMP0009
ikke er indstillet tilOLD
, behandler LIST_DIRECTORIES
symlinks som mapper.
eksempler på rekursiv globbing inkluderer:
/dir/*.py - match all python files in /dir and subdirectories
file(RENAME <oldname> <newname>)
Flyt en fil eller mappe i et filsystem fra <oldname>
til<newname>
, og udskift destinationen atomisk.
file(REMOVE )file(REMOVE_RECURSE )
fjern de givne filer. REMOVE_RECURSE
– tilstanden fjerner de givne filer og mapper, også ikke-tomme mapper
file(MAKE_DIRECTORY )
Opret de givne mapper og deres forældre efter behov.
file(RELATIVE_PATH <variable> <directory> <file>)
Beregn den relative sti fra en <directory>
til en <file>
og gem den i <variable>
.
file(TO_CMAKE_PATH "<path>" <variable>)file(TO_NATIVE_PATH "<path>" <variable>)
tilstanden TO_CMAKE_PATH
konverterer en indfødt <path>
til en CMake-stylepath med fremadrettede skråstreger (/
). Indgangen kan være en enkelt sti eller asystem søgesti som $ENV{PATH}
. En søgesti vil blive konverterettil en CMake-stil liste adskilt af ;
tegn.
tilstanden TO_NATIVE_PATH
konverterer en cmake-stil <path>
til en nativepath med platformspecifikke skråstreger (\
på vinduer og /
andetsteds).
Brug altid dobbelt citater omkring <path>
for at være sikker på, at det behandles som et enkelt argument til denne kommando.
file(DOWNLOAD <url> <file> )file(UPLOAD <file> <url> )
tilstanden DOWNLOAD
henter den givne <url>
til en lokal <file>
.Tilstanden UPLOAD
uploader en lokal <file>
til en given <url>
.
indstillinger til både DOWNLOAD
og UPLOAD
er:
INACTIVITY_TIMEOUT <seconds>
afslut operationen efter en periode med inaktivitet.
LOG <variable>
Opbevar en menneskelig læsbar log over operationen i en variabel.
SHOW_PROGRESS
Udskriv statusoplysninger som statusmeddelelser, indtil operationen er afsluttet.
STATUS <variable>
gem den resulterende status for operationen i en variabel.Status er en ;
adskilt liste over længde 2.Det første element er den numeriske returværdi for operationen,og det andet element er en strengværdi for fejlen.En numerisk fejl 0
betyder ingen fejl i operationen.
TIMEOUT <seconds>
afslut operationen efter en given total tid er gået.
yderligere muligheder til DOWNLOAD
er:
EXPECTED_HASH ALGO=<value>
Kontroller, at den hentede indhold hash svarer til den forventede værdi, hvor
ALGO
er en afMD5
,SHA1
,SHA224
,SHA256
,SHA384
, ellerSHA512
. Hvis det ikke stemmer overens, fejler operationen med en fejl.
EXPECTED_MD5 <value>
historisk kort hånd til EXPECTED_HASH MD5=<value>
.
TLS_VERIFY <ON|OFF>
Angiv, om servercertifikatet skal verificeres for https://
URL ‘ er.Standard er ikke at verificere.
TLS_CAINFO <file>
Angiv en brugerdefineret Certifikatmyndighedsfil for https://
URL ‘ er.
til https://
URL ‘ er CMake skal bygges med OpenSSL-understøttelse. TLS/SSL
certifikater er ikke markeret som standard. Indstil TLS_VERIFY
til ON
tocheck certifikater og/eller brug EXPECTED_HASH
til at bekræfte hentet indhold.Hvis hverken TLS
valgmulighed er givet CMake vil kontrollere variablerCMAKE_TLS_VERIFY
og CMAKE_TLS_CAINFO
, hhv.
file(TIMESTAMP <filename> <variable> )
Beregn en strengrepræsentation af modifikationstiden for <filename>
og gem den i <variable>
. Skulle kommandoen ikke være i stand til at opnå atimestamp variabel vil blive indstillet til den tomme streng (“”).
se kommandoen string(TIMESTAMP)
for dokumentation af <format>
og UTC
indstillinger.
file(GENERATE OUTPUT output-file <INPUT input-file|CONTENT content> )
Generer en outputfil for hver build-konfiguration, der understøttes af den aktuelleCMake Generator
. Evaluergenerator expressions
fra inputindholdet for at producere outputindholdet. Mulighederne er:
CONDITION <condition>
Generer kun outputfilen til en bestemt konfiguration, hvisbetingelsen er sand. Betingelsen skal være enten 0
eller 1
efter evaluering af generatorudtryk.
CONTENT <content>
brug det angivne indhold eksplicit som input.
INPUT <input-file>
brug indholdet fra en given fil som input.
OUTPUT <output-file>
angiv det outputfilnavn, der skal genereres. Brug generatorudtryksåsom $<CONFIG>
for at angive et konfigurationsspecifikt outputfilnavn. Flere konfigurationer kan kun generere den samme outputfilhvis det genererede indhold er identisk. Ellers skal <output-file>
evalueres til et unikt navn for hver konfiguration.
præcis en CONTENT
eller INPUT
mulighed skal gives. En specifikOUTPUT
fil kan navngives ved højst en påkaldelse af file(GENERATE)
.Genererede filer ændres kun på efterfølgende CMake-kørsler, hvis deres indhold ændres.
file(<COPY|INSTALL> <files>... DESTINATION <dir> ] )
signaturen COPY
kopierer filer, mapper og symlinks til adestination-mappen. Relative inputstier evalueres med hensyn til den aktuelle kildekatalog, og en relativ destination evalueres med hensyn til den aktuelle build-mappe. Copyingpresserves input fil tidsstempler, og optimerer ud en fil, hvis den eksistererpå destinationen med samme tidsstempel. Kopiering bevarer inputpermissions, medmindre udtrykkelige tilladelser eller NO_SOURCE_PERMISSIONS
er givet (standard er USE_SOURCE_PERMISSIONS
).
se kommandoen install(DIRECTORY)
for dokumentation af tilladelser, FILES_MATCHING
, PATTERN
, REGEX
, og EXCLUDE
indstillinger. Kopiering af mapper bevarer strukturenaf deres indhold, selvom indstillinger bruges til at vælge en delmængde affiler.
signaturen INSTALL
adskiller sig lidt fra COPY
: den udskriver statusmeddelelser (underlagt variablen CMAKE_INSTALL_MESSAGE
), og NO_SOURCE_PERMISSIONS
er standard.Installationsskripter genereret af kommandoen install()
brug denne signatur (med nogle udokumenterede muligheder til intern brug).
file(LOCK <path> )
Lås en fil angivet af <path>
hvis nej DIRECTORY
til stede og fil<path>/cmake.lock
ellers. Filen vil blive låst for omfang defineret af GUARD
option (standardværdi er PROCESS
). RELEASE
mulighed kan brugesat låse filen op eksplicit. Hvis indstillingen TIMEOUT
ikke er angivet CMake vilvent indtil lås lykkes eller indtil fatal fejl opstår. Hvis TIMEOUT
er indstillet til0
lock vil blive prøvet en gang, og resultatet vil blive rapporteret med det samme. HvisTIMEOUT
ikke er 0
CMake vil forsøge at låse filen for den periode, der er angivetved <seconds>
værdi. Eventuelle fejl vil blive fortolket som fatale, hvis der ikke er nogenRESULT_VARIABLE
mulighed. Ellers vil resultatet blive gemt i <variable>
og vil være 0
på succes eller fejlmeddelelse om fejl.
Bemærk, at lock er rådgivende – der er ingen garanti for, at andre processer vil respektere denne lås, dvs.lås Synkroniser to eller flere CMake-forekomster, der deler nogle modificerbare ressourcer. Lignende logik anvendt på DIRECTORY
option-locking parent directory forhindrer ikke andre LOCK
kommandoer til at låse anychild mappe eller fil.
forsøg på at låse filen to gange er ikke tilladt. Eventuelle mellemliggende mapper ogfilen selv vil blive oprettet, hvis de ikke eksisterer. GUARD
og TIMEOUT
indstillinger ignoreret på RELEASE
operation.