archivo¶

Comando de manipulación de archivos.

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

Escribir <content> en un archivo llamado <filename>. Si el archivo no existe, se creará. Si el archivo ya existe, el modo WRITE lo sobrescribirá y el modo APPEND se añadirá al final.(Si el archivo es una entrada de compilación, utilice el comando configure_file() para actualizar el archivo solo cuando cambie su contenido.)

file(READ <filename> <variable> )

Leer el contenido de un archivo llamado <filename> y guárdelo en un<variable>. Opcionalmente, comience desde los <offset> dados y lea como máximo <max-in> bytes. La opción HEX hace que los datos se conviertan en una representación hexadecimal (útil para datos binarios).

file(STRINGS <filename> <variable> )

Analiza una lista de cadenas ASCII de <filename> y guárdala en<variable>. Los datos binarios en el archivo se ignoran. Los caracteres de retorno de carro(\r, CR) se ignoran. Las opciones son:

LENGTH_MAXIMUM <max-len>

Considere solo cadenas de una longitud determinada como máximo.

LENGTH_MINIMUM <min-len>

Considere solo cadenas de al menos una longitud determinada.

LIMIT_COUNT <max-num>

Limite el número de cadenas distintas que se extraerán.

LIMIT_INPUT <max-in>

Limite el número de bytes de entrada a leer del archivo.

LIMIT_OUTPUT <max-out>

Limite el número de bytes totales a almacenar en <variable>.

NEWLINE_CONSUME

Trate los caracteres de nueva línea (\n, LF) como parte del contenido de cadena en lugar de terminarlos.

NO_HEX_CONVERSION

Los archivos Intel Hex y Motorola S-record se convierten automáticamente en archivos binarios durante la lectura, a menos que se proporcione esta opción.

REGEX <regex>

Considere solo cadenas que coincidan con la expresión regular dada.

ENCODING <encoding-type>

Considere cadenas de una codificación dada. Las codificaciones soportadas actualmente son: UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. Si no se proporciona la opción de CODIFICACIÓN y el archivo tiene una Marca de Orden de Bytes, la opción de CODIFICACIÓN se ajustará de forma predeterminada para respetar la Marca de Orden de bytes.

Por ejemplo, el código

file(STRINGS myfile.txt myfile)

almacena una lista en la variable myfile en la que cada elemento es una línea del archivo de entrada.

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

Calcule un hash criptográfico del contenido de <filename> y guárdelo en <variable>.

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

Genere una lista de archivos que coincidan con <globbing-expressions> y guárdela en <variable>. Las expresiones Globbing son expresiones toregulares similares, pero mucho más simples. Si se especifica la marca RELATIVE, los resultados se devolverán como rutas relativas a la ruta dada. No se define un orden específico de los resultados. Si el orden es importante, entonces divide la lista explícitamente (por ejemplo, usando el comando list(SORT)).

De forma predeterminada GLOB directorios de listas: los directorios se omiten en el resultado siLIST_DIRECTORIES se establece en false.

Nota

No recomendamos usar GLOB para recopilar una lista de archivos fuente de su árbol de fuentes. Si no hay listas de fabricantes.el archivo txt cambia cuando se agrega o elimina una fuente, el sistema de compilación generado no puede saber cuándo se debe realizar la regeneración de CMake.

Los ejemplos de expresiones globulares incluyen:

*.cxx - match all files with extension cxx*.vt? - match all files with extension vta,...,vtzf.txt - match files f3.txt, f4.txt, f5.txt

El modo GLOB_RECURSE recorrerá todos los subdirectorios del directorio coincidente y coincidirá con los archivos. Los subdirectorios que son enlaces simbólicos solo se recorren si se da FOLLOW_SYMLINKS o si la políticaCMP0009 no se establece en NEW.

De forma predeterminada GLOB_RECURSE omite los directorios de la lista de resultados: la configuraciónLIST_DIRECTORIES a true añade directorios a la lista de resultados.Si se da FOLLOW_SYMLINKS o la política CMP0009 no se establece enOLD, LIST_DIRECTORIES trata los enlaces simbólicos como directorios.

Los ejemplos de globeo recursivo incluyen:

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

Mueva un archivo o directorio dentro de un sistema de archivos de <oldname> a<newname>, reemplazando el destino atómicamente.

file(REMOVE )file(REMOVE_RECURSE )

Quitar el dado archivos. El modo REMOVE_RECURSE eliminará los givenfiles y directorios, también los directorios no vacíos

file(MAKE_DIRECTORY )

Cree los directorios dados y sus padres según sea necesario.

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

Calcule la ruta relativa de <directory> a <file> y guárdela en <variable>.

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

El modo TO_CMAKE_PATH convierte un <path> nativo en una ruta de estilo cmake con barras oblicuas (/). La entrada puede ser una ruta única o una ruta de búsqueda de un sistema como $ENV{PATH}. Una ruta de búsqueda se convertirá a una lista de estilo cmake separada por ; caracteres.

El modo TO_NATIVE_PATH convierte un estilo cmake <path> en un nativepath con barras inclinadas específicas de la plataforma (\ en Windows y / en otros lugares).

Siempre use comillas dobles alrededor de <path> para asegurarse de que se trate como un solo argumento de este comando.

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

El modo DOWNLOAD descarga el <url> dado a un <file> local.El modo UPLOAD carga un <file> local a un <url> dado.

Las opciones de DOWNLOAD y UPLOAD son:

INACTIVITY_TIMEOUT <seconds>

Poner fin a la operación tras un período de inactividad.

LOG <variable>

Almacene un registro legible por humanos de la operación en una variable.

SHOW_PROGRESS

