Linux上的OpenGL库链接

时间:2013-06-27 12:39:05

标签: opengl makefile linkage

我编写了一个显示简单四边形的小型OpenGL程序。为了完成工作,我在我的Makefile中链接了-lglut。直到这里一切都还可以。

这是我的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声明

#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(#include“./Outbuilding/GL/include/gl/glut.h”)但我有以下错误:

error : "APIENTRY" redefined

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您的 glut.h 文件位于错误的文件夹中。

通常 glut.h gl 文件夹,可以是项目的全局或本地文件夹。

只需在 Outbuilding / GL / include / 中创建一个名为* gl8的文件夹,然后将 glut.h 移入其中。