file¶

File manipulation command.

file(WRITE <filename> <content>...)file(APPEND <filename> <content>...)

schrijf <content> in een bestand met de naam <filename>. Als het bestand niet bestaat, wordt het aangemaakt. Als het bestand al bestaat, zal WRITEmodus het overschrijven en APPEND modus zal aan het einde toevoegen.Alle mappen in het pad opgegeven door <filename> die niet bestaan, zullen worden aangemaakt.

als het bestand een build-invoer is, gebruik dan de opdracht configure_file() om het bestand alleen bij te werken wanneer de inhoud ervan verandert.

file(READ <filename> <variable> )

lees inhoud van een bestand met de naam <filename> en sla het op in een<variable>. Optioneel starten met de opgegeven <offset> en maximaal <max-in> bytes lezen. De optie HEX zorgt ervoor dat gegevens worden geconverteerd naar een hexadecimale representatie (handig voor binaire gegevens).

file(STRINGS <filename> <variable> )

ontleedt een lijst met ASCII-strings uit <filename> en slaat deze op in<variable>. Binaire gegevens in het bestand worden genegeerd. Carriage return (\r, CR) tekens worden genegeerd. De opties zijn::

LENGTH_MAXIMUM <max-len>

beschouw alleen snaren van hoogstens een bepaalde lengte.

LENGTH_MINIMUM <min-len>

beschouw alleen strings van ten minste een bepaalde lengte.

LIMIT_COUNT <max-num>

Beperk het aantal afzonderlijke tekenreeksen dat moet worden geëxtraheerd.

LIMIT_INPUT <max-in>

Beperk het aantal invoer bytes dat uit het bestand moet worden gelezen.

LIMIT_OUTPUT <max-out>

Beperk het aantal totale bytes dat moet worden opgeslagen in de <variable>.

NEWLINE_CONSUME

behandel newline-tekens (\n, LF) als onderdeel van de inhoud van de tekenreeks in plaats van ze te beëindigen.

NO_HEX_CONVERSION

Intel Hex en Motorola s-record bestanden worden automatisch geconverteerd naar binair tijdens het lezen, tenzij deze optie is gegeven.

REGEX <regex>

beschouw alleen strings die overeenkomen met de gegeven reguliere expressie.

ENCODING <encoding-type>

beschouw strings van een bepaalde codering. Momenteel ondersteunde coderingen zijn: UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. Als de coderingsoptie niet wordt verstrekt en het bestand een bytevolgorde Mark heeft, zal de coderingsoptie standaard het bytevolgorde Mark respecteren.

bijvoorbeeld de code

file(STRINGS myfile.txt myfile)

slaat een lijst op in de variabele myfile waarin elk item een regel is van het invoerbestand.

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

Bereken een cryptografische hash met de inhoud van <filename> en bewaar deze in een <variable>. De ondersteunde <HASH> algoritme namen zijn die welke worden weergegeven door het commando string (<HASH>).

file(GLOB <variable> )file(GLOB_RECURSE <variable> )

Genereer een lijst met bestanden die overeenkomen met <globbing-expressions> en bewaar deze in <variable>. Globbing expressions zijn vergelijkbaar metregular expressions, maar veel eenvoudiger. Als RELATIVE vlag is gespecificeerd, zullen de resultaten worden geretourneerd als relatieve paden naar het gegeven pad. De resultaten worden lexicografisch geordend.

standaard GLOB lijsten mappen-mappen worden weggelaten in het resultaat alsLIST_DIRECTORIES is ingesteld op onwaar.

Note

we raden niet aan GLOB te gebruiken om een lijst met bronbestanden van onze bronstructuur te verzamelen. Als er geen CMakeLists.txt-bestand verandert wanneer een bron wordt toegevoegd of verwijderd, dan kan het gegenereerde bouwsysteem niet weten wanneer cmake moet worden gevraagd om te regenereren.

voorbeelden van globbing-uitdrukkingen zijn::

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

de GLOB_RECURSE – modus zal alle submappen van de overeenkomende map doorlopen en overeenkomen met de bestanden. Submappen die symlinks zijn, worden alleen doorlopen als FOLLOW_SYMLINKS is opgegeven of als beleidCMP0009 niet is ingesteld op NEW.

standaard laat GLOB_RECURSE mappen buiten de resultatenlijst – instellingLIST_DIRECTORIES naar waar voegt mappen toe aan de resultatenlijst.Als FOLLOW_SYMLINKS gegeven is of beleid CMP0009 niet ingesteld is opOLD dan behandelt LIST_DIRECTORIES symlinks als mappen.

voorbeelden van recursieve globbing zijn::

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

