Encontré esta pregunta que básicamente es lo mismo, pero no obtuve una respuesta real.
¿Dónde está el archivo de configuración / archivo de base de datos de make donde recuerda las marcas de tiempo del archivo, para que pueda saber qué cambió? Revisé y no hay .make o similar en mi proyecto, ni en el directorio de inicio.
¿O almacena de alguna manera la información dentro de los propios archivos, tal vez modificando las marcas de tiempo? (Eso suena sospechoso aunque)
No existe tal "base de datos". El programa simplemente compara la modificación de los sistemas de archivos y las marcas de tiempo de creación de los archivos de origen y de destino.
Digamos que tienes la siguiente regla:
some_target: some_source_1 some_source_2 Luego, si la marca de tiempo modificada de some_source_1 o some_source_2 es posterior a la hora de modificación/creación de some_target , la regla se activará y el destino se reconstruirá.
Los archivos MAKE describen objetivos y dependencias . Make comandos de ejecución para crear/recrear los objetivos si es necesario.
Si el destino no existe, make intentará crearlo.
Si el destino existe, make compara los tiempos de modificación del destino y sus dependencias. Si alguna de las dependencias se modificó después de modificar el objetivo, make ejecutará los comandos para regenerar el objetivo.
Por ejemplo, para los archivos C, el objetivo es el archivo .o correspondiente y la dependencia está en el archivo que contiene el código fuente C (y posiblemente algunos archivos incluidos). Si el archivo .c es más nuevo que el archivo .o , make ejecuta el compilador de C. Esto generará un archivo .o con un tiempo de modificación más reciente que el archivo .c .