run configurar comando makefile

makefile - configurar - ¿Cómo sabe la aplicación "hacer" el objetivo predeterminado para construir si no se especifica ningún objetivo?



makefile windows (3)

La mayoría de las aplicaciones de Linux están compiladas con:

make make install clean

Tal como lo entendí, make toma los nombres de los objetivos de compilación como argumentos. Entonces, la install es un objetivo que copia algunos archivos y después de eso, clean es un objetivo que elimina los archivos temporales.

Pero, ¿qué objetivo creará si no se especifican los argumentos (por ejemplo, primer comando en mi ejemplo)?


GNU Make también le permite especificar el objetivo de creación predeterminado utilizando una variable especial llamada .DEFAULT_GOAL. Incluso puede deshacer esta variable en el medio del archivo MAKE, haciendo que el próximo objetivo en el archivo se convierta en el objetivo predeterminado.

Cosas realmente interesantes pero esotéricas. Pero estoy de acuerdo con Anon: el manual de gnu make es bastante legible. Podrías pensar que no necesitas saber la mayoría de las cosas que contiene, pero una vez que veas uno muy completo, realmente apreciarás algunas cosas realmente fantásticas que puedes hacer con ellas: manipulación de cadenas, funciones de archivos / directorios, etc.

Ref: The Gnu Make manual - Variables especiales


Para ahorrarle a los demás unos segundos, y para evitar que tengan que leer el manual, esta es la respuesta breve. Agregue esto a la parte superior de su archivo make:

.DEFAULT_GOAL := mytarget

mytarget ahora será el objetivo que se ejecuta si se ejecuta "make" y no se especifica ningún objetivo.

Si tiene una versión anterior de make (<= 3.80), esto no funcionará. Si este es el caso, entonces puede hacer lo que mencione anon, simplemente agregue esto al principio de su archivo make:

.PHONY: default default: mytarget ;

Referencias: https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html


Por defecto, comienza procesando el primer objetivo que no comienza con un ''.'' también conocido como el objetivo predeterminado ; para hacer eso, puede que tenga que procesar otros objetivos, específicamente, de los que depende el primer objetivo. El manual de GNU hace covers de todo esto, y es una lectura sorprendentemente fácil e informativa.