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 WRITEjej 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ě, kdeALGO je jedním z MD5, 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/SSLcertifiká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 expressionsze 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 1po 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 TIMEOUTvolby ignorovány při operaci RELEASE.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.