Mac - OpenGL - 没找到glew

时间:2016-12-12 19:08:06

标签: opengl makefile glfw glew glm-math

基本上我试图找出为什么编译器抱怨缺少glew-library:

fatal error: 'GL/glew.h' file not found

我的设置:

brew list:

glew
glfw
glm

在/ usr / local / include目录中:

GL -> ../Cellar/glew/2.0.0/include/GL
GLFW -> ../Cellar/glfw/3.2.1/include/GLFW
glm -> ../Cellar/glm/0.9.8.3/include/glm

和Makefile:

# OBJS specifies which files to compile as part of the project
OBJS = *.cpp

# CC specifies which compiler we're using
CC = g++

# INCLUDE_PATHS specifies the additional include paths we'll need
INCLUDE_PATHS = -I/usr/local/include -I/opt/X11/include

# LIBRARY_PATHS specifies the additional library paths we'll need
LIBRARY_PATHS = -L/usr/local/lib -I/opt/X11/lib

# COMPILER_FLAGS specifies the additional compilation options we're using
# -w suppresses all warnings
COMPILER_FLAGS = -w

# LINKER_FLAGS specifies the libraries we're linking against
# Cocoa, IOKit, and CoreVideo are needed for static GLFW3.
LINKER_FLAGS = -framework OpenGL -lglfw3 -lglew

# OBJ_NAME specifies the name of our exectuable
OBJ_NAME = main

#This is the target that compiles our executable
all : $(OBJS)
    $(CC) $(OBJS) $(INCLUDE_PATHS) $(LIBRARY_PATHS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME)

当我在同一目录中有一个名为File.cpp的文件时,我运行:

make File

我得到:

fatal error: 'GL/glew.h' file not found

有人可以解释为什么上述设置错误/损坏了吗?

ps:os,el capitan

2 个答案:

答案 0 :(得分:1)

您应该确保您的目录结构正确。

例如,您描述了包含的目录结构,如下所示:

GL -> ../Cellar/glew/2.0.0/include/GL
GLFW -> ../Cellar/glfw/3.2.1/include/GLFW
glm -> ../Cellar/glm/0.9.8.3/include/glm

这种类似于从您下载的存档中解压缩时存在的库的默认目录结构,因此我将引用我的目录结构作为参考:

Directory Structure

现在看看你的错误:

fatal error: 'GL/glew.h' file not found

除非1.13.0和2.0.0之间的目录结构发生重大变化,否则很明显您收到此错误,因为“Include”目录的级别低于#include语句正试图访问。

如果您将#include<GL/glew.h>替换为#include<glew.h>,则应解决您的问题。

或者,不是使用3个包含语句,而是重新组织库并将所有标题放在一个位置,然后通过对主要Include目录的单个引用来引用它们。

答案 1 :(得分:0)

GLEW是一个非标准库,它实现了整个OpenGL扩展和现代配置文件入口点加载恶作剧。它可以作为项目的依赖项添加,但它不是标准&#34; OpenGL开发环境的一部分&#34;。

那你怎么得到它?好吧,我为你带来了一些好消息:你正在为MacOS-X开发,而在那个操作系统中,没有必要在运行时加载OpenGL入口点。 MacOS-X OpenGL框架提供了您所需的一切。

所以你应该做的是从你的项目构建中有条件地删除GLEW。

附注:您在构建配置中引用了X11。 MacOS-X提供了X11实现,但这不会为您提供现代OpenGL或任何类型的平滑API集成。你绝对不应该使用它。