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> )
o WRITE irá escrever uma mensagem num ficheiro chamado ‘nome de ficheiro’. Itoverwrites the file if it already exists, and creates the file if itdoes not exist. (Se o ficheiro for uma entrada de compilação, use o configure_ file toupdate o ficheiro apenas quando o seu conteúdo mudar.)
APPEND irá escrever uma mensagem em um arquivo igual a WRITE, exceto que ele irá aplicá-lo ao final do arquivo
READ irá ler o conteúdo de um arquivo e armazená-lo na variável.Ele vai começar no deslocamento indicado e ler até numerobytes. Se o reduto HEX for dado, os dados binários serão convertidos para representação hexadecimal E isto será armazenado na variável.
MD5, SHA1, SHA224, SHA256, SHA384, e SHA512 irão calcular hash acryptográfico do conteúdo de um ficheiro.
STRINGS irá processar uma lista de strings ASCII de um arquivo e armazená-lo em uma variável. Os dados binários no ficheiro são ignorados. Os caracteres Carriage return (CR) são ignorados. Ele também funciona para arquivos Intel Hex e MotorolaS-record, que são automaticamente convertidos para formatos binários quando os lêem. Desactive isto com o NO_ HEX_CONVERSION.
LIMIT_COUNT define o número máximo de strings a retornar. LIMIT_INPUTsets o número máximo de bytes a ler do ficheiro de entrada.LIMIT_ output define o número máximo de bytes a armazenar na variável externa. LENGTH_MINIMUM define o comprimento mínimo de uma cadeia de retenção. Cordas mais curtas são ignoradas. LENGTH_MAXIMUM define o comprimento máximo de uma cadeia a retornar. Cordas mais longas são divididas em cordas não mais longas do que o comprimento máximo. NEWLINE_CONSUME permite que as newlines sejam incluídas em strings em vez de terminá-las.
REGEX especifica uma expressão regular que uma cadeia de caracteres deve corresponder ao bereturned. Utilização típica
file(STRINGS myfile.txt myfile)
armazena uma lista na variável “myfile” na qual cada item é uma linha a partir do arquivo de entrada.
GLOB irá gerar uma lista de todos os arquivos que correspondem às expressões globbing e armazená-lo na variável. Expressões globantes são semelhantes a expressões regulares, mas muito mais simples. Se a bandeira relativa for assinalada para uma expressão, os resultados serão devolvidos como caminho arelativo para a localização indicada. (Não recomendamos o uso do GLOB para coletar uma lista de arquivos de código de sua árvore de código. Se os nocmakelistas.o ficheiro txt muda quando uma fonte é adicionada ou removida, pelo que o sistema de compilação gerado não consegue saber quando pedir ao CMake para se regenerar.)
Exemplos de expressões incluem globbing:
*.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 irá gerar uma lista semelhante para o regular GLOB, exceptit vai atravessar todos os subdiretórios da correspondência diretório andmatch os arquivos. As sub-pastas que são ligações simbólicas são apenas traversedif FOLLOW_SYMLINKS é dado ou cmake policy CMP0009 não é definido como novo.Veja cmake-help-policy CMP0009 para mais informações.
Exemplos de recursiva globbing incluem:
/dir/*.py - match all python files in /dir and subdirectories
MAKE_DIRECTORY vai criar os directórios fornecidos, também, se a sua parentdirectories não existem ainda
RENOMEAR move um arquivo ou diretório em um sistema de arquivos, substituindo thedestination atomicamente.O
remover irá remover os ficheiros indicados, também nas sub-pastas
a remoção irá remover os ficheiros e pastas indicados, as pastas vazias por alsonon
RELATIVE_ Path irá determinar a localização relativa do directório para o givenfile.
TO_CMAKE_ Path irá converter path para um caminho de estilo cmake com unix/.A entrada pode ser um caminho único ou um caminho do sistema como “$ENV{PATH}”.Note que as aspas à volta da ENV chamam A_ MCMAKE_ Path apenas levam um argumento. Este comando também irá converter os listdelimiters nativos para uma lista de caminhos como a variável de ambiente PATH.
TO_NATIVE_ Path funciona como o TO_CMAKE_ Path, mas irá converter do Caminho do estilo acmake para o estilo path nativo para windows e / forUNIX.
a transferência irá transferir o URL indicado para o ficheiro indicado. Se LOG var isspecified um log do download será colocado em var. Se o status var isspecificou o status da operação será colocado em var. O statusis retornou em uma lista de comprimento 2. O primeiro elemento é o valor de retorno numérico para a operação, e o segundo elemento é um valor de string para o erro. Um erro numérico 0 significa nenhum erro na operação. Se o tempo-limite for especificado, a operação será executada após os segundos do tempo, o tempo deve ser especificado como um inteiro. Ainactivity_timeout especifica um número inteiro de segundos de inactividade após o qual a operação deverá terminar. IfEXPECTED_HASH ALGO=valor é especificado, a operação irá verificar se o hash real do ficheiro transferido corresponde ao valor esperado, sendo o wheralgo um dos MD5, SHA1, SHA224, SHA256, SHA384 ou SHA512. Se não corresponder, a operação falha com um erro. (“EXPECTED_MD5sum “is short-hand for”EXPECTED_HASH MD5=sum”.) Se o SHOW_PROGRESS for especificado, as informações de progresso serão impressas como mensagens de Estado até que a operação esteja completa. Para os URLs https, o CMake deve ser construído com o OpenSSL. Os certificados TLS / SSL não são verificados por omissão. Settls_ verificar para verificar os certificados e / ou usar o EXPECTED_ hash para verificar o conteúdo transferido. Configura o TLS_ CAINFO para indicar um ficheiro de autoridade personalizado. Se não for indicada nenhuma das opções TLS, o CMakewill irá verificar as variáveis CMAKE_TLS_VERIFY e CMAKE_TLS_CAINFO,respectivamente.
o envio irá enviar o ficheiro indicado para o URL indicado. Se LOG var isspecificed um log do upload será colocado em var. Se o status var isspecificou o status da operação será colocado em var. O statusis retornou em uma lista de comprimento 2. O primeiro elemento é o valor de retorno numérico para a operação, e o segundo elemento é um valor de string para o erro. Um erro numérico 0 significa nenhum erro na operação. Se o tempo-limite for especificado, a operação será executada após os segundos do tempo, o tempo deve ser especificado como um inteiro. Ainactivity_timeout especifica um número inteiro de segundos de inactividade após o qual a operação deverá terminar. IfSHOW_PROGRESS is specified, progress information will be printed asstatus messages until the operation is complete.
TIMESTAMP irá escrever uma representação em cadeia do tempo de modificação do nome do ficheiro para variável.
se o comando não for capaz de obter uma variável timestamp, será colocado na string vazia “”.
veja a documentação do Sub-comando string TIMESTAMP para mais detalhes.
o comando file() também fornece assinaturas de cópia e instalação:
file(<COPY|INSTALL> files... DESTINATION <dir> ] )
a cópia da Assinatura copia os ficheiros, pastas e ligações simbólicas para a pasta de destino. Os caminhos de entrada relativos são avaliados em relação ao diretório de código atual, e um destino relativo é avaliado em relação ao diretório de compilação atual. Copyingpreserves input file timestamps, and optimizes out a file if it existsat the destination with the same timestamp. A cópia preserva as permissões de input, a menos que sejam identificadas permissões explícitas ou NO_SOURCE_PERMISSÕES (por omissão, são USE_SOURCE_PERMISSÕES). Veja o comando install(DIRECTORY)para a documentação de permissões, padrões, REGEX e opções de exclusão.
a assinatura de instalação difere ligeiramente da cópia: imprime mensagens de estado, e o NO_SOURCE_PERMISSÕES é por omissão. Os programas de instalação gerados pelo comando install() usam esta assinatura (com algumas opções documentadas para uso interno).
GENERATE will write an <output_file> with content from an < input_file>, or from < input_content>. A produção é generalizada, dependendo do conteúdo da condição <>. O arquivo é escrito no CMake generate-time e a entrada pode conter generatorexpressions. A condição< >, < output_file> e <input_file> também pode conter expressões geradoras. A condição <> deve ser avaliada para ” 0 ” ou “1”. O <output_file> deve avaliar a um nome único entre todas as configurações e entre todas as invocações de arquivo (gerar).