2012-08-08 26 views
1

生成文件,循環依賴下降,澄清所需

1 SHELL=/bin/zsh 
    2 CC=g++ 
    3 
    4 TARGET = target/jj 
    5 SOURCES = $(shell echo src/*.cpp) 
    6 HEADERS = $(shell echo include/*.h) 
    7 OBJECTS = $(SOURCES:.c=.o) 
    8 FLAGS = -Wall -c 
    9 
10 all: $(TARGET) 
11 
12 # Create final executable from .o 
13 $(TARGET): $(OBJECTS) 
14 $(CC) $(OBJECTS) 
15 
16 # Create .o from .cpp 
17 $(OBJECTS): $(SOURCES)    # <------------------------------ 
18 $(CC) $(FLAGS) -c $(SOURCES) 
19 
20 # Remove objects 
21 clean: 
22 rm -rf $(OBJECTS) 

所以..生成文件在第17行,$(OBJECTS)創建不依賴於$(SOURCES)它們在創建的.o使用。爲什麼這條線創建一個循環依賴? (改爲$(TARGET):而不是,工作正常)

回答

2

問題是在第7行 - 您的源文件是.cpp文件,但您使用替代.c -> .o。嘗試將其更改爲.cpp