2014-04-15 3 views
0

내가아니요 규칙은 있지만 규칙은 있습니까?

그것은 그러나

make: *** No rule to make target 'obj/Lin32/Exports.o', needed by 'bin/OpenGL32.so'. Stop. 말을 계속 .. 내 자신의 OpenGL 래퍼를 구축하기 (수동) 메이크 파일을 만든 규칙은 다음과 같습니다 $(ObjLinSRC)/$.o: $(SrcDIR)/%.cppObjLinSRC = obj/Lin32SrcDIR = src ..

무엇을 할 수 내 파일 만들기에 문제가 있니? make windows을 실행하면 완벽하게 작동하지만 make linux이 실패합니다. 이유를 알 수 없습니다. 어떤 아이디어?

$(ObjLinSRC)/$.o: $(SrcDIR)/%.cpp 

$$.o의 퍼센트한다 :

WinGPP = g++ 
LinGPP = g++ 

BinDIR = bin 
ObjDIR = obj 
SrcDIR = src 
BitFLG = -m32 
WinOUT = OpenGL$(subst -m,,$(BitFLG)).dll 
LinOUT = OpenGL$(subst -m,,$(BitFLG)).so 
WinDIR = $(BinDIR) 
LinDIR = $(BinDIR) 
ObjWinSRC = $(ObjDIR)/Win$(subst -m,,$(BitFLG)) 
ObjLinSRC = $(ObjDIR)/Lin$(subst -m,,$(BitFLG)) 

#-------------------------------------------------------------------------------------- 

WinDEP = -static -static-libgcc -static-libstdc++ -shared -s -Wl,--enable-stdcall-fixup -o 
LinDEP = -static-libgcc -static-libstdc++ -shared -s -o 

WinARGS = -std=c++11 -Wall -pedantic -O3 -DOPENGL32_EXPORTS -s -c $(BitFLG) 
LinARGS = -std=c++11 -Wall -pedantic -O3 -DOPENGL32_EXPORTS -s -c $(BitFLG) 


#-------------------------------------------------------------------------------------- 

CppFiles = \ 
    $(wildcard $(SrcDIR)/*.cpp) 

ObjLinFiles = \ 
    $(patsubst $(SrcDIR)/%.cpp,$(ObjLinSRC)/%.o,$(CppFiles)) 

ObjWinFiles = \ 
    $(patsubst $(SrcDIR)/%.cpp,$(ObjWinSRC)/%.o,$(CppFiles)) 



#-------------------------------------------------------------------------------------- 

all: 
    @echo 
    @echo " Instructions For Making GLX:" 
    @echo 
    @echo " For Windows:  make windows" 
    @echo " For Linux:  make linux" 
    @echo " For Both:  make both" 
    @echo " To Clean Files: make clean" 
    @echo " Specific Builds: BitFLG=-m32 | BitFLG=-m64" 

both: linux windows 

linux: $(LinDIR)/$(LinOUT) 
    @echo 
    @echo "Finished Building OpenGL32 -- Colour-Only." 

windows: $(WinDIR)/$(WinOUT) 
    @echo 
    @echo "Finished Building OpenGL32 -- Colour-Only." 

clean: 
    @echo " Cleaning Build Files." 
    @rm -rf $(BinDIR) $(ObjDIR) 

#-------------------------------------------------------------------------------------- 



$(LinDIR)/$(LinOUT): $(ObjLinFiles) 
    @echo 
    @echo "Linking Linux Object Files.." 
    @mkdir -p $(LinDIR) 
    @$(LinGPP) -fPIC -shared $(LinDEP) $(LinDIR)/$(LinOUT) $(ObjLinFiles) $(BitFLG) 

$(ObjLinSRC)/$.o: $(SrcDIR)/%.cpp 
    @echo " Compiling Linux: "$< 
    @mkdir -p $(ObjLinSRC) 
    @$(LinGPP) $(LinARGS) -o [email protected] $< 





$(WinDIR)/$(WinOUT): $(ObjWinFiles) 
    @echo 
    @echo "Linking Object Files.." 
    @mkdir -p $(WinDIR) 
    @$(WinGPP) -Wl,--kill-at -d --input-def $(SrcDIR)/OpenGL32.def $(WinDEP) $(WinDIR)/$(WinOUT) $(ObjWinFiles) $(BitFLG) -lgdi32 -lglu32 -lopengl32 

$(ObjWinSRC)/%.o: $(SrcDIR)/%.cpp 
    @echo " Compiling: " $< 
    @mkdir -p $(ObjWinSRC) 
    @$(WinGPP) $(WinARGS) -o [email protected] $< 

답변

1

당신은 오타가

$(ObjLinSRC)/%.o: $(SrcDIR)/%.cpp 
+0

OMG .. 모든 것의을 -_-. 이제 작동합니다 : D Thank you! 나는 그것이 가능한 한 빨리 받아 들일 것이다. – Brandon