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.

Generar un ejecutable para cada archivo .c en un directorio.

Mi directorio del proyecto se ve así:
 

/proyecto
    Makefile
   /src
        main.c
        foo.c
        bar.c
    /exec
        main
        foo
        bar

 
Quiero que el archivo Makefile genere un archivo ejecutable para cada archivo .c en la carpeta /src y coloque el archivo ejecutable en la carpeta /exec.

Es mi primera vez usando Makefile, intenté el siguiente código pero genera los archivos de ejecución en la carpeta /src y quiero que estén en la carpeta /exec.

CFLAGS := -Wall -g
SRC_DIR := src
EXEC_DIR := exec

SRC_FILES := $(wildcard $(SRC_DIR)/*.c)

all: $(SRC_FILES:.c=)

.c:
    gcc $(CFLAGS) $< -o $(EXEC_DIR)/$@
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes usar la variable $(@D) para especificar el directorio para el archivo de salida. La variable $(@D) corresponde a la parte del directorio en el nombre del archivo objetivo.

    Por lo tanto, el archivo Makefile debería verse así:

    CFLAGS := -Wall -g
    SRC_DIR := src
    EXEC_DIR := exec
    
    SRC_FILES := $(wildcard $(SRC_DIR)/*.c)
    
    all: $(SRC_FILES:.c=)
    
    .c:
        gcc $(CFLAGS) $< -o $(EXEC_DIR)/$(@D)/$@ 
    

Comments are closed.