es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reconstrucción forzada desde el makefile interno.

¿Existe alguna forma de forzar una reconstrucción completa (por ejemplo, -B) desde dentro de un archivo make?

He agregado un paso previo a la construcción que incrementa un número de construcción, almacenado en un archivo de texto, que es utilizado por mi proyecto. El número de construcción se incrementa solo si se pasa newbuild=1 como argumento a ‘make’.

pre-build:
# Esta opción incrementa el número de construcción
ifdef newbuild
incrementar_numero_construccion
endif

Si se llama a este código, me gustaría forzar una reconstrucción completa para que nada se desincronice, y no tenga que escribir -B cada vez que se usa newbuild=1. ¿Existe alguna forma de hacerlo?

¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de forzar una reconstrucción completa desde dentro de un makefile. Puede utilizar el objetivo .PHONY para declarar un objetivo como ficticio, lo que significa que no es un archivo real, sino más bien un comando que siempre debe ejecutarse. Luego, puede agregar este objetivo como una dependencia para otros objetivos para asegurarse de que siempre se ejecute antes que los otros objetivos.

    Aquí hay un ejemplo de cómo puede forzar una reconstrucción completa declarando un objetivo ficticio llamado force-rebuild:

    .PHONY: force-rebuild
    
    pre-build:
        # Esta opción incrementa el número de compilación
        ifdef newbuild
        increment_build_number
        endif
    
    force-rebuild: pre-build
        # Elimina todos los archivos generados para forzar una reconstrucción completa
        rm -rf generated_files/
        touch force-rebuild
    
    all: force-rebuild
        # Construye tu proyecto aquí, usando el número de compilación actualizado
    
    

    En este ejemplo, el objetivo force-rebuild se declara como ficticio y se define para eliminar todos los archivos generados y tocar un archivo llamado force-rebuild. El objetivo all (que es el objetivo predeterminado) depende de force-rebuild, por lo que siempre que newbuild = 1 se pase como un argumento a make, se ejecutará el objetivo pre-build, seguido del objetivo force-rebuild, lo que a su vez forzará una reconstrucción completa de su proyecto.

Comments are closed.