Вопрос, вероятно, не самый лучший, чтобы описать мою проблему, но я не мог придумать лучшего. Мой make-файл выглядит примерно так:Как правильно сделать мой makefile для компиляции и запуска?
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)
Когда я хочу скомпилировать и запустить, я просто делаю «make run». Проблема в том, что моя программа обрабатывает сигнал, созданный Ctrl + Z, и если я запустил свою программу с «make run», сигнал будет отправлен на «make run», а не на мою программу.
В основном, называя «сделать бег» не то же самое, как вызов непосредственно «сделать & & ./prog», потому что в первом случае, «сделать прогон» не закончится, если «прога» не заканчивается первым.
Есть ли способ обойти это?
Я лучше не использовать его таким образом, то ... :) –