Un Makefile es un archivo utilizado por la herramienta make para automatizar la compilación de programas. Estas son las reglas estándar y las mejores prácticas para escribir un Makefile eficaz:
target: prerequisites command
Regla predeterminada: el primer objetivo en el Makefile es el que se creará de forma predeterminada.
Compilando archivos fuente:
CC = gcc CFLAGS = -Wall -g SOURCES = main.c utils.c OBJECTS = $(SOURCES:.c=.o) TARGET = mon_programme $(TARGET): $(OBJECTS) $(CC) -o $@ $^ %.o: %.c $(CC) $(CFLAGS) -c $
- Phonies: utiliza .PHONY para objetivos que no son archivos.
.PHONY: clean clean: rm -f $(OBJECTS) $(TARGET)
- Variables: Utiliza variables para simplificar la gestión de rutas y opciones.
CC = gcc CFLAGS = -Wall
Gestión de dependencias: utiliza reglas y patrones implícitos para reducir la repetición.
Dependencias automáticas: Puedes generar dependencias automáticamente para archivos .o.
-include $(OBJECTS:.o=.d)Ejemplo completo
Aquí hay un ejemplo completo de Makefile:
# Variables CC = gcc CFLAGS = -Wall -g SOURCES = main.c utils.c OBJECTS = $(SOURCES:.c=.o) TARGET = mon_programme # Règle par défaut all: $(TARGET) # Lien de l'exécutable # $@ -> $(TARGET) # $^ -> $(OBJECTS) $(TARGET): $(OBJECTS) $(CC) -o $@ $^ # Compilation des fichiers .c en .o # $ Premier element des pr %.o: %.c $(CC) $(CFLAGS) -c $Buenas prácticas
Sangría con tabulaciones: los comandos en las reglas deben tener sangría con tabulaciones, no con espacios.
Código de comentario: utiliza comentarios para explicar secciones del Makefile.
Agrupar archivos: si su proyecto contiene varios archivos, organícelos en subdirectorios y use variables para administrar las rutas.
Usa reglas implícitas: aprovecha las reglas integradas de make para evitar reescribir reglas comunes.
¿Por qué utilizar .PHONY?
Evitar conflictos: Si existe un archivo con el mismo nombre que el objetivo, make pensará que el objetivo está actualizado y no ejecutará los comandos asociados. .PHONY evita esto.
Mejoras de rendimiento: Los objetivos falsos siempre se consideran "por hacer", lo que puede mejorar la velocidad de ejecución de los comandos asociados.
Eficiencia: usar %.o:%c te permite beneficiarte de la optimización para recompilar solo lo necesario.
Práctico: Para proyectos más grandes, %.o:%c es mucho más adecuado.
Un Makefile bien estructurado facilita la gestión de proyectos y evita errores de compilación. Si sigue estas reglas y mejores prácticas, podrá crear un Makefile eficiente y fácil de mantener.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3