Verplaats een bestand of map binnen een bestandssysteem van <oldname> naar<newname>, waarbij de bestemming atomisch wordt vervangen.

file(REMOVE )file(REMOVE_RECURSE )

verwijder de opgegeven bestanden. De REMOVE_RECURSE modus zal de bestanden en mappen verwijderen, ook niet-lege mappen. Er wordt geen fout weergegeven als het agiven-bestand niet bestaat.

file(MAKE_DIRECTORY )

maak de gegeven directory ‘ s en hun ouders als dat nodig is.

file(RELATIVE_PATH <variable> <directory> <file>)

Bereken het relatieve pad van een <directory> naar een <file> en bewaar het in de <variable>.

file(TO_CMAKE_PATH "<path>" <variable>)file(TO_NATIVE_PATH "<path>" <variable>)

de modus TO_CMAKE_PATH Converteert een standaard <path> naar een cmake-stijlpad met schuine strepen (/). De invoer kan een enkel pad zijn of een systeemzoekpad zoals $ENV{PATH}. Een zoekpad zal worden geconverteerd naar een cmake-stijl lijst gescheiden door ; tekens.

de TO_NATIVE_PATH – modus Converteert een cmake-stijl <path> naar een native pad met platformspecifieke schuine strepen (\ op Windows en / elders).

Gebruik altijd dubbele aanhalingstekens rond de <path> om er zeker van te zijn dat het wordt behandeld als een enkel argument voor dit commando.

file(DOWNLOAD <url> <file> )file(UPLOAD <file> <url> )

de DOWNLOAD modus downloadt de gegeven <url> naar een lokale <file>.De modus UPLOAD uploadt een lokale <file> naar een gegeven <url>.

opties voor zowel DOWNLOAD als UPLOAD zijn:

INACTIVITY_TIMEOUT <seconds>

Beëindig de bewerking na een periode van inactiviteit.

LOG <variable>

Sla een voor mensen leesbare log van de bewerking op in een variabele.

SHOW_PROGRESS

voortgangsinformatie afdrukken als statusberichten totdat de bewerking is voltooid.

STATUS <variable>

sla de resulterende status van de bewerking op in een variabele.De status is een ; gescheiden lijst van lengte 2.Het eerste element is de numerieke retourwaarde voor de operatie,en het tweede element is een tekenreekswaarde voor de fout.Een numerieke fout 0 betekent geen fout in de bewerking.

TIMEOUT <seconds>

de bewerking beëindigen na het verstrijken van een bepaalde Totale tijd.

USERPWD <username>:<password>

gebruikersnaam en wachtwoord instellen voor gebruik.

HTTPHEADER <HTTP-header>

HTTP-header voor operatie. Suboptie kan meerdere keren worden herhaald.

aanvullende opties voor DOWNLOAD zijn:

EXPECTED_HASH ALGO=<value>

Controleer of de hash van de gedownloade inhoud overeenkomt met de verwachte waarde, waarbijALGO een van de door file(<HASH>)ondersteunde algoritmen is.Als het niet overeenkomt, mislukt de bewerking met een fout.

EXPECTED_MD5 <value>

Historische korte hand voor EXPECTED_HASH MD5=<value>.

TLS_VERIFY <ON|OFF>

Geef op of het servercertificaat voor https:// URL ‘ s moet worden geverifieerd.De standaard is om niet te verifiëren.

TLS_CAINFO <file>

Geef een aangepast certificaat Authoriteitsbestand op voor https:// URL ‘ s.

voor https:// URL ‘ s moet CMake worden gebouwd met OpenSSL-ondersteuning. TLS/SSLcertificaten worden standaard niet gecontroleerd. Stel TLS_VERIFY in op ON om certificaten te controleren en / of gebruik EXPECTED_HASH om gedownloade inhoud te controleren.Als geen van beide TLS opties is gegeven, zal CMake de variabelenCMAKE_TLS_VERIFY en CMAKE_TLS_CAINFO controleren.

file(TIMESTAMP <filename> <variable> )

Bereken een tekenreeksweergave van de wijzigingstijd van <filename>en sla deze op in <variable>. Mocht het commando niet in staat zijn om atimestamp variabele te verkrijgen zal worden ingesteld op de lege string (“”).

zie het string(TIMESTAMP) commando voor documentatie van de <format> en UTC opties.

file(GENERATE OUTPUT output-file <INPUT input-file|CONTENT content> )

Genereer een uitvoerbestand voor elke build-configuratie die wordt ondersteund door de huidigeCMake Generator. Evalueergenerator expressionsuit de input – inhoud om de output-inhoud te produceren. De opties zijn::

CONDITION <condition>

Genereer het uitvoerbestand voor een bepaalde configuratie alleen als de voorwaarde Waar is. De voorwaarde moet 0 of 1zijn na evaluatie van de generatoruitdrukkingen.

