我有以下make文件。问题是即使两个.cpp文件没有变化,它仍会在提示符下运行所有命令。其他一切都很好。
all: hello1
hello1: make func
gcc hellomake.o hellofunc.o -o hello -I.
make: hellomake.c
gcc -c hellomake.c
func: hellofunc.c
gcc -c hellofunc.c
clean:
rm -rf *o hello
run:
./hello
答案 0 :(得分:0)
这是一个可以修改的Makefile示例(特别是CFLAGS部分),并且不会重新链接
NAME = xxx
SRCS = xxx.c
OBJS = $(SRCS:.c=.o)
CC = gcc
RM = rm -rf
CFLAGS += -W -Wall -Wextra
CFLAGS += -O2
CFLAGS += -ansi -pedantic
CFLAGS += -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE
all: $(NAME)
$(NAME): $(OBJS)
$(CC) $(OBJS) -o $(NAME)
clean:
$(RM) $(OBJS)
fclean: clean
$(RM) $(NAME)
re: fclean all
.PHONY: all clean fclean re
.PHONY允许区分最终文件名和规则名称
答案 1 :(得分:-1)
您需要将目标中的.c替换为.o,如下所述
make: hellomake.o
gcc -c hellomake.c
func: hellofunc.o
gcc -c hellofunc.c