La domanda probabilmente non è la migliore per descrivere il mio problema, ma non riuscivo a pensarne uno migliore. Il mio makefile va così:Come eseguire correttamente il makefile per compilare ed eseguire?
PROGRAM_NAME = prog
OBJECT_FILES = $(PROGRAM_NAME).o
CFLAGS = -O2 -Wall -g
$(PROGRAM_NAME) : $(OBJECT_FILES)
gcc $(CFLAGS) -o [email protected] $(OBJECT_FILES)
$(PROGRAM_NAME).o : $(PROGRAM_NAME).c data.h
gcc $(CFLAGS) -c $<
clean :
$(RM) $(PROGRAM_NAME)
$(RM) $(OBJECT_FILES)
$(RM) *~ *.bak
run :
@$(MAKE) && ./$(PROGRAM_NAME) $(ARGS)
Quando voglio compilare ed eseguire, faccio semplicemente "make run". Il problema con questo è che il mio programma gestisce il segnale prodotto da Ctrl + Z e se avvio il mio programma con "make run", il segnale verrà inviato a "make run" e non il mio programma stesso.
In sostanza, chiamando "make run" non è la stessa cosa di chiamando direttamente "fare & & ./prog", perché nel primo caso, "make run" non terminerà a meno che "prog" termina prima.
C'è un modo per aggirare questo?
ho meglio non usarlo in questo modo, allora ... :) –