0
그것은 그러나
make: *** No rule to make target 'obj/Lin32/Exports.o', needed by 'bin/OpenGL32.so'. Stop.
말을 계속 .. 내 자신의 OpenGL 래퍼를 구축하기 (수동) 메이크 파일을 만든 규칙은 다음과 같습니다 $(ObjLinSRC)/$.o: $(SrcDIR)/%.cpp
곳 ObjLinSRC = obj/Lin32
및 SrcDIR = 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] $<
OMG .. 모든 것의을 -_-. 이제 작동합니다 : D Thank you! 나는 그것이 가능한 한 빨리 받아 들일 것이다. – Brandon