makefile,工作正常,但即使没有更改也可以运行命令

时间:2015-04-12 11:14:50

标签: c makefile

我有以下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 

2 个答案:

答案 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