2013-06-27 89 views
1

我編寫了一個小型的OpenGL程序,顯示一個簡單的四邊形。爲了完成這項工作,我在我的Makefile中鏈接了-lglut。直到這裏一切都好。Linux上的OpenGL庫鏈接

這裏是我的Makefile文件內容:

NAME  = Quad 

CXX  = g++ 

SRCS  = main.cpp 

OBJS  = $(SRCS:.cpp=.o) 

CXXFLAGS += -W -Werror -Wextra 

LIBX  += -lglut 

RM  = rm -f 

all  : $(NAME) 

$(NAME)  : $(OBJS) 
      $(CXX) -o $(NAME) $(OBJS) $(LIBX) 

clean  : 
      find . \(-name "*.o" -o -name "*~" -o -name "#*#" \) -exec $(RM) {} \; 

fclean  : clean 
      $(RM) $(NAME) 

re  : fclean all 

.PHONY  : all  \ 
      clean  \ 
      fclean  \ 
      re 

但現在我想打一個鏈接,我自己librairies資源文件。 這裏是我的項目目錄的內容:

main.cpp 
Makefile 
Outbuilding/GL/include/glut.h 
Outbuilding/GL/lib/glut32.lib 

我包括申報的main.cpp

#include "gl/glut.h" 

我嘗試編輯下面的Makefile,但它不工作(文件GL/glut.h沒有找到):

NAME  = Quad 

CXX  = g++ 

SRCS  = main.cpp 

OBJS  = $(SRCS:.cpp=.o) 

CXXFLAGS += -W -Werror -Wextra 

INCLUDE  += -I./Outbuilding/GL/include -L./Outbuilding/GL/lib 
LIBX  += -lglut 

RM  = rm -f 

all  : $(NAME) 

$(NAME)  : $(OBJS) 
      $(CXX) -o $(NAME) $(OBJS) $(INCLUDE) $(LIBX) 

clean  : 
      find . \(-name "*.o" -o -name "*~" -o -name "#*#" \) -exec $(RM) {} \; 

fclean  : clean 
      $(RM) $(NAME) 

re  : fclean all 

.PHONY  : all  \ 
      clean  \ 
      fclean  \ 
      re 

我也在我的源文件,試圖直接鏈接glut.h(#包括「./Outbuilding/GL/include/gl/glut.h」),但我有以下錯誤:

error : "APIENTRY" redefined 

有人能幫助我嗎?

+0

'#include「gl/glut.h」' - 這是一個錯字嗎? 如果你有'-I./Outbuilding/GL/include',你應該使用'#include「glut.h」' – ShPavel

回答

0

您的glut.h文件位於錯誤的文件夾中。

通常glut.hGL文件夾中,無論是全球還是局部到您的項目。

只需創建一個文件夾,名爲* GL8內附屬建築/ GL /包括/和移動glut.h進去。