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

エラー メッセージは正しいです: I see a target for map.o, but there's no target for map, これは次のようになります

 map: map.o
    something something something

、、、およびという名前parsingのプログラムのターゲットがあります。おそらくあなたはそれらの1つを構築したいですか?map_example_testnetwork_testIsocial_test

とだけ入力すると、それがファイルの最初のターゲットであるmakeため、プログラムがビルドされます。parsing

于 2012-05-07T02:23:48.480 に答える