file¶

File manipulation command.

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

escreva <content> num ficheiro chamado <filename>. Se o arquivo não existir, ele será criado. Se o ficheiro já existir, o modo WRITEirá sobrepô-lo e o modo APPEND irá anexar ao fim.(Se o ficheiro for uma entrada de compilação, use o comando configure_file() para actualizar o ficheiro apenas quando o seu conteúdo mudar.)

file(READ <filename> <variable> )

leia o conteúdo de um arquivo chamado <filename> e armazene-o em um<variable>. Opcionalmente começar a partir dos dados <offset> andread no máximo <max-in> bytes. A opção HEX faz com que os dados sejam convertidos para uma representação hexadecimal (útil para dados binários).

file(STRINGS <filename> <variable> )

analisar uma lista de cordas ASCII de <filename> e armazená-la em<variable>. Os dados binários no ficheiro são ignorados. Os caracteres Carriage return (\r, CR) são ignorados. As opções são::

LENGTH_MAXIMUM <max-len>

considere apenas strings de, no máximo, um determinado comprimento.

LENGTH_MINIMUM <min-len>

considere apenas cadeias de pelo menos um dado comprimento.

LIMIT_COUNT <max-num>

limite o número de cordas distintas a serem extraídas.

LIMIT_INPUT <max-in>

limite o número de bytes de entrada a ler a partir do ficheiro.

LIMIT_OUTPUT <max-out>

limite o número de bytes totais a armazenar na <variable>.

NEWLINE_CONSUME

tratar caracteres de linha nova (\n, LF) como parte do conteúdo de cadeia em vez de terminá-los.

NO_HEX_CONVERSION

os ficheiros de Registo s da Intel Hex e da Motorola são convertidos automaticamente para a tobinary durante a leitura, a menos que esta opção seja dada.

REGEX <regex>

considere apenas cadeias que correspondam à expressão regular dada.

ENCODING <encoding-type>

considere cadeias de uma dada codificação. As codificações atualmente suportadas são: UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. Se a opção de codificação não for fornecida e o ficheiro tiver uma marca de ordem de Byte, a opção de codificação não será respeitada para respeitar a marca de ordem de Byte.

Por exemplo, o código

file(STRINGS myfile.txt myfile)

armazena uma lista na variável myfile em que cada item é uma linefrom o arquivo de entrada.

file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> <filename> <variable>)

Calcular um hash criptográfico do conteúdo de <filename> andstore-lo em um <variable>.

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

gerar uma lista de arquivos que correspondem ao <globbing-expressions> e armazená-lo no <variable>. Expressões globulares são semelhantes às expressões regulares, mas muito mais simples. Se RELATIVE flag for especificado, os resultados serão devolvidos como caminhos relativos ao givenpath. Não é definida uma ordem específica de resultados. Se a ordem é importante para a lista explicitamente (por exemplo, usando o comando list(SORT)).

por padrão GLOB listas diretórios-diretórios são omitidos no resultado seLIST_DIRECTORIES é definido como falso.

Nota

não recomendamos o uso de GLOB para coletar uma lista de arquivos de origem em nossa árvore de origem. Se não houver Cmakelistas.o ficheiro txt muda quando uma fonte é editada ou removida, pelo que o sistema de compilação gerado não pode 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

O GLOB_RECURSE modo de atravessar todos os subdiretórios de thematched diretório e correspondem aos arquivos. As sub-pastas que são ligações simbólicas só são atravessadas se FOLLOW_SYMLINKS for dado ou a PolíticaCMP0009 não for definida para NEW.

por omissão GLOB_RECURSE omite as pastas da definição da lista de resultadosLIST_DIRECTORIES para as pastas verdadeiras de adições à lista de resultados.Se FOLLOW_SYMLINKS for dado ou a Política CMP0009 não for definida para OLD então LIST_DIRECTORIES trata as ligações simbólicas como diretórios.

Exemplos de recursiva globbing incluem:

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

Mover um arquivo ou diretório em um sistema de arquivos a partir de <oldname> para<newname>, substituindo o destino atomicamente.

file(REMOVE )file(REMOVE_RECURSE )

remover os ficheiros indicados. O modo REMOVE_RECURSE irá remover os ficheiros e pastas givenfiles e também as pastas não-vazias

file(MAKE_DIRECTORY )

crie os diretórios indicados e seus pais conforme necessário.

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

Calcule o caminho relativo de um <directory> a <file> e guarde-o no <variable>.

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

o modo TO_CMAKE_PATH converte um nativo <path> em um cmake-stylepath com barras dianteiras (/). A entrada pode ser um caminho único ou caminho de busca do sistema como $ENV{PATH}. Um caminho de pesquisa será convertido para uma lista de estilo cmake separada por caracteres ;.

o modo TO_NATIVE_PATH converte um estilo cmake <path> em um nativepath com barras específicas de plataforma (\ em janelas e / em outros lugares).

use sempre aspas duplas em torno do <path> para ter a certeza de que é tratado como um único argumento para este comando.

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

o modo DOWNLOAD transfere o dado <url> para um local <file>.O modo UPLOAD envia uma carga local <file> para um dado <url>.

as opções tanto para DOWNLOAD e UPLOAD são:

INACTIVITY_TIMEOUT <seconds>

encerrar a operação após um período de inactividade.

LOG <variable>

armazenar um diário legível pelo ser humano da operação numa variável.

SHOW_PROGRESS

imprimir a informação sobre o progresso como mensagens de Estado até que a operação esteja completa.

