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.Budou vytvořeny všechny adresáře v cestě určené <filename>, které neexistujíexistují.

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>

Omezte počet celkových bajtů pro uložení v <variable>.

NEWLINE_CONSUME

považujte 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)

uloží seznam do proměnné myfile, ve které je každá položka řádkemze vstupního souboru.

file(<HASH> <filename> <variable>)

Vypočítejte kryptografický hash obsahu <filename> a uložte jej do <variable>. Podporované názvy algoritmů <HASH> jsou uvedeny příkazem string(<HASH>).

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 nastaven příznak RELATIVE, budou výsledky vráceny jako relativní cesty k dané cestě. Výsledky budou uspořádány lexikograficky.

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 globbingových výrazů zahrnují:

*.cxx - match all files with extension cxx*.vt? - match all files with extension vta,...,vtzf.txt - match files f3.txt, f4.txt, f5.txt

režim GLOB_RECURSE bude procházet všemi podadresáři odpovídajícího adresáře a odpovídat souborům. Podadresáře, které jsou symlinksare prochází pouze pokud FOLLOW_SYMLINKS je dána nebo politikaCMP0009 není nastavena na NEW.

ve výchozím nastavení GLOB_RECURSE vynechá adresáře ze seznamu výsledků-nastaveníLIST_DIRECTORIES do true přidá 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ího globbingu zahrnují:

/dir/*.py - match all python files in /dir and subdirectories
file(RENAME <oldname> <newname>)

přesuňte soubor nebo adresář v souborovém systému z <oldname> na<newname> a atomicky nahradíte cíl.

file(REMOVE )file(REMOVE_RECURSE )

odeberte dané soubory. Režim REMOVE_RECURSE odstraní daný režimsoubory a adresáře, také neprázdné adresáře. Pokud soubor agiven neexistuje, nevydá se žádná chyba.

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 asystémová vyhledávací cesta 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žijte 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 při operaci nedošlo k žádné chybě.

TIMEOUT <seconds>

ukončete operaci po uplynutí určitého celkového času.

USERPWD <username>:<password>

nastavte uživatelské jméno a heslo pro provoz.

HTTPHEADER <HTTP-header>

HTTP hlavička pro provoz. Suboption lze opakovat několikrát.

další možnosti pro DOWNLOAD jsou:

EXPECTED_HASH ALGO=<value>

ověřte, zda stažený obsah hash odpovídá očekávané hodnotě, kdeALGO je jedním z algoritmů podporovaných file(<HASH>).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 voleb <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.Relativní cesta je zpracována s ohledem na hodnotuCMAKE_CURRENT_SOURCE_DIR. Viz zásady CMP0070.

OUTPUT <output-file>

zadejte název výstupního souboru, který chcete vygenerovat. Použijte generátorové expressionsupříklad $<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.Relativní cesta (po vyhodnocení výrazů generátoru) je zpracovánas ohledem na hodnotu CMAKE_CURRENT_BINARY_DIR.Viz zásady CMP0070.

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 upraveny a jejich časové razítko aktualizováno na následujících cmakeruns pouze tehdy, pokud se změní jejich obsah.

Všimněte si také, že file(GENERATE) nevytváří výstupní soubor až do fáze generování. Výstupní soubor ještě nebude zapsán, když se příkazfile(GENERATE) vrátí, je zapsán až po zpracování souborů CMakeLists.txt projektu.

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í 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> )

Uzamkněte soubor zadaný <path> , pokud není k dispozici žádná volba DIRECTORY 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 žádná 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 lock je poradní-neexistuje žádná záruka, že ostatní procesy budou tento zámek respektovat, tj. zámek synchronizuje dvě nebo více instancí CMake sdílejících některé modifikovatelné zdroje. Podobná logika aplikovaná na možnost 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.