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 WRITE
irá 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, onde
ALGO
é um dosMD5
,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/SSL
os 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 expressions
a 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 1
apó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_PERMISSIONS
are 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 TIMEOUT
opções ignoradas na operação RELEASE
.