因此,我已经完成了有关制作Sudoku程序的学校项目,并且我拥有此makefile,当我使用'make'命令时,该makefile可以正常工作。我只是发现我需要它在“ make all”命令上进行干净地编译。我不知道如何设置。有什么建议吗?
CC = gcc
OBJS = main.o MainAux.o game.o parser.o solver.o
EXEC = sudoku_console
COMP_FLAG = -ansi -Wall -Wextra -Werror -pedantic-errors
GUROBI_COMP = -I/usr/local/lib/gurobi563/include
GUROBI_LIB = -L/usr/local/lib/gurobi563/lib -lgurobi56
$(EXEC): $(OBJS)
$(CC) $(OBJS) $(GUROBI_LIB) -o $@ -lm
main.o: main.c game.h
$(CC) $(COMP_FLAG) -c $*.c
game.o: game.c MainAux.h parser.h solver.h game.h
$(CC) $(COMP_FLAG) -c $*.c
MainAux.o: MainAux.c game.h
$(CC) $(COMP_FLAG) -c $*.c
parser.o: parser.c MainAux.h
$(CC) $(COMP_FLAG) -c $*.c
solver.o: solver.c game.h MainAux.h
$(CC) $(COMP_FLAG) $(GUROBI_COMP) -c $*.c
clean:
rm -f $(OBJS) $(EXEC)
只需创建一个名为all
的目标,该目标取决于您想要发生的一切。因此,例如:
all: $(EXEC)
.PHONY: all
.PHONY
卫生良好,但并非严格要求。
现在,当您运行make all
时,它会找到all
目标,并看到要对其进行更新,必须先更新$(EXEC)
目标,而鲍勃是您的叔叔!