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á adicionar-se ao fim.Serão criadas quaisquer pastas na localização indicada por <filename>
que não existam.
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 cordas de pelo menos um determinado comprimento.
LIMIT_COUNT <max-num>
limite o número de cadeias 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 terminar neles.
NO_HEX_CONVERSION
Intel Hex e Motorola s-Files são convertidos automaticamente para a toinary durante a leitura, a menos que esta opção seja dada.
REGEX <regex>
considere apenas cadeias que correspondam à expressão regular indicada.
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(<HASH> <filename> <variable>)
calcular um hash criptográfico do conteúdo de <filename>
e armazená-lo em <variable>
. Os nomes suportados <HASH>
algoritmos são aqueles listados pelo comando string(<HASH>).
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. Os resultados serão ordenados lexicograficamente.
por omissã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 globulares incluem::
*.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 modo GLOB_RECURSE
percorrerá todas as sub-pastas do diretório em riscado e corresponderá 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, também pastas não-vazias. Não é emitido nenhum erro se o ficheiro agiven não existir.
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>
para um <file>
e armazene-o no <variable>
.
file(TO_CMAKE_PATH "<path>" <variable>)file(TO_NATIVE_PATH "<path>" <variable>)
O TO_CMAKE_PATH
modo converte um nativo <path>
em um cmake-stylepath com a forward-barras (/
). 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
carrega um local <file>
para um dado <url>
.
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 do 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.
USERPWD <username>:<password>
define o nome de utilizador e a senha para a operação.
HTTPHEADER <HTTP-header>
HTTP header for operation. A subopção pode ser repetida várias vezes.
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 dos algoritmos suportados pelofile(<HASH>)
.Se não corresponder, a operação falha com um erro.
EXPECTED_MD5 <value>
o Histórico de curto mão 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 de OpenSSL. Os certificados TLS/SSL
não são verificados por omissão. Definir TLS_VERIFY
para ON
certificados tocheck e / ou usar EXPECTED_HASH
para verificar o conteúdo baixado.Se não for dada a opção TLS
, o CMake irá verificar as variáveisCMAKE_TLS_VERIFY
E CMAKE_TLS_CAINFO
, respectivamente.
file(TIMESTAMP <filename> <variable> )
calcule uma representação em cadeia do tempo de modificação de <filename>
e armazene – a 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
. Avaliegenerator 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 ficheiro de saída para uma determinada configuração 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.Um caminho relativo é tratado em relação ao valor deCMAKE_CURRENT_SOURCE_DIR
. Ver Política CMP0070
.
OUTPUT <output-file>
indique o nome do ficheiro de saída a gerar. Usar 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.Um caminho relativo (após avaliação das expressões do gerador) é tratado com respeito ao valor de CMAKE_CURRENT_BINARY_DIR
.Ver Política CMP0070
.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 e seu timestamp atualizado em cmakeruns subsequentes apenas se o seu conteúdo for alterado.
Note também que file(GENERATE)
não cria o ficheiro de saída até à fase de geração. O arquivo de saída ainda não foi escrito quando o comandofile(GENERATE)
retorna,ele é escrito apenas após o processamento de todos os arquivos de um projeto CMakeLists.txt
.
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. A cópia preserva as permissões internas, a menos que sejam dadas permissões explícitas ou NO_SOURCE_PERMISSIONS
(o valor por omissão é USE_SOURCE_PERMISSIONS
).
ver o comando install(DIRECTORY)
para documentação depermissões, FILES_MATCHING
, PATTERN
, REGEX
, e opções EXCLUDE
. 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
: ele printsstatus mensagens (sujeito à variável CMAKE_INSTALL_MESSAGE
), e NO_SOURCE_PERMISSIONS
é 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
for definido para0
o bloqueio será tentado uma vez e o resultado será comunicado 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 duas ou mais instâncias CMake partilhando alguns recursos modificáveis. A 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 em RELEASE
operação.