SDL2プロジェクトを開始しました。私は、自分のヘッダーと他のフォルダにあるオブジェクトファイルのいくつかに依存するmain関数を含むソースファイルを持っています。Gnu Make:Strange "Multiple targets pattern" - エラー
/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
は、私は1つのオブジェクトのみのファイルでこれをテストしている私は、次の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)
を書かれている私のオブジェクトとヘッダーファイルに対してコンパイルとリンクmain.cppにするには、次のように私のディレクトリ構造がある(common_ana .o)は、対応するヘッダファイル(common_ana.hpp)が、問題はない私は絶対持っているmakeが規則
$(ADD_OBJ): $(OBJDIR)%.o: $(OBJDIR)%.cpp $(INCDIR)%.hpp
g++ -c $< $(IFLAGS) -g3 -o [email protected] $(LFLAGS)
で「複数のターゲットパターン」エラーを投げされ手掛かり、なぜこのエラーが表示されます。 Gnu makeマニュアルは、静的パターンルールが誤って使用されているときにこのエラーが発生することを示唆しています。しかし、私は自分のMakefileを3回チェックして、gnu makeのエラーメッセージを正当化するものを見つけることができませんでした。私は回避策を認識していますが、誰かが私にヒントを与えることができたら、私は本当にうれしいでしょう。私は上記の静的パターンルールに関して間違っています。