file command
File manipulation command.
file(WRITE <filename> <content>...)file(APPEND <filename> <content>...)
napište <content>
do souboru s názvem <filename>
. Pokud soubor neexistuje, bude vytvořen. Pokud soubor již existuje, režim WRITE
jej přepíše a režim APPEND
se připojí na konec.(Pokud je soubor sestavovacím vstupem, použijte příkaz configure_file()
k aktualizaci souboru pouze při změně jeho obsahu.)
file(READ <filename> <variable> )
Přečtěte si obsah ze souboru s názvem <filename>
a uložte jej do<variable>
. Volitelně začněte od daného <offset>
apřečtěte maximálně <max-in>
bajtů. Volba HEX
způsobí, že data budou převedena na hexadecimální reprezentaci (užitečné pro binární data).
file(STRINGS <filename> <variable> )
analyzujte seznam ASCII řetězců z <filename>
a uložte je do<variable>
. Binární data v souboru jsou ignorována. Znaky návratu vozíku (\r
, CR) jsou ignorovány. Možnosti jsou:
LENGTH_MAXIMUM <max-len>
zvažte pouze řetězce nejvýše dané délky.
LENGTH_MINIMUM <min-len>
zvažte pouze řetězce alespoň dané délky.
LIMIT_COUNT <max-num>
Omezte počet odlišných řetězců, které mají být extrahovány.
LIMIT_INPUT <max-in>
Omezte počet vstupních bajtů pro čtení ze souboru.
LIMIT_OUTPUT <max-out>
omezit počet celkových bajtů pro uložení v <variable>
.
NEWLINE_CONSUME
považovat znaky nového řádku (\n
, LF) za součást obsahu řetězce namísto ukončení na nich.
NO_HEX_CONVERSION
soubory Intel Hex a Motorola s-record jsou při čtení automaticky převáděny, pokud není tato možnost zadána.
REGEX <regex>
zvažte pouze řetězce, které odpovídají danému regulárnímu výrazu.
ENCODING <encoding-type>
zvažte řetězce daného kódování. V současné době podporované kódování jsou:UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. Pokud možnost kódování není poskytnuta a soubor má značku pořadí bajtů, bude možnost kódování zrušena, aby respektovala značku pořadí bajtů.
například, kód
file(STRINGS myfile.txt myfile)
ukládá seznam v proměnné myfile
, ve kterém každá položka je linefrom vstupního souboru.
file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> <filename> <variable>)
Vypočítejte kryptografický hash obsahu <filename>
a uložte jej do <variable>
.
file(GLOB <variable> )file(GLOB_RECURSE <variable> )
Vygenerujte seznam souborů, které odpovídají <globbing-expressions>
a uložte je do <variable>
. Globbingové výrazy jsou podobnépravidelné výrazy, ale mnohem jednodušší. Pokud je příznak RELATIVE
specifikován, výsledky budou vráceny jako relativní cesty k dané cestě. Není definováno žádné konkrétní pořadí výsledků. Pokud je pořadí důležité, pak seznam explicitně Seřadit (např. pomocí příkazu list(SORT)
).
ve výchozím nastavení GLOB
seznamy adresářů-adresáře jsou ve výsledku vynechány, pokud jeLIST_DIRECTORIES
nastaveno na hodnotu false.
Poznámka
nedoporučujeme používat GLOB ke shromažďování seznamu zdrojových souborů z vašeho zdrojového stromu. Pokud žádné CMakeLists.soubor txt se změní, když je zdroj připojen nebo odstraněn, pak vygenerovaný systém sestavení nemůže vědět, kdy požádat CMake o regeneraci.
Příklady globbing výrazy patří:
*.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
režim bude procházet všechny podadresáře thematched adresář a zápas souborů. Podadresáře, které jsou symlinksare přejet pouze v případě, FOLLOW_SYMLINKS
je dána nebo politikaCMP0009
není nastavena na NEW
.
ve výchozím nastavení GLOB_RECURSE
vynechává adresáře ze seznamu výsledků-nastaveníLIST_DIRECTORIES
do true přidává adresáře do seznamu výsledků.Pokud je zadáno FOLLOW_SYMLINKS
nebo pokud politika CMP0009
není nastavena naOLD
, pak LIST_DIRECTORIES
považuje symbolické odkazy za adresáře.
Příklady rekurzivních globbing patří:
/dir/*.py - match all python files in /dir and subdirectories
file(RENAME <oldname> <newname>)
Přesunout soubor nebo adresář do souborového systému z <oldname>
<newname>
, nahradí určení atomicky.
file(REMOVE )file(REMOVE_RECURSE )
odeberte dané soubory. Režim REMOVE_RECURSE
odstraní danésoubory a adresáře, také neprázdné adresáře
file(MAKE_DIRECTORY )
Vytvořte dané adresáře a jejich rodiče podle potřeby.
file(RELATIVE_PATH <variable> <directory> <file>)
Vypočítejte relativní cestu z <directory>
do <file>
a uložte ji do <variable>
.
file(TO_CMAKE_PATH "<path>" <variable>)file(TO_NATIVE_PATH "<path>" <variable>)
režim TO_CMAKE_PATH
převede nativní <path>
na cmake-stylepath s lomítky vpřed (/
). Vstup může být jedna cesta nebo cesta pro vyhledávání jako $ENV{PATH}
. Cesta hledání bude převedena na seznam ve stylu cmake oddělený znaky ;
.
režim TO_NATIVE_PATH
převede styl cmake <path>
na nativní cestu s lomítky specifickými pro platformu (\
v systému Windows a /
jinde).
vždy používejte dvojité uvozovky kolem <path>
, abyste se ujistili, že je tento příkaz považován za jediný argument.
file(DOWNLOAD <url> <file> )file(UPLOAD <file> <url> )
režim DOWNLOAD
stáhne dané <url>
na lokální <file>
.Režim UPLOAD
nahraje lokální <file>
na daný <url>
.
volby obou DOWNLOAD
a UPLOAD
jsou:
INACTIVITY_TIMEOUT <seconds>
ukončete operaci po určité době nečinnosti.
LOG <variable>
Uložte protokol operace čitelný pro člověka do proměnné.
SHOW_PROGRESS
tiskněte informace o průběhu jako stavové zprávy, dokud operace neskončí.
STATUS <variable>
uloží výsledný stav operace do proměnné.Stav je ;
oddělený seznam délky 2.První prvek je číselná návratová hodnota operace a druhý prvek je hodnota řetězce pro chybu.Číselná chyba 0
znamená, že v operaci nedošlo k žádné chybě.
TIMEOUT <seconds>
ukončete operaci po uplynutí určitého celkového času.
další možnosti pro DOWNLOAD
jsou:
EXPECTED_HASH ALGO=<value>
Ověřte, že stažený obsah hash odpovídá očekávané hodnotě, kde
ALGO
je jedním zMD5
,SHA1
,SHA224
,SHA256
,SHA384
, neboSHA512
. Pokud se neshoduje, operace selže s chybou.
EXPECTED_MD5 <value>
Historická krátká ruka pro EXPECTED_HASH MD5=<value>
.
TLS_VERIFY <ON|OFF>
Určete, zda chcete ověřit certifikát serveru pro https://
adresy URL.Výchozí je neověřit.
TLS_CAINFO <file>
zadejte vlastní soubor certifikační autority pro https://
adresy URL.
pro https://
adresy URL CMake musí být postaveny s podporou OpenSSL. TLS/SSL
certifikáty nejsou ve výchozím nastavení kontrolovány. Nastavte TLS_VERIFY
na ON
zaškrtněte certifikáty a / nebo použijte EXPECTED_HASH
k ověření staženého obsahu.Pokud není zadána žádná volba TLS
, CMake zkontroluje proměnnéCMAKE_TLS_VERIFY
a CMAKE_TLS_CAINFO
.
file(TIMESTAMP <filename> <variable> )
Vypočítejte řetězcovou reprezentaci doby modifikace <filename>
a uložte ji do <variable>
. Pokud příkaz nebude schopen získat proměnná atimestamp bude nastavena na prázdný řetězec (“”).
viz příkaz string(TIMESTAMP)
pro dokumentaci možností <format>
a UTC
.
file(GENERATE OUTPUT output-file <INPUT input-file|CONTENT content> )
Vygenerujte výstupní soubor pro každou konfiguraci sestavení podporovanou aktuálnímCMake Generator
. Vyhodnoťtegenerator expressions
ze vstupního obsahu a vytvořte výstupní obsah. Možnosti jsou:
CONDITION <condition>
Vygenerujte výstupní soubor pro konkrétní konfiguraci pouze pokudpodmínka je pravdivá. Podmínka musí být buď 0
nebo 1
po vyhodnocení generátorových výrazů.
CONTENT <content>
použijte explicitně zadaný obsah jako vstup.
INPUT <input-file>
jako vstup použijte obsah z daného souboru.
OUTPUT <output-file>
zadejte název výstupního souboru, který chcete vygenerovat. Použijte generátorové expressionssach jako $<CONFIG>
pro zadání výstupního souboru specifického pro konfiguraci. Více konfigurací může generovat stejný výstupní soubor pouze v případě, že generovaný obsah je totožný. V opačném případě musí <output-file>
vyhodnotit jedinečný název pro každou konfiguraci.
musí být zadána přesně jedna volba CONTENT
nebo INPUT
. Konkrétní souborOUTPUT
může být pojmenován nejvýše jedním vyvoláním file(GENERATE)
.Generované soubory jsou modifikovány na následujících CMake běží pouze v případě, že jejich contentis změnil.
file(<COPY|INSTALL> <files>... DESTINATION <dir> ] )
podpis COPY
kopíruje soubory, adresáře a symbolické odkazy do složky adestination. Relativní vstupní cesty jsou vyhodnoceny s ohledem na aktuální zdrojový adresář a relativní cíl je vyhodnocen s ohledem na aktuální adresář sestavení. Copyingpreserves vstupní soubor časová razítka, a optimalizuje se soubor, pokud existsat cíl se stejným časovým razítkem. Kopírování zachovává inputpermissions, pokud nejsou zadána explicitní oprávnění nebo NO_SOURCE_PERMISSIONS
(výchozí hodnota je USE_SOURCE_PERMISSIONS
).
viz příkaz install(DIRECTORY)
pro dokumentaci povolení, FILES_MATCHING
, PATTERN
, REGEX
, aEXCLUDE
možnosti. Kopírování adresářů zachovává strukturujejich obsahu, i když jsou volby použity k výběru podmnožiny souborů.
podpis INSTALL
se mírně liší od COPY
: tiskne statusové zprávy (s výhradou proměnné CMAKE_INSTALL_MESSAGE
) a NO_SOURCE_PERMISSIONS
je výchozí.Instalační skripty generované příkazem install()
použijte tento podpis (s některými neregistrovanými možnostmi pro interní použití).
file(LOCK <path> )
Lock soubor, zadaný v <path>
pokud ne, DIRECTORY
možnost prezentovat a soubor<path>/cmake.lock
jinak. Soubor bude uzamčen pro rozsah definovaný volbouGUARD
(výchozí hodnota je PROCESS
). RELEASE
volba může být použitak explicitně odemknout soubor. Pokud volba TIMEOUT
není zadána, CMake bude čekat, dokud nebude zámek úspěšný nebo dokud nedojde k fatální chybě. Pokud je TIMEOUT
nastaveno na0
zámek bude jednou vyzkoušen a výsledek bude okamžitě nahlášen. PokudTIMEOUT
není 0
CMake se pokusí zamknout soubor pro období zadanépodle hodnoty <seconds>
. Jakékoli chyby budou interpretovány jako fatální, pokud neexistuje možnostRESULT_VARIABLE
. V opačném případě bude výsledek uložen v <variable>
a bude 0
při úspěchu nebo chybové zprávě při selhání.
Všimněte si, že zámek je poradní – neexistuje žádná záruka, že další procesy willrespect této lock, tedy zámek synchronizovat dva nebo více CMake případech sharingsome modifikovatelné zdrojů. Podobná logika aplikovaná na volbu DIRECTORY
– zamykání nadřazeného adresáře nezabrání jiným příkazům LOCK
uzamknout adresář nebo soubor anychild.
Pokus o uzamčení souboru dvakrát není povolen. Jakékoli mezilehlé adresáře asoubor sám bude vytvořen, pokud neexistují. GUARD
a TIMEOUT
volby ignorovány při operaci RELEASE
.