STATUS <variable>

armazenar o estado resultante da operação numa variável.O estado é uma lista separada do comprimento 2.O primeiro elemento é o valor de retorno numérico para a operação,e o segundo elemento é um valor de cadeia de caracteres para o erro.Um erro numérico 0 significa nenhum erro na operação.

TIMEOUT <seconds>

terminar a operação após um determinado tempo total ter decorrido.

opções adicionais para DOWNLOAD são:

EXPECTED_HASH ALGO=<value>

Verifique que o conteúdo baixado hash corresponde ao valor esperado, ondeALGO é um dos MD5, SHA1, SHA224, SHA256, SHA384, ouSHA512. Se não corresponder, a operação falha com um erro.

EXPECTED_MD5 <value>

mão curta histórica para EXPECTED_HASH MD5=<value>.

TLS_VERIFY <ON|OFF>

especifique se deve verificar o certificado do servidor para https:// URLs.O padrão é não verificar.

TLS_CAINFO <file>

especifique um ficheiro de autoridade do Certificado personalizado para https:// URLs.

para https:// URLs CMake deve ser construído com suporte OpenSSL. TLS/SSLos certificados não são verificados por padrão. Definir TLS_VERIFY para ON certificados tocheck e / ou usar EXPECTED_HASH para verificar o conteúdo baixado.Se não for dada nenhuma opção TLS, o CMake verificará as variáveisCMAKE_TLS_VERIFY e CMAKE_TLS_CAINFO, respectivamente.

file(TIMESTAMP <filename> <variable> )

calcular uma representação em cadeia do tempo de modificação de <filename> e armazená-la em <variable>. Se o comando não conseguir obter a variável atimestamp, será configurada com o texto vazio (“”).

ver o comando string(TIMESTAMP) para documentação das opções <format> e UTC.

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

gerar um ficheiro de saída para cada configuração de compilação suportada pelo actualCMake Generator. Avalie generator expressionsa partir do conteúdo de entrada para produzir o conteúdo de saída. As opções são::

CONDITION <condition>

gerar o arquivo de saída para uma configuração particular apenas se a condição for verdadeira. A condição deve ser 0 ou 1após avaliação das expressões geradoras.

CONTENT <content>

Use o conteúdo dado explicitamente como entrada.

INPUT <input-file>

Use o conteúdo de um dado ficheiro como entrada.

OUTPUT <output-file>

especifique o nome do ficheiro de saída a gerar. Use expressões do gerador como $<CONFIG> para indicar um nome de ficheiro de saída específico da configuração. Múltiplas configurações podem gerar o mesmo ficheiro de saída apenas se o conteúdo gerado for idêntico. Caso contrário, o <output-file>deve avaliar a um nome único para cada configuração.Deve ser dada a opção

exactamente uma CONTENT ou INPUT. Um arquivo específicoOUTPUT pode ser nomeado por no máximo uma invocação de file(GENERATE).Os arquivos gerados são modificados em versões posteriores do cmake apenas se o seu conteúdo for alterado.

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

a assinatura COPY copia ficheiros, directórios e ligações simbólicas para a pasta de adestinação. 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. Copying preserves inputpermissions unless explit permissions or NO_SOURCE_PERMISSIONSare given (default is USE_SOURCE_PERMISSIONS).

ver o comando install(DIRECTORY) para documentação depermissões, FILES_MATCHING, PATTERN, REGEX, e EXCLUDE opções. Copiar pastas preserva a estrutura do seu conteúdo, mesmo que as opções sejam usadas para selecionar um subconjunto de ficheiros.

a assinatura INSTALL difere ligeiramente de COPY : as mensagens printsstatus (sujeitas à variável CMAKE_INSTALL_MESSAGE), e NO_SOURCE_PERMISSIONS é o padrão.Os programas de instalação gerados pelo comando install() utilizam esta assinatura (com algumas opções não documentadas para uso interno).

file(LOCK <path> )

bloquear um ficheiro indicado por <path> se não existir uma opção DIRECTORY e Ficheiro<path>/cmake.lock caso contrário. O ficheiro será bloqueado para o âmbito definido pela opçãoGUARD (o valor por omissão é PROCESS). RELEASE a opção pode ser usada para desbloquear o ficheiro explicitamente. Se a opção TIMEOUT não for especificada, o CMake esperará até que o bloqueio tenha sucesso ou até que ocorra um erro fatal. Se TIMEOUT estiver configurado para0 bloqueio será tentado uma vez e o resultado será relatado imediatamente. SeTIMEOUT não for 0 o CMake irá tentar bloquear o ficheiro para o período especificado pelo valor <seconds>. Quaisquer erros serão interpretados como fatais se não houver opçãoRESULT_VARIABLE. Caso contrário, o resultado será armazenado em <variable>e será 0 no sucesso ou mensagem de erro no fracasso.

Note que o bloqueio é consultivo – não há garantia de que outros processos irão respeitar este bloqueio, ou seja, sincronizar o bloqueio em duas ou mais instâncias que partilhem alguns recursos modificáveis. Lógica Similar aplicada a DIRECTORY diretório pai de bloqueio de Opções não impede outros comandos LOCK para bloquear qualquer diretório ou arquivo.Não é permitido bloquear o ficheiro duas vezes. Quaisquer diretórios intermediários e o próprio ficheiro serão criados se não existirem. GUARD e TIMEOUTopções ignoradas na operação RELEASE.

Deixe uma resposta

O seu endereço de email não será publicado.