CONTENT <content>

gebruik de inhoud expliciet als input.

INPUT <input-file>

gebruik de inhoud van een bepaald bestand als invoer.Een relatief pad wordt behandeld met betrekking tot de waardeCMAKE_CURRENT_SOURCE_DIR. Zie beleid CMP0070.

OUTPUT <output-file>

Geef de naam van het te genereren uitvoerbestand op. Gebruik generator expressionssuch als $<CONFIG> om een configuratie-specifieke uitvoer bestandsnaam op te geven. Meerdere configuraties kunnen alleen hetzelfde uitvoerbestand genereren als de gegenereerde inhoud identiek is. Anders moet <output-file>voor elke configuratie een unieke naam evalueren.Een relatief pad (na het evalueren van generatoruitdrukkingen) wordt behandeld met betrekking tot de waarde CMAKE_CURRENT_BINARY_DIR.Zie beleid CMP0070.

exact één CONTENT of INPUT optie moet worden opgegeven. Een specifiekOUTPUT bestand kan worden benoemd door ten hoogste één aanroep van file(GENERATE).Gegenereerde bestanden worden gewijzigd en hun tijdstempel bijgewerkt op de volgende cmakeruns alleen als hun inhoud wordt gewijzigd.

merk ook op dat file(GENERATE) het uitvoerbestand pas in de generatiefase maakt. Het uitvoerbestand zal nog niet geschreven zijn als het file(GENERATE) Commando terugkeert, het wordt alleen geschreven na het verwerken van alle CMakeLists.txt bestanden van een project.

file(<COPY|INSTALL> <files>... DESTINATION <dir> ] )

de COPY handtekening kopieert bestanden, mappen en symlinks naar de map adestination. Relatieve invoerpaden worden geëvalueerd ten opzichte van de huidige bronmap, en een relatieve bestemming wordt geëvalueerd ten opzichte van de huidige build-map. Copying behoudt invoerbestand tijdstempels, en optimaliseert uit een bestand als het bestaat op de bestemming met dezelfde tijdstempel. Kopiëren behoudt invoerpermissies tenzij expliciete machtigingen of NO_SOURCE_PERMISSIONSworden gegeven (standaard is USE_SOURCE_PERMISSIONS).

zie de opdracht install(DIRECTORY) voor documentatie van permissies, FILES_MATCHING, PATTERN, REGEX, enEXCLUDE opties. Het kopiëren van mappen behoudt de structuur van hun inhoud, Zelfs als opties worden gebruikt om een subset offiles te selecteren.

de INSTALL handtekening wijkt enigszins af van COPY: het printstatusberichten (onder voorbehoud van de variabele CMAKE_INSTALL_MESSAGE), en NO_SOURCE_PERMISSIONS is standaard.Installatie scripts gegenereerd door het install() commando gebruiken deze handtekening (met enkele ongedocumenteerde opties voor intern gebruik).

file(LOCK <path> )

Vergrendel een bestand gespecificeerd door <path> als er geen DIRECTORY optie aanwezig is en bestand<path>/cmake.lock anders. Bestand wordt vergrendeld voor bereik gedefinieerd door de optieGUARD (standaardwaarde is PROCESS). RELEASE optie kan worden gebruikt om bestand expliciet te ontgrendelen. Als optie TIMEOUT niet is opgegeven, zal CMake wachten tot vergrendeling succesvol is of totdat er een fatale fout optreedt. Als TIMEOUT is ingesteld op0 zal vergrendeling één keer worden geprobeerd en zal het resultaat onmiddellijk worden gerapporteerd. AlsTIMEOUT niet 0 is, zal CMake proberen het bestand te vergrendelen voor de periode die is opgegeven door de waarde <seconds>. Eventuele fouten zullen als fataal worden geïnterpreteerd als er geenRESULT_VARIABLE optie is. Anders wordt het resultaat opgeslagen in <variable>en wordt 0 bij succes of een foutmelding bij een fout.

merk op dat lock adviserend is – er is geen garantie dat andere processen dit slot zullen respecteren, dat wil zeggen dat lock twee of meer cmake-instanties synchroniseert en een aantal aanpasbare bronnen deelt. Soortgelijke logica toegepast op DIRECTORY optie-het vergrendelen van de bovenliggende map voorkomt niet dat andere LOCK commando ‘ s een Child map of bestand vergrendelen.

tweemaal proberen een bestand te vergrendelen is niet toegestaan. Alle tussenliggende mappen en bestanden zelf zullen worden aangemaakt als ze niet bestaan. GUARD en TIMEOUTopties genegeerd bij RELEASE operatie.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.