0

我正在尝试使用带有 makefile 的 GCC (linux) 来编译我的项目。我收到以下错误:

% make map
make: *** No rule to make target `map'.  Stop.

有谁知道那会是什么?

这是生成文件:

CC = gcc
DEBUG_FLAG = -g
COMP_FLAG = -std=c99 -Wall -Werror -pedantic-errors -DNDEBUG 

LIB = -L. -lmtm 
MAP_OBJS = map.o
USER_OBJS = user.o
NETWORK_OBJS = network.o
ISOCIAL_OBJS = network.o user.o Isocial.o
PARSING_OBJS = user.o network.o map.o Isocial.o mtm_isocial.o

PARSING = parsing
MAP_TEST = map_example_test
ISOCIAL_TEST = Isocial_test
NETWORK_TEST = network_test
USER_TEST = user_test

TEST_PATH = ./tests/

$(PARSING) : $(PARSING_OBJS) 
    $(CC) $(DEBUG_FLAG) $(PARSING_OBJS) $(LIB) -o $@
$(MAP_TEST) : $(MAP_OBJS)
    $(CC) $(DEBUG_FLAG) $(MAP_OBJS) $(LIB) -o $@
$(ISOCIAL_TEST) : $(ISOCIAL_OBJS)
    $(CC) $(DEBUG_FLAG) $(ISOCIAL_OBJS) $(LIB) -o $@
$(USER_TEST) : &(USER_OBJS)
    $(CC) $(DEBUG_FLAG) $(USER_OBJS) $(LIB) -o $@
$(NETWORK_TEST) : $(NETWORK_OBJS)
        $(CC) $(DEBUG_FLAG) $(MAP_OBJS) $(LIB) -o $@

map.o: map.c map.h mtm_ex2.h
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
isocial.o: Isocial.c user.h mtm_ex2.h set.h network.h list.h Isocial.h
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
parsing.o: parsing.c Isocial.h parsing.h mtm_ex2.h
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
network.o: network.c network.h set.h mtm_ex2.h
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
user.o:user.c user.h set.h mtm_ex2.h
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
user_test.o:  user_test.c ../test_utilities.h ../user.h ../mtm_ex2.h \
  ../set.h  
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $(TEST_PATH)$*.c
Isocial_test.o:  Isocial_test.c ../test_utilities.h ../Isocial.h
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c $(TEST_PATH)$*.c
map_example_test.o: map_example_test.c ../test_utilities.h ../map.h
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c $(TEST_PATH)$*.c
network_test.o: network_test.c ../test_utilities.h ../network.h ../set.h \
  ../mtm_ex2.h
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c $(TEST_PATH)$*.c

EXEC = $(PARSING) $(MAP_TEST) $(ISOCIAL_TEST $(USER_TEST) $(NETWORK_TEST)

tests : $(MAP_TEST) $(ISOCIAL_TEST) $(USER_TEST) $(NETWORK_TEST)

isocial : $(PARSING)

clean:
    rm -f $(PARSING_OBJS) $(EXEC)
4

1 回答 1

3

错误消息是正确的:我看到 的目标map.o,但没有目标map,看起来像

 map: map.o
    something something something

有名为parsingmap_example_testnetwork_testIsocial_test;的程序的目标。也许你想建造其中之一?

如果您只是键入make,它将构建程序parsing,因为这是文件中的第一个目标。

于 2012-05-07T02:23:48.480 回答