Pytanie prawdopodobnie nie najlepiej opisuje mój problem, ale nie mogłem wymyślić lepszego. Mój plik Makefile jest taki:Jak poprawnie utworzyć plik Makefile, aby skompilować i uruchomić?
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)
Kiedy chcę skompilować i uruchomić, po prostu wykonuję "make run". Problem polega na tym, że mój program obsługuje sygnał generowany przez Ctrl + Z i jeśli uruchomię program z "make run", sygnał zostanie wysłany do "make run", a nie do samego programu.
Zasadniczo, nazywając „make run” to nie to samo, co wywołanie bezpośrednio „make & & ./prog”, ponieważ w pierwszym przypadku, „make run” nie będzie obowiązywać, o ile „prog” kończy pierwszy.
Czy istnieje sposób obejścia tego?
I lepiej nie używać go w ten sposób wtedy ... :) –