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 行目では、作成は.o 作成で使用されるもの$(OBJECTS)に依存します。$(SOURCES)この行が循環依存関係を作成するのはなぜですか? (行を$(TARGET):代わりに変更すると、正常に動作します)

4

1 に答える 1

2

問題は 7 行目です。ソース ファイルは.cppfiles ですが、substitution を使用しています.c -> .o。に変更してみてください.cpp

于 2012-08-08T02:10:18.670 に答える