file¶

File manipulation command.

file(WRITE filename "message to write"... )file(APPEND filename "message to write"... )file(READ filename variable )file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> filename variable)file(STRINGS filename variable )file(GLOB variable ...)file(GLOB_RECURSE variable ...)file(RENAME <oldname> <newname>)file(REMOVE )file(REMOVE_RECURSE )file(MAKE_DIRECTORY )file(RELATIVE_PATH variable directory file)file(TO_CMAKE_PATH path result)file(TO_NATIVE_PATH path result)file(DOWNLOAD url file )file(UPLOAD filename url )file(TIMESTAMP filename variable )file(GENERATE OUTPUT output_file <INPUT input_file|CONTENT input_content> )

WRITE zal een bericht in een bestand genaamd ‘filename’schrijven. Het overschrijft het bestand als het al bestaat, en maakt het bestand als het niet bestaat. (Als het bestand een build input is, gebruik dan configre_file toupdate het bestand alleen wanneer de inhoud ervan verandert.)

APPEND zal een bericht in een bestand schrijven hetzelfde als schrijven, behalve dat het het einde van het bestand

READ zal de inhoud van een bestand lezen en opslaan in de variabele.Het zal beginnen bij de gegeven offset en lezen tot numBytes. Als de argument HEX wordt gegeven, zullen de binaire gegevens worden geconverteerd naar hexadecimale representatie en dit zal worden opgeslagen in de variabele.

MD5, SHA1, SHA224, SHA256, SHA384 en SHA512 berekenen acryptografische hash van de inhoud van een bestand.

STRINGS zullen een lijst met ASCII strings uit een bestand ontleden en opslaan in een variabele. Binaire gegevens in het bestand worden genegeerd. Carriage return (CR) tekens worden genegeerd. Het werkt ook voor Intel Hex en MotorolaS-record-bestanden, die automatisch worden geconverteerd naar binaire opmaak wanneer ze worden gelezen. Schakel dit uit met NO_HEX_CONVERSION.

LIMIT_COUNT stelt het maximum aantal terug te geven tekenreeksen in. LIMIT_INPUTsets het maximum aantal bytes om uit het invoerbestand te lezen.LIMIT_OUTPUT stelt het maximum aantal bytes in om op te slaan in de outputvariable. LENGTH_MINIMUM stelt de minimale lengte in van een string toreturn. Kortere snaren worden genegeerd. LENGTH_MAXIMUM stelt de maximale lengte in van een tekenreeks om terug te geven. Langere snaren worden opgesplitst in snarenniet langer dan de maximale lengte. NEWLINE_CONSUME staat toe dat nieuwe regels worden opgenomen in strings in plaats van ze te beëindigen.

REGEX specificeert een reguliere expressie die een tekenreeks moet overeenkomen met bereturned. Typisch gebruik

file(STRINGS myfile.txt myfile)

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

GLOB zal een lijst genereren van alle bestanden die overeenkomen met de globbingexpressies en deze opslaan in de variabele. Globbing expressions zijn gelijkaardig aan reguliere expressies, maar veel eenvoudiger. Als relatieve vlag is gespecificeerd voor een expressie, zullen de resultaten worden geretourneerd als een relatief pad naar het opgegeven pad. (We raden het gebruik van GLOB niet aan om een lijst met bronbestanden van uw bronstructuur te verzamelen. Als er geen makelaars zijn.txt-bestand verandert wanneer een bron wordt toegevoegd of verwijderd dan kan het gegenereerde bouwsysteem niet weten wanneer cmake moet vragen om te regenereren.)

voorbeelden van globbing expressions 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

GLOB_RECURSE zal een lijst genereren die vergelijkbaar is met de gewone GLOB, behalve dat het alle submappen van de overeenkomende directory zal doorlopen en de bestanden zal vergelijken. Submappen die symlinks zijn, zijn alleen traversedif FOLLOW_SYMLINKS is gegeven of cmake-beleid CMP0009 is niet ingesteld op Nieuw.Zie cmake-help-policy CMP0009 voor meer informatie.

voorbeelden van recursieve globbing zijn::

