0
我已經啓動了一個SDL2項目,其中有一個源文件包含主函數,該函數依賴於我自己的頭文件和其他文件夾中的幾個對象文件。我的目錄結構如下Gnu Make:奇怪的「多目標模式」 - 錯誤
/SDL2 // Top-Level directory of all my SDL2 projects
-> /projectX // My current project
-> main.cpp
-> /obj_sdl2_ana // Directory of all self-made object files
-> ...object files
-> ...source files of object files
-> /include_sdl2_ana // Directory of all self-made header files
-> ..header files
編譯和鏈接的main.cpp對我的目標和頭文件我寫了下面的Makefile
TARGET = main
FILETYPE = cpp
OBJDIR = ../obj_sdl2_ana/ # Directory with self-made object files
INCDIR = ../include_sdl2_ana/ # Directory with self-made header files
IFLAGS = -I$(INCDIR)
LFLAGS = -lSDL2 -lSDL2_image # insert all necessary libraries into it
VPATH = $(OBJDIR):$(INCDIR)
ADD_RESOURCES = common_ana
ADD_INC := $(ADD_RESOURCES:%=$(INCDIR)%.hpp) # specify header files which are prerequisites
ADD_OBJ := $(ADD_RESOURCES:%=$(OBJDIR)%.o) # specify additional object files which are prerequisites
$(TARGET): $(TARGET).o $(ADD_OBJ)
g++ $(TARGET).o $(ADD_OBJ) -g3 -o $(TARGET) $(LFLAGS)
$(TARGET).o: $(TARGET).$(FILETYPE) $(ADD_INC)
g++ -c $(TARGET).$(FILETYPE) $(IFLAGS) -g3 -o $(TARGET).o $(LFLAGS)
$(ADD_OBJ): $(OBJDIR)%.o: $(OBJDIR)%.cpp $(INCDIR)%.hpp
g++ -c $< $(IFLAGS) -g3 -o [email protected] $(LFLAGS)
我都只有一個目標文件測試了這個(common_ana的.o)和相應的頭文件(common_ana.hpp),但問題是,提出的是在規則折騰了「多目標模式」的錯誤
$(ADD_OBJ): $(OBJDIR)%.o: $(OBJDIR)%.cpp $(INCDIR)%.hpp
g++ -c $< $(IFLAGS) -g3 -o [email protected] $(LFLAGS)
我絕對沒有線索,爲什麼會出現此錯誤。 Gnu make手冊提示,如果濫用靜態模式規則,則會出現此錯誤。但是我已經對我的Makefile進行了三重檢查,並且找不到任何證明gnu make錯誤信息的東西。雖然我意識到一種解決方法,但是如果有人能夠給我一個提示,我對於上述靜態模式規則做了什麼錯誤感到非常高興。