¿Hay alguna forma de utilizar GNU Make para compilar todos los archivos C en un directorio en programas separados, con cada programa nombrado como el archivo fuente sin la extensión .c?Compilar todos los archivos C en un directorio en programas separados
Respuesta
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o [email protected] $<
No creo que ni siquiera necesita un makefile - las reglas hacen implícitos por defecto debería hacerlo:
$ ls
src0.c src1.c src2.c src3.c
$ make `basename -s .c *`
cc src0.c -o src0
cc src1.c -o src1
cc src2.c -o src2
cc src3.c -o src3
Editado para hacer la línea de comandos un poco más simple.
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o [email protected] $<
clean:
rm -f $(PROGS)
Mejorando la respuesta de Martin Broadhurst agregando el objetivo "limpio". "make clean" limpiará todo el ejecutable.
Deberías usar '.PHONY' para un objetivo como' clean'. Ver http://stackoverflow.com/questions/2145590/what-is-the-purpose-of-phony-in-a-makefile por la razón. –
@MartinBroadhurst También deberías usar un '.PHONY' para el objetivo' all'. – iBug
- 1. fichero Make: compilar todos los archivos .cpp a .o archivos
- 2. gmake compila todos los archivos en un directorio
- 3. Copie todos los archivos en el directorio
- 4. Listar los archivos en un directorio y todos los subdirectorios
- 5. Ejecutar todos los archivos Python en un directorio
- 6. Unir todos los archivos en un directorio, con un separador
- 7. Listar todos los archivos y directorios en un directorio + subdirectorios
- 8. CoffeeScript: compila todos los archivos .coffee en el directorio actual y en todos los subdirectorios
- 9. QMake: compilando automáticamente todos los archivos en un directorio
- 10. Iterar todos los archivos en un directorio usando BOOST_FOREACH
- 11. Ejecutar todos los archivos SQL en un directorio
- 12. Git - Seguimiento automático de todos los archivos en un directorio
- 13. Script PHP para recorrer todos los archivos en un directorio?
- 14. fuente de todos los archivos en un directorio de .bash_profile
- 15. Eliminar todos los archivos en un directorio con Python
- 16. ¿Cómo obtener todos los archivos en un directorio?
- 17. Cómo obtener archivos en un directorio, incluidos todos los subdirectorios
- 18. ¿Cómo formatear todos los archivos bajo un directorio en emacs?
- 19. Obtener rutas absolutas de todos los archivos en un directorio
- 20. XQuery todos los archivos en un directorio específico?
- 21. Buscar todos los archivos CSV en un directorio usando Python
- 22. ¿Cómo recupero todos los nombres de archivos en un directorio?
- 23. Makefile que compila todos los archivos cpp en un directorio en un ejecutable independiente
- 24. ¿Compila todos los archivos C# en un solo archivo?
- 25. cómo obtener todos los archivos en un directorio en ipad usando el objetivo c
- 26. Cómo recursivamente enumerar todos los archivos en un directorio en C#?
- 27. ¿Cómo recorrer todos los archivos en un directorio en C# .net?
- 28. Compilar todos los archivos menos usando un archivo MAKE
- 29. Python-FTP descarga todos los archivos en el directorio
- 30. ¿Cómo incluir todos los archivos de un directorio con cmake?
Con el recordatorio de que el espaciado final es en realidad una pestaña. –
@Martin brillante! Pero no entiendo por qué no llama a PROGS y SRCS en la línea principal. –
@ user4050, lo siento, me perdí tu pregunta. El destino 'all' predeterminado construye' $ (PROGS) ', y la línea principal dice cómo construir archivos sin una extensión, que es lo que' $ (PROGS) 'son, de los archivos'% .c', que es lo que ' $ (SRCS) 'son. –