file¶

File manipulation command.

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

schrijf <content> naar een bestand met de naam <filename>. Als het bestand niet bestaat, wordt het aangemaakt. Als het bestand al bestaat, zal de WRITE – modus het overschrijven en de APPEND – modus zal aan het einde toevoegen.(Als het bestand een build input is, gebruik dan het configure_file() commando 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 HEX optie 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(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> <filename> <variable>)

Bereken een cryptografische hash met de inhoud van <filename> en bewaar deze in een <variable>.

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

Genereer een lijst met bestanden die overeenkomen met <globbing-expressions> en sla het op 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. Er wordt geen specifieke volgorde van de resultaten gedefinieerd. Als de volgorde belangrijk is, moet de lijst expliciet worden gesorteerd (bijvoorbeeld met het list(SORT) Commando).

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 is gegeven of beleid CMP0009 niet is ingesteld 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

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 native <path> naar een cmake-stijlpad met voorwaartse slashes (/). 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 UPLOAD modus 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 operatie op in een variabele.

SHOW_PROGRESS

druk voortgangsinformatie af 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.

aanvullende opties voor DOWNLOAD zijn:

EXPECTED_HASH ALGO=<value>

Controleer of de hash van gedownloade inhoud overeenkomt met de verwachte waarde, waarbijALGO een van de volgende waarden is:MD5, SHA1, SHA224, SHA256, SHA384, ofSHA512. 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 invoerinhoud om de uitvoerinhoud 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.

OUTPUT <output-file>

Geef de naam van het te genereren uitvoerbestand op. Gebruik generatorexpressie zoals $<CONFIG> om een configuratie-specifieke uitvoerbestandsnaam 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.

precies éé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 op de volgende cmake draait alleen als hun inhoud veranderd.

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 het install(DIRECTORY) commando 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 CMAKE_INSTALL_MESSAGE variabele),en NO_SOURCE_PERMISSIONS is standaard.Installatiescripts 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 zal worden vergrendeld voor scope gedefinieerd doorGUARD optie (standaard waarde 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 wordt vergrendeling één keer geprobeerd en wordt het resultaat onmiddellijk 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 zal het resultaat worden opgeslagen in <variable>en zal 0 zijn bij succes of een foutmelding bij een fout.

merk op dat lock adviserend is – er is geen garantie dat andere processen dit lock zullen respecteren, d.w.z. lock synchroniseert twee of meer cmake-instanties die een aantal aanpasbare bronnen delen. 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.

proberen het bestand tweemaal 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.