Imprima la información de progreso como mensajes de estado hasta que se complete la operación.

STATUS <variable>

Almacene el estado resultante de la operación en una variable.El estado es una lista separada ; de longitud 2.El primer elemento es el valor de retorno numérico de la operación, y el segundo elemento es un valor de cadena para el error.Un error numérico 0 significa que no hay error en la operación.

TIMEOUT <seconds>

Finalice la operación una vez transcurrido un tiempo total determinado.

Las opciones adicionales a DOWNLOAD son:

EXPECTED_HASH ALGO=<value>

Verifique que el hash de contenido descargado coincida con el valor esperado, dondeALGO es uno de MD5, SHA1, SHA224, SHA256, SHA384, oSHA512. Si no coincide, la operación falla con un error.

EXPECTED_MD5 <value>

Mano corta histórica para EXPECTED_HASH MD5=<value>.

TLS_VERIFY <ON|OFF>

Especifique si desea verificar el certificado de servidor para URL https://.El valor predeterminado es no verificar.

TLS_CAINFO <file>

Especifique un archivo de autoridad de certificación personalizado para URL https://.

Para https:// URLs, CMake debe construirse con soporte OpenSSL. TLS/SSLlos certificados no están marcados de forma predeterminada. Establezca TLS_VERIFY en ON para comprobar certificados y / o use EXPECTED_HASH para verificar el contenido descargado.Si no se da ninguna opción TLS, CMake comprobará las variablesCMAKE_TLS_VERIFY y CMAKE_TLS_CAINFO, respectivamente.

file(TIMESTAMP <filename> <variable> )

Calcular una representación de cadena del tiempo de modificación de <filename>y almacenarlo en <variable>. Si el comando no puede obtener la variable atimestamp se establecerá en la cadena vacía (“”).

Vea el comando string(TIMESTAMP) para la documentación de las opciones <format> y UTC.

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

Genere un archivo de salida para cada configuración de compilación compatible con elCMake Generator actual. Evalúegenerator expressionsdel contenido de entrada para producir el contenido de salida. Las opciones son:

CONDITION <condition>

Genere el archivo de salida para una configuración en particular solo si la condición es verdadera. La condición debe ser 0 o 1después de evaluar las expresiones del generador.

CONTENT <content>

Utilice el contenido dado explícitamente como entrada.

INPUT <input-file>

Utilice el contenido de un archivo dado como entrada.

OUTPUT <output-file>

Especifique el nombre del archivo de salida que se va a generar. Utilice expresiones del generador como $<CONFIG> para especificar un nombre de archivo de salida específico de la configuración. Varias configuraciones solo pueden generar el mismo archivo de salida si el contenido generado es idéntico. De lo contrario, <output-file> debe evaluar un nombre único para cada configuración.

Se debe dar exactamente una opción CONTENT o INPUT. Un archivoOUTPUT específico puede ser nombrado como máximo con una invocación de file(GENERATE).Los archivos generados se modifican en ejecuciones posteriores de cmake solo si su contenido cambia.

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

La firma COPY copia archivos, directorios y enlaces simbólicos a la carpeta adestination. Las rutas de entrada relativas se evalúan con respecto al directorio de origen actual, y se evalúa un destino relativo con respecto al directorio de compilación actual. La copia conserva las marcas de tiempo del archivo de entrada y optimiza un archivo si existe en el destino con la misma marca de tiempo. La copia conserva las emisiones de entrada a menos que se den permisos explícitos o NO_SOURCE_PERMISSIONS(el valor predeterminado es USE_SOURCE_PERMISSIONS).

Consulte el comando install(DIRECTORY) para obtener documentación de permisos, FILES_MATCHING, PATTERN, REGEX, y opcionesEXCLUDE. Copiar directorios preserva la estructura de su contenido incluso si se utilizan opciones para seleccionar un subconjunto de archivos.

La firma INSTALL difiere ligeramente de COPY: imprime mensajes de estado (sujetos a la variable CMAKE_INSTALL_MESSAGE) y NO_SOURCE_PERMISSIONS es el valor predeterminado.Los scripts de instalación generados por el comando install() utilizan esta firma (con algunas opciones no documentadas para uso interno).

file(LOCK <path> )

Bloquee un archivo especificado por <path> si no hay opción DIRECTORY presente y archivo<path>/cmake.lock de lo contrario. El archivo se bloqueará para el ámbito definido por la opciónGUARD (el valor predeterminado es PROCESS). la opción RELEASE se puede utilizar para desbloquear el archivo de forma explícita. Si no se especifica la opción TIMEOUT, CMake esperará hasta que el bloqueo tenga éxito o hasta que se produzca un error fatal. Si TIMEOUT se establece en0, el bloqueo se intentará una vez y el resultado se informará de inmediato. SiTIMEOUT no es 0, CMake intentará bloquear el archivo durante el período especificado por el valor <seconds>. Cualquier error se interpretará como fatal si no hay una opciónRESULT_VARIABLE. De lo contrario, el resultado se almacenará en <variable>y será 0 en caso de éxito o mensaje de error en caso de error.

Tenga en cuenta que el bloqueo es un aviso – no hay garantía de que otros procesos respeten este bloqueo, es decir, bloquear sincronizar dos o más instancias de CMake compartiendo algunos recursos modificables. La lógica similar aplicada al directorio padre de bloqueo de opciones DIRECTORY no impide que otros comandos LOCK bloqueen cualquier directorio o archivo de un hijo.

No se permite intentar bloquear dos veces el archivo. Se crearán los directorios intermedios y el propio archivo si no existen. opciones GUARD y TIMEOUTignoradas en la operación RELEASE.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.