/dir/*.py - match all python files in /dir and subdirectories

MAKE_DIRECTORY zal de opgegeven mappen aanmaken, ook als hun parentdirectory ‘ s nog niet bestaan

hernoemen verplaatst een bestand of map binnen een bestandssysteem, waarbij de destination atomisch wordt vervangen.

REMOVE zal de gegeven bestanden verwijderen, ook in submappen

REMOVE_RECURSE zal de gegeven bestanden en mappen verwijderen, ook on-empty mappen

RELATIVE_PATH zal het relatieve pad van de map naar het givenbestand bepalen.

TO_CMAKE_PATH zal pad converteren naar een cmake stijl pad met unix/.De invoer kan een enkel pad zijn of een systeempad zoals ” $ENV{PATH}”.Merk op dat de dubbele aanhalingstekens rond de ENV aanroep TO_CMAKE_PATH slechts één argument hebben. Dit commando zal ook de native listdelimiters converteren voor een lijst met paden zoals de PATH omgevingsvariabele.

TO_NATIVE_PATH werkt net als TO_CMAKE_PATH, maar zal van acmake stijlpad converteren naar de eigen padstijl voor windows en / forUNIX.

DOWNLOAD zal de opgegeven URL naar het opgegeven bestand downloaden. Als LOG var is gespecificeerd zal een log van de download in var worden gezet. Als STATUS var isspecified zal de status van de operatie in var worden gezet. De statusis terug in een lijst van lengte 2. Het eerste element is de numerieke terugkeerwaarde voor de operatie, en het tweede element is een stringwaarde voor de fout. Een 0 numerieke fout betekent geen fout in debewerking. Als time-out tijd is opgegeven, zal de operatie timeoutafter tijd seconden, tijd moet worden opgegeven als een geheel getal. De inactivity_timeout specificeert een geheel aantal seconden van inactiviteit waarna de bewerking moet worden beëindigd. Als expected_hash ALGO = value is opgegeven, zal de operatie controleren of de werkelijke hash van het gedownloade bestand overeenkomt met de verwachte waarde, waarbij algo een van MD5, SHA1, SHA224, SHA256, SHA384 of SHA512 is. Als het niet overeenkomt, mislukt de bewerking met een fout. (“EXPECTED_MD5sum “is short-hand voor”EXPECTED_HASH MD5=sum”.) Als SHOW_PROGRESS isspecifified, wordt voortgangsinformatie afgedrukt als statusberichten totdat de bewerking is voltooid. Voor HTTPS-URL ‘ s moet CMake worden gebouwd met OpenSSL. TLS / SSL-certificaten worden standaard niet gecontroleerd. SetTLS_VERIFY naar ON om certificaten te controleren en / of EXPECTED_HASH te gebruiken om gedownloade inhoud te verifiëren. Stel TLS_CAINFO in om een Customcertificate Authority bestand op te geven. Als een van beide TLS-opties niet is gegeven, controleert CMakewill respectievelijk de variabelen CMAKE_TLS_VERIFY en CMAKE_TLS_CAINFO.

UPLOAD zal het opgegeven bestand uploaden naar de opgegeven URL. Als LOG var is gespecificeerd zal een log van de upload in var worden gezet. Als STATUS var isspecified zal de status van de operatie in var worden gezet. De statusis terug in een lijst van lengte 2. Het eerste element is de numerieke terugkeerwaarde voor de operatie, en het tweede element is een stringwaarde voor de fout. Een 0 numerieke fout betekent geen fout in debewerking. Als time-out tijd is opgegeven, zal de operatie timeoutafter tijd seconden, tijd moet worden opgegeven als een geheel getal. De inactivity_timeout specificeert een geheel aantal seconden van inactiviteit waarna de bewerking moet worden beëindigd. Als show_progress is opgegeven, wordt de voortgangsinformatie afgedrukt als status-berichten totdat de bewerking is voltooid.

TIMESTAMP zal een string representatie van de modificatietijd van bestandsnaam naar variabele schrijven.

indien het commando niet in staat is om een tijdstempel variabele te verkrijgen, zal de lege string “”worden gebruikt.

zie de documentatie van het SUBCOMMANDO voor string TIMESTAMP voor meer details.

het commando file () biedt ook handtekeningen voor kopiëren en installeren:

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

de handtekening kopiëren 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 inputpermissions tenzij expliciete permissies of NO_SOURCE_PERMISSIONS worden gegeven (standaard is USE_SOURCE_PERMISSIONS). Zie de opdracht install (DIRECTORY) voor documentatie van machtigingen, patroon, REGEX en Excludeopties.

de installatiehandtekening verschilt enigszins van de kopie: Het drukt statusmessages af, en no_source_permissions is standaard. Installatie scriptsgenerated door het install () Commando gebruik deze handtekening (met een aantal gedocumenteerde opties voor intern gebruik).

GENERATE zal een <output_file> schrijven met inhoud van een<input_file>, of van <input_content>. De uitvoer wordt gegenereerd op basis van de inhoud van de voorwaarde <>. Het bestand is geschreven op cmake generate-time en de invoer kan generatorexpressions bevatten. De voorwaarde< >, <output_file> en <input_file> kunnen ook generatoruitdrukkingen bevatten. De voorwaarde< > moet zowel ” 0 ” als ” 1 ” worden beoordeeld. Het <output_file> moet een unieke naam hebben van alle configuraties en van alle aanroepingen van het bestand (genereren).

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.