2017-01-15 7 views
0

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のエラーメッセージを正当化するものを見つけることができませんでした。私は回避策を認識していますが、誰かが私にヒントを与えることができたら、私は本当にうれしいでしょう。私は上記の静的パターンルールに関して間違っています。

答えて

2

メイクは、あなたのコメントの前に余分なスペースを含めている、以下の

# Directory with self-made object files 
OBJDIR = ../obj_sdl2_ana/ 
# Directory with self-made header files 
INCDIR = ../include_sdl2_ana/ 
IFLAGS = -I$(INCDIR) 
# insert all necessary libraries into it 
LFLAGS = -lSDL2 -lSDL2_image 

同じことが、それは、インラインコメントを避けるのがベストです、他の行に適用される何かをしてみてください。