1

我编写了一个显示简单四边形的小型 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

但现在我想与我自己的库资源文件建立联系。这是我的项目目录的内容:

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

error : "APIENTRY" redefined

有人可以帮助我吗?

4

1 回答 1

0

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

通常glut.h是一个gl文件夹,对于您的项目来说是全局的或本地的。

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

于 2013-06-27T17:05:46.717 回答