在
的makefile中 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)
创建确实取决于.o创建中使用的$(SOURCES)
。为什么这一行会产生循环依赖? (改为将行改为$(TARGET):
,工作正常)
答案 0 :(得分:2)
问题出在第7行 - 您的源文件是.cpp
个文件,但您使用的是替换.c -> .o
。尝试将其更改为.cpp
。